Thursday, June 15, 2017

Curhat: Kisah Hidup dalam Telegram dan Berkahnya

Mukadimah

Ikut nimbrung sebagai "pendatang" di era digital, kita menghuni dan aktif bermasyarakat di dalam media sosial. Bermula dari Facebook, kemudian ke Twitter, Instagram, Path, Line, WhatsApp, hingga saya "mendekam" di dalam Telegram.
Di sana, di dalam Telegram, saya mengenali mereka secara "batiniah" tentang kehebatan dan kepopulerannya. Banyak grup yang dikelola untuk berbagi dan belajar, menebar kemanfaatan dari media sosial. 
Suatu ketika, saya "diseret" oleh seseorang ke dalamnya. Ternyata, kemudian, saya mengetahui bahwa beliau bukan orang sembarangan melainkan seorang tokoh yang sudah malang melintang ke mana-mana. Beliau membawa saya ke dalam grup Matematika Nusantara (MN), salah satu grup terbesar di dalam Telegram dengan jumlah anggota 2.959 pada saat tulisan ini dibuat.
Saya pun terkesima dan terbius oleh grup MN itu. Banyak ahli di dalamnya untuk saya belajar tentang kecakapan matematis dan mengasah kemampuan saya dalam mempelajari $\LaTeX$, bahkan menyediakan grup untuk menyalurkan kesukaan saya akan seni dan sastra a la kadarnya. Para ahli dari MN kemudian membentuk grup baru, sebagai sayap, untuk lebih khusus berdiskusi mengenai suatu bidang tertentu. Grup Indonesia Digital Teacher berdiskusi dan berbagi tentang pemberdayaan sumber daya digital. Grup BD Tricky MN berdiskusi dan berbagi tentang penyelesaian soal Matematika dengan cara yang efisien. Grup FGD OSN MN berdiskusi dan berbagi tentang penyelesaian soal Olimpiade Matematika. Kemudian masih banyak lagi grup-grup dengan kekhususan dan keistimewaannya masing-masing.

Keberkahannya

Di dalam Telegram kita dapat belajar secara gratis dari para ahli dan memperoleh informasi yang masih hangat secara cepat. Kesempatan itu dapat kita peroleh dari genggaman tangan dan ujung jari pada setiap saat dari mana pun kita mengaksesnya. 
Lalu lintas informasi dan diskusi di dalam grup-grup Telegram itu, seperti lirik dari Sandhy Sondoro, tak pernah padam. Selain itu, secara berkala grup-grup tertentu juga memberikan kesempatan khusus dengan mengadakan kegiatan belajar dalam jaringan untuk suatu hal tertentu, misalnya belajar tentang pemanfaatan software, belajar tentang pemanfaatan media sosial, dll.
Salah satu contoh berkah itu, saya peroleh kemarin. Seseorang menanyakan bagaimana cara mengubah bilangan dalam basis $10$ menjadi bilangan dalam basis $3$. Misalnya bilangan $2012$ diubah ke basis $3$. Seorang ahli menanggapinya, kemudian saya pun nimbrung dengan menampilkan secara visual dengan berhias bingkai.
Itu berkat makro longdiv dan paket TikZ.
Kemudian seorang ahli lain, Egreg, di forum menunjukki saya cara lain untuk menampilkan hal itu melalui suatu perhitungan, seperti tampak berikut ini.
Itu berkat (pada mukadimah) paket xparse dan makronya berikut ini.
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\bagibasis}{O{c}mm}
 {% #1 is the alignment for tabular
  % #2 is the number to be manipulated
  % #3 is the base
  \induktio_showbase:nnn { #1 } { #2 } { #3 }
 }

\tl_new:N \l__induktio_table_contents_tl
\int_new:N \l__induktio_quotient_int
\int_new:N \l__induktio_remainder_int
\bool_new:N \l__induktio_first_row_bool

\cs_new_protected:Npn \__induktio_add_row:nn #1 #2
 {% #1 is the base, #2 is the quotient
  \tl_put_right:Nx \l__induktio_table_contents_tl
   {
    \int_compare:nF { #2 == 0 } { #1~ }
    \__induktio_quotient:n { #2 }
    &
    \bool_if:NF \l__induktio_first_row_bool
     {
      sisa~\int_to_arabic:n { \l__induktio_remainder_int }
     }
    \exp_not:N \\
   }
 }

\cs_new_protected:Npn \induktio_showbase:nnn #1 #2 #3
 {
  \tl_clear:N \l__induktio_table_contents_tl
  \bool_set_true:N \l__induktio_first_row_bool
  \int_set:Nn \l__induktio_quotient_int { #2 }
  \__induktio_recursion:n { #3 }
  \begin{tabular}[#1]{@{}rl@{}}
  \tl_use:N \l__induktio_table_contents_tl
  \end{tabular}
 }

\cs_new_protected:Npn \__induktio_recursion:n #1
 {% #1 is the base
  \__induktio_add_row:nn { #1 } { \int_to_arabic:n { \l__induktio_quotient_int } }
  \bool_set_false:N \l__induktio_first_row_bool
  \int_set:Nn \l__induktio_remainder_int
   {
    \int_mod:nn { \l__induktio_quotient_int } { #1 }
   }
  \int_set:Nn \l__induktio_quotient_int
   {
    \int_div_truncate:nn { \l__induktio_quotient_int } { #1 }
   }
  \int_compare:nTF { \l__induktio_quotient_int == 0 }
   {
    \__induktio_add_row:nn { #1 } { \int_to_arabic:n { \l__induktio_quotient_int } }
   }
   {
    \__induktio_recursion:n { #1 }
   }
 }

\cs_new_protected:Npn \__induktio_quotient:n #1
 {
  \int_compare:nTF { #1 == 0 }
   {
    #1
   }
   {
    \begin{tabular}{@{}r@{}}\vline\ #1\\\hline\end{tabular}
   }
 }
\ExplSyntaxOff

\newcommand{\semibox}
Kemudian untuk mencetak dan mengetahui pengubahan bilangan (misalnya) $2012$ dalam basis $3$, pada naskah kita nyatakan
\bagibasis[t]{2012}{3}
Hasilnya akan tampak seperti pada contoh paling kanan dalam gambar di atas.

Penutup

Ada hal khusus dari kemanfaatan Telegram, yaitu Bot. Telegram memuat dan menyediakan fasilitas untuk membuat Bot, sejenis "aplikasi" untuk suatu hal/tujuan tertentu. Kita dapat menggunakan Bot yang sudah dibuat oleh orang lain atau bahkan dapat membuat Bot sendiri (bila memungkinkan). Dengan Bot-bot itu kita dapat menggunakan kamus (KBBI), mengetahui jadwal salat, mengetahui jarak antar kota, belajar Quran/Hadits, dll, termasuk pemanfaat secara teknis di dalam Telegram itu sendiri.
Demikian semoga bermanfaat.

$\square$ Adjie Gumarang Pujakelana 2017

Monday, June 12, 2017

Contour: Bersolek dalam Teks

Mukadimah

Untuk suatu maksud atau keperluan tertentu, kita ingin agar teks yang kita tampilkan tampak menarik dan memikat. Perhatikan gambar di samping ini. Salah satu pilihan untuk hal itu adalah dengan menggunakan paket contour.
Oleh paket tersebut, kita dapat mengatur teks yang kita tulis sedemikian sehingga teks tersebut memiliki "garis tepi" untuk setiap hurufnya dan dapat ditebalkan dalam suatu ukuran tertentu. Selain itu kita pun dapat mengatur pewarnaan pada bagian "isi" dari huruf-huruf itu.
Dalam hal pewarnaan, seperti untuk contoh pada gambar di samping ini, kita gunakan paket xcolor dengan memuat ketiga opsinya: dvipsnames, svgnames, dan x11names. Tentu, Anda pun dapat menggunakan warna yang Anda tetapkan sendiri, seperti telah dicontohkan di sini.

Teknis Penulisan

Lebih dulu, pada mukadimah, tentu harus kita cantumkan
\usepackage[outline]{contour}
Opsi outline memberikan hasil yang baik untuk keperluan penulisan teks semacam ini.
Contoh pertama pada gambar di atas menunjukkan teknis dasar dalam penulisan teks dengan menggunakan paket contour. Kita nyatakan 
\contour{warna}{teks}
yang akan menghasilkan teks "berisi" warna hitam dengan warna "garis tepi" sesuai dengan warna yang kita cantumkan.

Pada contoh kedua kita isi teks oleh warna tertentu yang kita nyatakan dengan
\textcolor{warna isi huruf}{
\contour{warna tepi huruf}{teks}
                            }
Seperti contoh kedua, pada contoh ketiga kita menebalkan "garis tepi" pada tiap hurufnya. Untuk hal ini kita harus menetapkan
\contourlength{ukuran ketebalan}
Pada contoh ketiga digunakan ukuran ketebalan "garis tepi" huruf senilai $1.7\textrm{pt}$ dan hasilnya tampak pada gambar di atas.

Seperti contoh ketiga, pada contoh keempat kita tingkatkan ketebalan "garis tepi" hurufnya sedemikian sehingga membentuk "bayangan" yang cukup "lebar". Pada contoh ketiga digunakan ukuran ketebalan "garis tepi" huruf senilai $3.5\textrm{pt}$. 


Penutup

Mudah, bukan? Pada tingkat penggunaan selanjutnya kita dapat memadukannya dengan penggunaan paket TikZ yang (misalnya) didukung oleh kepustakaan decorations.text dan decorations.pathreplacing seperti berikut ini.

yang dihasilkan oleh
\begin{tikzpicture}[scale=2]
  \def\tekukteks#1{\textcolor{white}{\contour{PineGreen}{#1}}}
  \node (A) at (-3.9cm, -0.95cm) {};
  \node (B) at (4.1cm,-0.75cm) {};   
  \draw[
  decoration={
    text effects along path,
    text={\Huge karena \LaTeX\ ingin dimengerti.},
    text align=center,
    text effects/.cd,
    text along path, 
    scale text to path,
    characters={font=\Huge,
    character command=\tekukteks},
            },
  decorate,
        ]  
    (A) to [out=-2,in=160]  (B);
\end{tikzpicture}
Demikian semoga bermanfaat.

$\square$ Adjie Gumarang Pujakelana 2017

Friday, June 9, 2017

Paket Calculator: Hasil Kali Matriks

Mukadimah

Dalam penulisan suatu dokumen $\LaTeX$, untuk suatu keperluan tertentu kita memerlukan dukungan dari suatu paket. Salah satu pilihan yang dapat kita gunakan untuk menunjukkan perkalian dari dua matriks persegi berordo 3 adalah dengan menggunakan paket calculator. Salah satu contoh hasilnya tampak pada gambar di samping ini. Tampak bahwa kita dapat menunjukkan hasil kali dari dua matriks persegi itu dalam bentuk komutatif atau dalam bentuk "penggandaan" (bentuk kuadrat).
Sesuai dengan namanya, dalam penggunaannya, kita tidak lagi harus berhitung tentang hasil kali untuk setiap unsurnya karena paket calculator telah siap bekerja untuk hal itu. Meskipun demikian paket calculator hanya menunjukkan "hasil akhirnya" saja.
Tentu masih banyak lagi hal yang dapat dilakukan oleh paket calculator. Untuk memperoleh panduan selengkapnya tentang penggunaan dari paket ini, silakan unduh dokumentasinya di sini.
Dalam penggunaannya kita memerlukan dukungan dari paket amsmath karena dengan menggunakan lingkup perintah align maka penulisannya tampak baik. Selain itu kita juga dapat menggunakan paket untuk jenis huruf matematis, misalnya mathpazo, fourier, fouriernc, atau lainnya.

Teknis Penulisan Naskah

Kita akan menuliskan perkalian dari dua matriks persegi berordo 3. Dalam perintah MATRIXPRODUCT secara berurutan kita tetapkan unsur-unsur dari kedua matriks menurut baris dan antarunsur dipisahkan oleh tanda koma sedangkan antarbaris dipisahkan oleh tanda titik-koma. Kemudian dilanjutkan dengan menetapkan "hasil akhirnya" (solution) dengan cara serupa dalam bentuk perintah sola, solb, solc, ..., solh, soli.
Misalkan diketahui
\begin{align*}
A &=\begin{pmatrix}
3 & -2 & 7 \\ 6 & 5 & 4 \\ 0 & 4 & 9
\end{pmatrix}\qquad\mathrm{dan}\qquad
B = \begin{pmatrix}
6 & -2 & 4 \\ 0 & 1 & 3 \\ 7 & 7 & 5
\end{pmatrix}
\end{align*}
maka kita tetapkan 
\MATRIXPRODUCT(3,-2,7;6,5,4;0,4,9)%
(6,-2,4;0,1,3;7,7,5)%
(\sola,\solb,\solc;
\sold,\sole,\solf;
\solg,\solh,\soli)
kemudian untuk perkalian $AB$ kita nyatakan
\begin{align*}
AB &=\begin{pmatrix}
3 & -2 & 7 \\ 6 & 5 & 4 \\ 0 & 4 & 9
\end{pmatrix}
\begin{pmatrix}
6 & -2 & 4 \\ 0 & 1 & 3 \\ 7 & 7 & 5
\end{pmatrix}
=\begin{pmatrix}
\sola & \solb & \solc \\
\sold & \sole & \solf \\
\solg & \solh & \soli
\end{pmatrix}
\end{align*}
Hasilnya akan tampak seperti pada baris pertama dalam gambar di atas.
Sekarang, saya harap, Anda dapat menuliskan perkalian dari $BA$, $A^2$, dan $B^2$. Anda dapat dengan mudah melakukannya, bukan?

Penutup

Tentu tidak semua hal tentang teknis penulisan dokumen $\LaTeX$ kita ketahui. Di antara yang perlu kita lakukan adalah mempelajari dokumentasi dari paket-paket yang tersedia di CTAN atau mempelajari petunjuk-petunjuk dari forum pengguna $\LaTeX$, tex.stackexchange.com.
Demikian semoga bermanfaat.

$\square$ Adjie Gumarang Pujakelana 2017


Friday, June 2, 2017

Animasi Berbentuk GIF

Mukadimah


Akhir-akhir ini kita memperhatikan wabah demam serba digital yang merasuki wilayah kita, dalam pendidikan atau pembelajaran. Ada animasi papan tulis (whiteboard animation), buku yang dapat dibolak-balik (flipping book), Graphics Interchange Format (GIF), dll. Yang disebut terakhir dapat Anda lihat contohnya di atas. Menyambut dan memasuki era digital, tak pelak, produk semacam itu merupakan suatu pilihan demi "menyesuaikan diri" dan menyiasati unsur visual di dalam pembelajaran.

Bagaimanakah membuat animasi GIF semacam itu?
Mungkin tak sederhana, terutama bila ditimbang dari hal kecakapan dan waktu dalam pembuatannya. Sekurang-kurangnya ada 7 alat yang digunakan dalam pembuatan berkas GIF tersebut, yaitu $\LaTeX$, Adobe Reader, FSCapture, Vector Magic, Videoscribe Sparkol, Handbrake, Video to GIF.

Membuat Animasi Berbentuk GIF


Pertama, kita harus memiliki suatu gambar yang akan kita muat ke dalam video yang dibuat oleh videoscribe (kecuali bila kita hanya menuliskan teks maka tahap ini dapat dilewatkan, seperti pada contoh GIF di atas). Tak sembarang bentuk gambar karena, seperti telah diulas di sini, bentuk gambar yang tepat untuk videoscribe adalah Scalable Vector Graphics (SVG).

Sebaik-baik gambar tentu buatan kita sendiri, yang disesuaikan dengan materi yang akan kita sajikan. Dalam $\LaTeX$ kita dapat membuatnya oleh paket TikZ atau lainnya. Karena hasil dari $\LaTeX$ berbentuk PDF maka setelah dibuka (misalnya) oleh Adobe Reader, kemudian bagian yang akan dijadikan gambar kita potong (crop) dengan menggunakan alat pemotong, misalnya FastStone Capture.


Kedua, gambar yang telah kita miliki (berbentuk PNG, JPG, atau lainnya) kemudian kita ubah menjadi bentuk SVG dengan menggunakan (misalnya) Vector Magic.

Ketiga, kita bekerja dalam videoscribe, menuliskan teks dan memuat gambar sesuai dengan materi yang akan kita sajikan. Dalam Windows, video yang dihasilkan berbentuk wmv atau avi. Bila diinginkan kita dapat mengubahnya menjadi mp4 dengan menggunakan (misalnya) Handbrake.

Keempat, ini langkah terakhir. Kita ubah video tersebut menjadi bentuk GIF dengan menggunakan (misalnya) Video to GIF Converter. Pada tahap ini kita perlu memperhatikan pilihan ukuran berkas yang dihasilkan (Ouput Size), kecepatan gambar perdetik (Output Rate) dengan ketersediaan hingga 162, Output Option, Effects, kualitas warna (Quality), dan kecepatan animasi dalam hitungan detik (Speed).


Penutup

Pembuatan animasi GIF seperti telah diuraikan di atas memerlukan waktu luang yang mencukupi karena relatif lama, terutama dalam pembuatan videoscribe dan pengubahan bentuk dari video ke GIF. Dalam pembuatan videoscribe kita perlu mempertimbangkan pengaturan durasi agar video yang dihasilkan tidak terlalu "berat" dan tidak terlalu cepat.
Demikian semoga bermanfaat.

$\square$ Adjie Gumarang Pujakelana 2017

Dzikir Sesudah Shalat

Dzikir
 أَعُوۡذُ بِكَلِمَاتِ اللّٰهِ التَّامَّاتِ مِنۡ شَرِّ مَا خَلَقَ
 أَسۡتَغۡفِرُ اللّٰهَ الۡعَظِيۡمَ وَ أَتُوۡبُ إِلَيۡهِ
 الصَّلَاةُ وَ السَّلَامُ بِعَدَدِ مَا فِى عِلۡمِ اللّٰهِ عَلَيۡكَ وَ عَلَى أٰلِكَ يَا سَيِّدِيۡ يَا رَسُوۡلَ اللّٰهِ أَغِثۡنِيۡ سَرِيۡعًا بِعِزَّةِ اللّٰهِ
أَسۡتَغۡفِرُ اللّٰهَ الۡعَظِيۡمَ لِيۡ وَ لِوَالِدَيَّ وَ لِأَصۡحَابِ الۡحُقُوۡقِ الۡوَاجِبَاتِ عَلَيَّ وَ لِمَشَايِخِنَا وَ لِإِخۡوَانِنَا وَ لِجَمِيۡعِ الۡمُسۡلِمِيۡنَ وَ الۡمُسۡلِمَاتِ وَ الۡمُؤۡمِنِيۡنَ وَ الۡمُؤۡمِنَاتِ الۡأَحۡيَاءِ مِنۡهُمۡ وَ الۡأَمۡوَاتِ وَ أَتُوۡبُ إِلَيۡهِ
لَا إِلٰهَ اِلَّا اللّٰهُ وَحۡدَهُ لَا شَرِيۡكَ لَهُ لَهُ الۡمُلۡكُ وَ لَهُ الۡحَمۡدُ يُحۡيِيۡ وَ يُمِيۡتُ وَ هُوَ عَلَى كُلِّ شَيۡءٍ قَدِيۡرٌ
اَللّٰهُمَّ اَنۡتَ السَّلَامُ وَ مِنۡكَ السَّلَامُ وَ اِلَيۡكَ يَعُوۡدُ السَّلَامُ فَحَيِّنَا رَبَّنَا بِا السَّلَامِ وَ اَدۡخِلۡنَا الۡجَنَّةَ دَارَ السَّلَامِ تَبَارَكۡتَ رَبَّنَا وَ تَعَالَيۡتَ يَاذَا الۡجَلَالِ وَ الۡاِكۡرَامِ
أَسۡتَغۡفِرُ اللّٰهَ الۡعَظِيۡمَ الَّذِيۡ لَآاِلٰهَ اِلَّا هُوَ الۡحَيّ الۡقَيُّوۡمُ وَ اَتُوۡبُ اِلَيۡهِ

$\square$ Adjie Gumarang Pujakelana 2017

Saturday, May 13, 2017

Scope, Even Odd Rule, dan Clip: Kembang Tujuh "Rupa" Lingkaran

Mukadimah

Ini tulisan kedua tentang penggunaan lingkup perintah scope dengan opsi even odd rule dan perintah clip, setelah tulisan ini. Kali ini kita akan mengambil contoh yang lebih "rumit" seperti tampak pada Gambar 2 di samping ini.
Dengan menggunakan paket TikZ, kita akan menggambar tujuh lingkaran dan mewarnai bagian-bagian daerah di antaranya. Pewarnaan dibuat oleh paket xcolor dalam opsi x11names, sedangkan halaman diwarnai oleh warna paper dalam porsi 30%.
\definecolor{paper}{RGB}{239,227,157}



Lukisan


Perhatikan Gambar 1 dan Gambar 2 dalam dokumen terlampir. Kita harus membagi bidang Kartesius menjadi $6$ bagian dengan besar sudut pusat masing-masing senilai $60^\circ$. Oleh karena itu, dalam koordinat kutub, dapat kita tetapkan titik-titik $O$, $A$, $B$, $C$, $D$, $E$, dan $F$ sebagai berikut, dengan panjang jari-jari senilai $3\,\textrm{cm}$.
\coordinate (O) at (0:0);
\coordinate (A) at (0:3);
\coordinate (B) at (60:3);
\coordinate (C) at (120:3);
\coordinate (D) at (180:3);
\coordinate (E) at (240:3);
\coordinate (F) at (300:3);
Sekarang dengan berpusat pada ketujuh titik tersebut kita buat lingkaran dengan panjang jari-jari senilai $3\,\textrm{cm}$. Agar penggkodeannya lebih ringkas, kita gunakan perintah foreach sebagai berikut.
\foreach \t in {O,A,B,C,D,E,F}
\draw[thick,paper!30] (\t) circle (3);
Hasilnya tampak pada Gambar 3 dalam dokumen terlampir.

Berikutnya kita akan mewarnai daerah-daerah di antara ketujuh lingkaran itu. Pengkodean-pengkodean berikut ini secara berurutan diletakkan sebelum perintah foreach tadi.
Mula-mula akan kita warnai bagian daerah dari keenam lingkaran pada bagian terluar. Untuk hal itu kita akan bekerja di dalam lingkup perintah scope dengan opsi even odd rule.
\begin{scope}[even odd rule]
...
\end{scope}
Pada bagian ini kita cakup dulu daerah keenam lingkaran itu oleh
\path[clip] (A) circle (3) (B) circle (3) (C) circle (3) (D) circle (3) 
(E) circle (3) (F) circle (3);
Agar pewarnaan yang terjadi hanya untuk daerah dari keenam lingkaran pada bagian terluar maka kita nyatakan
\fill[PineGreen] (O) circle (3) (A) circle (3) (B) circle (3) 
(C) circle (3) (D) circle (3) (E) circle (3) (F) circle (3);
Dengan demikian, pengkodean selengkapnya untuk pewarnaan dalam lingkup perintah scope itu adalah sebagai berikut.
\begin{scope}[even odd rule]
%cakupan terhadap 6 lingkaran
\path[clip] (A) circle (3) (B) circle (3) (C) circle (3) (D) circle (3) 
(E) circle (3) (F) circle (3);
%mengisi warna pada bagian terluar dari daerah 6 lingkaran
\fill[PineGreen] (O) circle (3) (A) circle (3) (B) circle (3) 
(C) circle (3) (D) circle (3) (E) circle (3) (F) circle (3);
\end{scope}
Hasilnya tampak pada Gambar 4 dalam dokumen terlampir. 

Selanjutnya kita akan mewarnai bagian daerah lingkaran pusat/tengah dan daerah-daerah kecil yang diapit oleh dua busur dari enam lingkaran lainnya. Untuk hal itu kita kembali bekerja dalam lingkup perintah scope dengan opsi even odd rule.
Lebih dulu kita cakup lingkaran pusat itu oleh 
\path[clip] (O) circle (3);
Kemudian kita isikan warnanya oleh
\fill[SpringGreen3] (O) circle (3);
diikuti oleh pengisian warna pada 6 daerah kecil yang masing-masing diapit oleh dua busur dari 6 lingkaran. Pada bagian ini (sebagai contoh) kita akan berjalan dari titik $B$ secara bersambungan untuk tiga daerah kemudian dimulai lagi dari titik $A$ secara bersambungan untuk tiga daerah lainnya.
\fill[Dandelion] (B) arc(120:240:3) %pusat A
arc(0:120:3) %pusat E
arc(-120:0:3) %pusat C
(A) arc(60:180:3) %pusat F
arc(-60:60:3) %pusat D
arc(180:300:3) ;%pusat B
Dengan demikian, pengkodean selengkapnya untuk pewarnaan dalam lingkup perintah scope yang kedua itu adalah sebagai berikut.
\begin{scope}[even odd rule]
%cakupan terhadap lingkaran pusat
\path[clip] (O) circle (3);
%mengisi warna pada lingkaran pusat
\fill[SpringGreen3] (O) circle (3); 
%mengisi warna pada 6 daerah yang masing-masing diapit oleh dua busur
\fill[Dandelion] (B) arc(120:240:3) %pusat A
arc(0:120:3) %pusat E
arc(-120:0:3) %pusat C
(A) arc(60:180:3) %pusat F
arc(-60:60:3) %pusat D
arc(180:300:3) ;%pusat B
\end{scope}
Hasilnya tampak pada Gambar 5 dalam dokumen terlampir. 

Terakhir, kita akan mewarnai 6 daerah yang masing-masing diapit oleh tiga busur. Pada contoh ini pewarnaan dilakukan satu persatu untuk tiap daerah itu yang masing-masing bermula dari titik $A$, $B$, $C$, $D$, $E$, dan $F$. Perintah ini diberikan secara langsung, bukan di dalam lingkup perintah scope.
\fill[Gold1] (A) arc(-60:0:3) arc(60:120:3) arc(60:0:3)
(B) arc(0:60:3) arc(120:180:3) arc(120:60:3) 
(C) arc(60:120:3) arc(180:240:3) arc(180:120:3) 
(D) arc(120:180:3) arc(240:300:3) arc(240:180:3) 
(E) arc(180:240:3) arc(-60:0:3) arc(300:240:3) 
(F) arc(240:300:3) arc(0:60:3) arc(0:-60:3);


Penutup

Sekali lagi kita cermati bahwa lingkup perintah scope beserta opsi even odd rule menentukan pewarnaan daerah secara efektif sebagaimana mestinya. Dalam hal lainnya, penetapan path tertutup untuk suatu daerah yang diapit oleh beberapa busur meminta kita untuk teliti dan cermat dalam pengacuan terhadap titik pusat lingkaran dan sudut-sudut yang bekerja untuknya. 
Demikian semoga bermanfaat.

$\square$ Adjie Gumarang Pujakelana 2017

Wednesday, May 10, 2017

Scope, Even Odd Rule, dan Clip: Bermain Busur dan Warna

Mukadimah

Ini adalah tulisan pertama tentang penggunaan lingkup perintah scope dengan opsi even odd rule dan perintah clip. 
Perhatikan Gambar 1 (kiri). Kita akan menggambar bangun tersebut. Tampak bahwa bagian "rumit"-nya adalah kita harus mewarnai wilayah empat "daun" yang masing-masing diapit oleh dua busur, sedangkan lingkaran luarnya berisi warna yang berbeda.
Untuk menggambarnya akan kita gunakan paket TikZ, sedangkan pewarnaan oleh paket xcolor dan dgunakan tiga warna baru: bistre, paper, dan CincinnatiRed yang ditetapkan oleh
\definecolor{bistre}{RGB}{61, 43, 31}
\definecolor{paper}{RGB}{239,227,157}
\definecolor{CincinnatiRed}{RGB}{224,1,34}

Lukisan

Perhatikan Gambar 1 dalam dokumen terlampir. Pertama, tentu kita buat dulu lingkarannya. Dalam hal ini (sebagai contoh) kita gunakan jari-jari sepanjang $2\,\textrm{cm}$. Sekarang kita bersiap untuk menggambar busur. Karena lukisan busur memerlukan titik pusat acuan, besar sudut awal, besar sudut akhir, dan jari-jari
(koordinat awal)  arc(sudut awal:sudut akhir:jari-jari)
maka kita perlu melakukan perhitungan sebelum menggambarnya. 
Perhatikan Gambar 2. Kita membagi bidang Kartesius menjadi $8$ bagian dengan besar sudut pusat masing-masing senilai $45^\circ$. Oleh karena itu, dalam koordinat kutub, dapat kita tetapkan titik-titik $O$, $A$, $B$, $C$, $D$, $E$, $F$, $G$, dan $H$ sebagai berikut.
\coordinate (O) at (0:0);
\coordinate (A) at (0:2);
\coordinate (B) at (45:2);
\coordinate (C) at (90:2);
\coordinate (D) at (135:2);
\coordinate (E) at (180:2);
\coordinate (F) at (225:2);
\coordinate (G) at (270:2);
\coordinate (H) at (315:2);
Pada Gambar 2, perhatikan persegi $OPBQ$ dan $\triangle BOP$ siku-siku di $P$. Misalkan $OP=BP=a$ cm, maka
\begin{align*}
OP^2+PB^2 &= OB^2\\
a^2+a^2 &= 2^2\\
2a^2 &= 4\\
a^2 &= 2\\
a &= \sqrt{2}
\end{align*}
sehingga busur yang kita buat ditetapkan berdasarkan jari-jari senilai $\sqrt{2}\,\textrm{cm}$.
Sekarang perhatikan Gambar 2 dan Gambar 3. Busur pertama, yaitu busur setengah lingkaran, akan kita buat berawal dari titik $B$ dengan titik pusat di $P$. Kita nyatakan
\draw[thick,bistre] (B) arc(90:270:{sqrt(2)})  ;%pusat P
Hasilnya tampak sebagai busur bernomor 1.
Busur kedua kita buat berawal dari titik $H$ dengan titik pusat di $S$. Kita nyatakan
\draw[thick,bistre] (H) arc(0:180:{sqrt(2)}) ;%pusat S
Hasilnya tampak sebagai busur bernomor 2.
Busur ketiga kita buat berawal dari titik $F$ dengan titik pusat di $R$. Kita nyatakan
\draw[thick,bistre] (F) arc(-90:90:{sqrt(2)}) ;%pusat R
Hasilnya tampak sebagai busur bernomor 3.
Busur keempat kita buat berawal dari titik $D$ dengan titik pusat di $Q$. Kita nyatakan
\draw[thick,bistre] (D) arc(-180:0:{sqrt(2)}) ;%pusat Q
Hasilnya tampak sebagai busur bernomor 4.
Meskipun demikian, cara yang praktis adalah menetapkan lukisan keempat busur tersebut secara sekaligus. Hal itu ditetapkan oleh  
\draw[thick,bistre] (B) arc(90:270:{sqrt(2)}) arc(0:180:{sqrt(2)}) arc(-90:90:{sqrt(2)}) arc(-180:0:{sqrt(2)});

Lingkup Perintah Scope, Opsi Even Odd Rule, dan Perintah Clip

Sekarang kita bersiap untuk mengisikan warna berbeda pada daerah lingkaran dan daerah yang diapit oleh dua busur. Agar pewarnaan ini tidak saling menimpa atau saling menutupi, kita memerlukan lingkup perintah scope dengan opsi even odd rule.
\begin{scope}[even odd rule]
...
\end{scope}
Pertama, cakup dulu daerah lingkaran (karena daerah-dua busur terletak di dalamnya) oleh
\path[clip] (0,0) circle (2);
kemudian isi daerah lingkaran itu oleh warna paper
\fill[paper] (0,0) circle (2);
Sekarang kita dapat melakukan pengisian warna pada keempat daerah yang masing-masing diapit oleh dua busur itu dengan menggunakan warna CincinnatiRed.
\fill[CincinnatiRed] (B) arc(90:270:{sqrt(2)}) arc(0:180:{sqrt(2)}) arc(-90:90:{sqrt(2)}) arc(-180:0:{sqrt(2)});
Dengan demikian, pengkodean selengkapnya untuk pewarnaan dalam lingkup perintah scope itu adalah sebagai berikut.
\begin{scope}[even odd rule]
\path[clip] (0,0) circle (2);
\fill[paper] (0,0) circle (2);
\fill[CincinnatiRed] (B) arc(90:270:{sqrt(2)}) arc(0:180:{sqrt(2)}) arc(-90:90:{sqrt(2)}) arc(-180:0:{sqrt(2)});
\end{scope}
Terakhir, kita lukis garis putus-putus dalam warna paper yang menghubungkan dua "ujung daun" secara sepasang-sepasang oleh
\draw[dashed,paper] (B)--(F) (D)--(H);
kemudian melukis garis putus-putus untuk persegi itu oleh
\draw[dashed] (B)--(D)--(F)--(H)--cycle;
dan melukis lingkarannya oleh
\draw[thick,bistre] (O) circle (2);
Hasilnya tampak pada Gambar 4 atau Gambar 1.


Penutup

Lingkup perintah scope beserta opsi even odd rule berguna sebagai pilihan ketika kita bermaksud untuk mengisi suatu daerah (oleh warna atau arsiran) yang tercakup di dalam daerah dari suatu path atau bangun lainnya. Dalam hal itu, daerah "utama" harus kita cakup lebih dulu oleh perintah clip. (Dapatkah Anda membuat Gambar 2 seperti tampak pada awal tulisan ini?)
Demikian semoga bermanfaat.

$\square$ Adjie Gumarang Pujakelana 2017

Related Posts Plugin for WordPress, Blogger...