Praktikum 8
TikZi joonised
Võtke fail joonised-tikz.tex ja koostage sinna nõutavad TikZ-keeles joonised. Näidiseks on fail joonised_naidis-tikz.pdf.
LaTeX-dokumendi preambulasse tuleb paigutada \usepackage{tikz}
Joonised paigutatakse \begin{tikzpicture} ja \end{tikzpicture} vahele.
Esimese joonise näpunäited
- Ruudu joonistamine
\begin{tikzpicture}[x=1cm,y=1cm] \draw (0,0) rectangle (1,1); \end{tikzpicture}
- Alternatiivne variant: ruut joonistatud kinnise murdjoonena
\begin{tikzpicture}[x=1cm,y=1cm] \draw (0,0) -- (1,0) -- (1,1) -- (0,1) -- cycle; \end{tikzpicture}
- Täidetud ruut ja paks äärejoon
\begin{tikzpicture}[x=1cm,y=1cm] \fill[black] (0,0) rectangle (1,1); \draw[line width=3pt] (0,0) -- (8,0) -- (8,8) -- (0,8) -- cycle; \end{tikzpicture}
- Esimene rida täidetud ruutusid tsükliga, kus ruudu alumise vasaku nurga {$x$}-koordinaat saab väärtused {$0,2,4,6$} (aritmeetiline jada algusega {$0$}, lõpuga {$6$} ja teine liige on {$2$})
\begin{tikzpicture}[x=1cm,y=1cm] \foreach \i in {0,2,...,6} { \fill[black] (\i,0) rectangle (\i+1,1); } \draw[line width=3pt] (0,0) -- (8,0) -- (8,8) -- (0,8) -- cycle; \end{tikzpicture}
- Samamoodi esimene rida täidetud ruutusid, aga tsüklis omandab {$i$} nüüd väärtused {$0,1,2,3,4,5,6,7$} ning
if-lausega jäetakse alles ainult juhtumid {$0,2,4,6$}. NB! Preambulasse on vaja paigutada\usepackage{ifthen}\begin{tikzpicture}[x=1cm,y=1cm] \foreach \i in {0,1,...,7} { \ifthenelse{\i=0 \OR \i=2 \OR \i=4 \OR \i=6} { \fill[black] (\i,0) rectangle (\i+1,1); } } \draw[line width=3pt] (0,0) -- (8,0) -- (8,8) -- (0,8) -- cycle; \end{tikzpicture}
TikZi käsud
\begin{tikzpicture}[x=1cm,y=1cm] . . . \end{tikzpicture}joonise kood pannakse sellesse keskkonda, sealjuuresx=1cmjay=1cmpanevad paika, millised on joonise sees kasutatavad {$x$}- ja {$y$}-suunalised pikkusühikud- joonistamiskäsk
\draw[parameeter,parameeter] objekt- parameeter
draw=redmäärab joonevärviks punase - parameeter
line width=3ptmäärab joonepaksuse - parameeter
fill=bluemäärab täitmisvärviks sinise (eeskätt mõttekas kinnise joone korral) - parameeter
rotate=90määrab joonistamise {$90$} kraadi vastupäeva pööratuna - parameeter
shift={(-1,0)}määrab joonistamise nihutatuna vektori {$(-1,0)$} võrra - objekt
(1,1) rectangle (2,3)on ristkülik, mille üks nurk on(1,1)ja selle nurga vastasnurk on(2,3) - objekt
(1,0) circle (3)on ringjoon keskpunktiga(1,0)ja raadiusega3 - objekt
coordinates{ (0,0)(8,0)(8,7)(7,7)(7,8)(0,8) }on (mittekinnine) murdjoon etteantud punktidega - objekt
coordinates{ (0,0)(8,0)(8,7)(7,7)(7,8)(0,8)(0,0) }on kinnine murdjoon (alg- ja lõpp-punkt langevad kokku) - objektid
(0,0)--(8,0)--(8,7)--(7,7)--(7,8)--(0,8)ja(0,0)--(8,0)--(8,7)--(7,7)--(7,8)--(0,8)--cycleon samad mis kaks eelnevat (lühinotatsioon)
- parameeter
- kõverjoonte (Bézier' kõverate) joonistamiseks on vaja preambulas laadida
\usetikzlibrary{hobby}- mittekinnine kõverjoon, mis läbib antud punkte:
\draw plot [hobby] coordinates { (0,0)(8,0)(8,7)(7,7)(7,8)(0,8) }; - kinnine kõverjoon:
\draw plot [closed hobby] coordinates { (0,0)(8,0)(8,7)(7,7)(7,8)(0,8) };
- mittekinnine kõverjoon, mis läbib antud punkte:
- arvmuutujad:
\def\x1{2}(see pole üldse TikZ, vaid puhas TeX) - arvmuutujatega töötamiseks on võimalik kasutada ka
\usetikzlibrary{math}või\usetikzlibrary{calc}pakettemathpakett võimaldab:\tikzmath{\x1 = 1; \y1 =1; \x2 = \x1 + 1; \y2 =\y1 +3; }calcpakett võimaldab:\draw (0,0)--({2.5*cos(220)},{2.5*sin(220)})(lõik punktist(0,0)kuni punktini(2.5,0), mis on220kraadi võrra pööratud vastupäeva
- punktmuutuja defineerimine:
\coordinate (A) at (2,1); - tsükkel üle loetelu
\foreach\i in {1,2,3,2} { tsükli keha }-- tsükli keha täidetakse neli korda, vastavalt {$i=1$}, {$i=2$}, {$i=3$} ja (uuesti) {$i=2$} korral - tsükkel üle aritmeetilise jada
\foreach\i in {1,4,...,12} { tsükli keha }-- tsükli keha täidetakse {$i=1$}, {$i=4$}, {$i=7$} ja {$i=10$} korral (viimane arv {$12$} tähendab seda, et tsüklist väljutakse, kui järgmisel korral oleks tsüklimuutuja {$i$} väärtus juba suurem kui {$12$}) - puhas TeX ja LaTeX pakuvad ka muid tsükli võimalusi
\coordinate (C) at ($(A)!0.35!(B)$);defineeritakse punkt {$C$} lõigul {$AB$}, kus {$A$} poole jääb {$0{,}35$} osa ja {$B$} poole {$1-0{,}35$} osa- valikulause jaoks laadida
\usepackage{ifthen}(see pole TikZi, vaid LaTeXi pakett)\ifthenelse{\i < 7 \OR \j < 7}{ keha-kui-tingimus-tõene }{ keha-kui-tingimus-väär}
- puhas TeX pakub ka muid (kohmakamaid) valikulause variante
- Teksti lisamine
\node at (3,1) {$\frac{1}{2}$};tekst {$\frac12$} antud punktis\node at (A) [above right] {$A$},[below left],[right]jne teksti asukoht punkti {$A$} suhtes
- Täppisgeomeetria (kolmnurga ümberringjoon, kahe ringjoone lõikepunkt jpm) jaoks tõenäoliselt vajalik
\usepackage{tkz-euclide}
NB! Kodutöö lahendamisel tuleb projekti koosseisu paigutada Metaposti lähtekood ning sellest saadud PDF joonised. Kontrolltöös võib soovi korral kasutada TikZi.