Saya akan sentuh berkenaan Graphic buffers
dalam siaran kali ini.
Apa kegunaan penampan grafik ini? Ianya sangat berguna dalam penyediaan sebuah dokumentasi kerana kod-kodnya boleh digunakan untuk dua benda; paparan kod dan juga hasil grafiknya.
Coretan kod (code snippet) ini diletakkan di dalam penampan
(buffer), dan ia boleh diulangguna kemudiannya.
Terdapat tiga kod arahan yang boleh digunakan setelah menyediakan coretan kod dalam penampan
ini iaitu \typebuffer
, \getbuffer
dan juga \processMPbuffer
.
Saya sediakan contoh kod di bawah:-
1\startenvironment metafun-environment-layout
2\useMPlibrary[clp,txt]
3\definepapersize[mine][width=21cm,height=29.7cm]
4\setuppapersize[mine][A4,portrait]
5\setuplayout[topspace=.5in,backspace=.75in,
6 header=18pt,headerdistance=4em,
7 footer=16pt,footerdistance=0em,
8 height=middle,width=middle]
9\startmode[print]
10 \setuppapersize[mine][mine]
11\stopmode
12\setupbodyfont[dejavu,8pt]
13\setupheadertexts[{\tfc \CONTEXT\ LMTX\hfill \bf Bintang Pecah 14}]
14\setupbackgrounds[header][text][bottomframe=on]
15\setupbackgrounds[footer][text][topframe=on]
16\setupinteraction[state=start]
17\useURL[lesen][https://creativecommons.org/licenses/by-nc/4.0/][][Atribusi-BukanKomersial 4.0 Antarabangsa Creative Commons.]
18\setupfootertexts[\leftaligned{\tfa Lesen: \from[lesen]}]
19%\setuptyping[margin=standard,blank=halfline]
20\setuppagenumbering[location={right},style=bold]
21\definefontfeature[mathextra][italicwidths=yes]
22\definecolor[kuning][c=0,m=.09,y=1,k=0]
23
24\defineoverlay[WatermarkOverlay]
25 [{\framed[frame=off,foregroundcolor=lightcyan]
26 {\scale[sx=3.5,sy=3.5]
27 {\rotate[rotation=10]{Oleh: Pn. WRaihan.WS}}}}]
28\setupbackgrounds[page][background=WatermarkOverlay]
29
30\starttext
31\section{\tfd KOORDINAT ANGGARAN:-}
32
33\startbuffer[a]
34\startMPcode
35 pair A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T,
36 U, V, W, X, Y, Z, Za, Zb;
37
38 A:=( .75 cm, 0 cm); H:=(- 0cm, 1.875cm);
39 O:=(-.75 cm, -0 cm); V:=( 0cm,-1.875cm);
40
41 B:=( 1.83cm, .42cm); C:=( .68cm, .33cm); D:=( 1.47cm, 1.17cm);
42 N:=(-1.83cm, .42cm); M:=(-.68cm, .33cm); L:=(-1.47cm, 1.17cm);
43 P:=(-1.83cm,-.42cm); Q:=(-.68cm,- .33cm); R:=(-1.47cm,-1.17cm);
44 Zb:=( 1.83cm,-.42cm); Za:=( .68cm,- .33cm); Z:=( 1.47cm,-1.17cm);
45
46 E:=( .47cm, .59cm); F:=( .81cm, 1.69cm); G:=( .17cm, .73cm);
47 K:=(- .47cm, .59cm); J:=(-.81cm, 1.69cm); I:=( -.17cm, .73cm);
48 S:=(- .47cm,-.59cm); T:=(-.81cm,-1.69cm); U:=( -.17cm,- .73cm);
49 Y:=( .47cm,-.59cm); X:=( .81cm,-1.69cm); W:=( .17cm,- .73cm);
50
51 fill A--B--C--D--E--F--G--H--I--J--K--L--M--N--O--P--Q--R--S--T--U
52 --V--W--X--Y--Z--Za--Zb--cycle withcolor \MPcolor{kuning};
53
54 draw A--B--C--D--E--F--G--H--I--J--K--L--M--N--O--P--Q--R--S--T--U
55 --V--W--X--Y--Z--Za--Zb--cycle withpen pencircle scaled 1pt;
56
57 drawpoints A--B--C--D--E--F--G--H--I--J--K--L--M--N--O--P--Q--R--S
58 --T--U--V--W--X--Y--Z--Za--Zb--cycle withpen pencircle scaled 4bp;
59
60 label.rt ( "A",2.57A); label.rt ("B", B); label.rt ( "C",2.5 C);
61 label.rt ( "D", D); label.rt ("E",2.5 E); label.top( "F",1.03F);
62 label.top( "G",2.55G); label.top("H",1.02H); label.top( "I",2.57I);
63 label.top( "J",1.04J); label.lft("K",2.57K); label.lft( "L",1.04L);
64 label.lft( "M",2.5 M); label.lft("N", N); label.lft( "O",2.47O);
65 label.lft( "P", P); label.lft("Q",2.5 Q); label.lft( "R", R);
66 label.lft( "S",2.55S); label.bot("T",1.03T); label.bot( "U",2.55U);
67 label.bot( "V",1.02V); label.bot("W",2.55W); label.bot( "X",1.03X);
68 label.rt ( "Y",2.55Y); label.rt ("Z", Z); label.rt ("Za",2.5Za);
69 label.rt ("Zb", Zb); z0=(0, 0); dotlabel.top("(0, 0)",z0);
70\stopMPcode
71\stopbuffer
72
73\blank[2*big]
74\tfb \typebuffer[a]
75\startlinecorrection[blank]
76\placefigure{}{\getbuffer[a]}
77\stoplinecorrection
78
79\startbuffer[b]
80 a = .75cm; b = 1.875cm; z01 = -z15 = (a, 0); -z08 = z22 = (0, -b);
81 c = 1.83cm; d = .42 cm; z02 = -z16 = (c, d); -z14 = z28 = (c, -d);
82 e = .68cm; f = .33 cm; z03 = -z17 = (e, f); -z13 = z27 = (e, -f);
83 g = 1.47cm; h = 1.17 cm; z04 = -z18 = (g, h); -z12 = z26 = (g, -h);
84 i = .47cm; j = .59 cm; z05 = -z19 = (i, j); -z11 = z25 = (i, -j);
85 k = .81cm; l = 1.69 cm; z06 = -z20 = (k, l); -z10 = z24 = (k, -l);
86 m = .17cm; n = .73 cm; z07 = -z21 = (m, n); -z09 = z23 = (m, -n);
87
88 drawoptions(withpen pencircle scaled 1.5pt);
89 drawfill z01..z02..z03..z04..z05..z06..z07..z08..z09..z10..z11..z12
90 ..z13..z14..z15..z16..z17..z18..z19..z20..z21..z22..z23..z24..z25
91 ..z26..z27..z28..cycle withcolor transparent(1, .75, blue);
92\stopbuffer
93
94\startbuffer[c]
95 def star (expr size, n, pos) =
96 for a = 1 step 360/n until round(360*(1-0/n)) :
97 draw (origin--(size/2, 0) rotated 90)
98 rotatedaround (origin, a) shifted pos
99 withpen pencircle scaled .33cm withcolor \MPcolor{kuning};
100 endfor;
101 enddef;
102
103 star(3.5cm, 14, origin);
104\stopbuffer
105
106\page
107\section{\tfd VERSI LAIN:-}
108\blank[2*big]
109\tfb \typebuffer[b]
110\startlinecorrection[blank]
111\placefigure{}{\processMPbuffer[b]}
112\stoplinecorrection
113
114\blank[3*big]
115\section{\tfd MELAKAR BINTANG:-}
116\blank[2*big]
117\tfb \typebuffer[c]
118\startlinecorrection[blank]
119\placefigure{}{\processMPbuffer[c]}
120\stoplinecorrection
121
122\stoptext
123\stopenvironment
Perhatikan baris-baris yang telah diserlahkan. Terdapat tiga penampan yang disediakan; penampan a (\startbuffer[a]
), penampan b (\startbuffer[b]
) dan penampan c (\startbuffer[c]
).
\typebuffer
. Fungsi \typebuffer
ini sama seperti fungsi arahan \starttyping
.\getbuffer
digunakan untuk menghasilkan grafik daripada kod-kod diberi. Ambil perhatian kepada arahan MetaPost
seperti \startMPcode
& \stopMPcode
yang diletakkan di dalam penampan. Ianya memang diperlukan sekiranya menggunakan arahan \getbuffer
ini.\processMPbuffer
pula, arahan seperti \startMPcode
atau \startuseMPgraphic
mesti ditinggalkan. Terus maju kepada arahan makro
dan pembolehubah MetaPost
untuk penghasilan grafik.penampan a
:
penampan b
dan penampan c
:
Berikut ialah data untuk bintang pecah mengikut Persamaan Parametrik bagi Bulatan
dan sudut 360° dibahagikan kepada 28 pecahan.
Untuk kod Jalur Gemilang, sila rujuk siaran saya selepas ini. Pautannya ada disediakan di bawah.
FACEBOOK
:-PENAFIAN: Imej bentuk lengkungan (imej kelima) melalui Persamaan Parametrik
yang begitu cantik berwarna merah jambu di bawah ialah imej yang diambil dari laman web Life Through a Mathematician’s Eyes. Sejujurnya, saya amat mengharapkan agar dapat melukis fungsi Persamaan Parametrik
sebegitu berdasarkan contoh yang diberikan oleh Pragma ADE
(imej keempat), namun buat masa ini, saya masih belum berjaya mencapainya.
Posted by Wan Raihan on Friday, 24 September 2021