View
723
Download
8
Category
Preview:
Citation preview
Sveuciliste J. J. Strossmayera u Osijeku
Odjel za matematiku
Ivica Prgomet
Translacije i rotacije likova
Diplomski rad
Osijek, 2008
Sveuciliste J. J. Strossmayera u Osijeku
Odjel za matematiku
Ivica Prgomet
Translacije i rotacije likova
Diplomski rad
Voditelj rada:
prof. dr. sc. M. Essert
Osijek, 2008
Sadrzaj
Uvod iii
I Translacija i rotacija 1
1 Potrebno predznanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Translacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1 3D Translacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Rotacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1 Svojstva matrice rotacije . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 3D rotacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.1 Rotiranje oko osnovnih osi . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2 Eulerovi kutovi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3 Rotiranje oko proizvoljne osi . . . . . . . . . . . . . . . . . . . . . . . 21
II TikZ i PGF 25
5 Odredivanje tocaka i staza . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.1 Naredba path - staza . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2 Naredba draw - crtaj . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3 Crtanje linija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.4 Imenovane koordinate . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.5 Relativne koordinate . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.6 Naredba okomito-vodoravno odnosno vodoravno-okomito . . . . . . . 32
6 Slozeniji graficki oblici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.1 Grid - Mreza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.2 Rectangle - pravokutnik . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.3 Circle - Kruznica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.4 Elipse - elipsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.5 Arc - kruzni luk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.6 Controls - Bezier-ove krivulje . . . . . . . . . . . . . . . . . . . . . . 36
7 Boje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.1 Fill - ispuna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.2 Shade - sjencenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.3 Vrste sjencenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8 Linije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
i
8.1 Debljina linije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.2 Krajevi linija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.3 Spojevi linija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.4 Prekidi linija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.5 Duple linije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
8.6 Zavrsetci na linijama - strelice . . . . . . . . . . . . . . . . . . . . . . 44
9 Cvorovi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
9.1 Pozicioniranje u cvoru . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.2 Label opcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
9.3 Pin opcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
9.4 Povezivanje cvorova s cvornim koordinatama . . . . . . . . . . . . . . 52
10 Scoping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
11 Clip - izrezivanje slike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
12 Foreach - FOR petlja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
12.1 Lista kao niz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
12.2 Parovi u listi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
12.3 Varijable u listi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
12.4 Prekid petlje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
13 Transformacije u TikZ-u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
13.1 Koordinatne transformacije . . . . . . . . . . . . . . . . . . . . . . . 61
13.2 Skaliranje - povecavanje . . . . . . . . . . . . . . . . . . . . . . . . . 62
13.3 Translacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
13.4 Rotacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
13.5 Proizvoljna matrica transformacije . . . . . . . . . . . . . . . . . . . 66
13.6 Transformacije crteza . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
14 Primjeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Sazetak 75
Bibliografija 76
Zivotopis 77
ii
Uvod
Ovaj diplomski rad je zamisljen kao edukativni materijal nastavnicima, profesorima, studen-
tima koji su imali potrebu staviti crtez u TEX odnosno LATEX.
Korisnici TEX i LATEX programa oduvjek su imali potrebu za ubacivanjem grafike u svoje
dokumente. Vecina je to radila na najjednostavniji nacin, fotokopira pa zalijepi gotovu
sliku. Naravno, oni naprednijeg znanja znali su da se slika moze ubaciti direktno u TEX
kao datoteka. Ovako izvedeno ubacivanje slike nije tako lose, ali zasto se crtez ne bi mogao
nacrtati direktno u TEX-u odnosno LATEX-u?
Za izvesti ovako nesto postoji desetak sustava. Cilj takvih sustava je stvaranje grafike
koja se jednostavno ukljucuje unutar LATEX naredbi i ne zahtjeva vanjski program za crtanje.
Naime u ovom diplomskom radu je opisan nacin crtanja crteza u TEX-u odnosno LATEX-u
uz pomoc paketa TikZ & PGF. Ovi paketi jednostavnim naredbama omogucavaju direktno
pisanje koda u TEX-ov odnosno LATEX-ov dokument. U svakom trenutku je moguce izmijeniti
dani crtez jer su naredbe uvijek dostupne. Osim ove prednosti TikZ & PGF kreiraju vektorski
crtez, koji je za razliku od rasterskog podlozan promjenama povecavanja bez gubitka kvalitete
crteza.
U prvom poglavlju diplomskog rada obradena je tema translacije i rotacije likova, koja
je ustvari i naslov diplomskog rada. Obuhvacena podrucja su translacija, 3D translacija,
rotacija, matrica rotacije, 3D rotacija, rotiranje oko osnovnih osi, rotiranje oko proizvoljne
osi i Eulerovi kutovi.
U drugom poglavlju je opisan paket TikZ & PGF. Ovo poglavlje je zamisljeno kao tutorial
koji krece opcenito od crtanja jednostavnih oblika pa do slozenijih. Poglavlje obuhvaca
sljedece pojmove: tocke, staze, slozenije graficke oblike (mreza, pravokutnik, kruznica, elipsa,
Bezier-ove krivulje...), boje, linije, cvorove, foreach naredbe, te osnovne transformacije.
Na kraju poglavlja su smjesteni primjeri crteza s kodom, koji se vezu za translaciju i
rotaciju. Svaki od crteza sadrzi razlicite elemente teskoce crtanja.
Nadam se da ce ovaj diplomski rad od sada pruziti pomoc i pridonijeti jednostavnije i
uspjesnije stvaranje crteza u LATEX-u odnosno TEX-u.
iii
Poglavlje I
Translacija i rotacija
Kao osnovni element u kompjuterskoj grafici bi bili svakako translacija (pomak), rotacija
(vrtnja oko tocke ili pravca), simetrija (zrcaljenje - s obzirom na tocku pravac ili ravninu).
Ovi pojmovi su vrlo bitni i u prirodnim znanostima kao kemiji i fizici.
Kako se ove i slicne transformacije mogu nastati u kompjuterskoj grafici? Najprije se zap-
itajmo kako ih opisati analiticki - pomocu koordinata? To se matematicki rjesava uvodenjem
pojma matrice, kojima smo omogucili zapis vektora u prostoru.
1 Potrebno predznanje
Djeca primjenjuju translaciju i rotaciju od najmanjeg uzrasta jos u vrticu, crtajuci linije na
papiru svojom olovkom ne znajuci da time ustvari rade kompozicije translacija i rotacija.
Translacija i rotacija je tema koja se uci u osnovnoj skoli, kroz razne predmete matem-
atika, fizika, tehnicka kultura, likovna kultura. Vektore djeca upoznaju u 7. razredu u
nastavi fizike, kada se proucava gibanje, te Newtonovi zakoni (~F = m · ~a).
Kod obrade vektora pruza nam se niz primjera iz svakodnevnog zivota, npr. povlacenje
konopca (zbrajanje i oduzimanje vektora), plivanje rijekom ...
U matematici se prvi put ozbiljnije obraduje u 8. razredu kada se pocinju uciti vektori i
njihove operacije, te slijedeca preslikavanja ravnine:
• Vektori
• Zbrajanje i oduzimanje vektora
• Translacija
• Osna simetrija
• Centralna simetrija
• Rotacija
Nuzno predzanje za obradu ove teme u OS mora biti slijedece:
1
Definicija 1.1. vektor
Usmjerena duzina ili vektor je duzina za koju je istaknuto koja je od njezinih krajnjih
tocaka pocetna, a koja zavrsna. Vektor kojemu je pocetna tocka A, a zavrsna tocka B
oznacavamo sa−→AB. Svaki vektor ima svoju duljinu, smjer i orijentaciju.
Jednaki vektori imaju jednaku duljinu, isti smjer i orijentaciju.
Definicija 1.2. nul vektor
Nul vektor je vektor koji pocinje i zavrsava u istoj tocki. Oznaka nul vektora je ~0, njegova
duljina je jednaka 0, a smjer nije definiran.
Definicija 1.3. suprotni vektori
Dva su vektora medusobno suprotna ako imaju isti smjer, jednake duljine, ali su im
suprotne orijentacije. Vektor suprotan vektoru ~a oznacavamo sa −~a.
Nakon toga slijede slijedeci pojmovi:
• kolinearni vektori
• mnozenje vektora brojem (skalarom)
• zbrajanje i oduzimanje vektora
– pravilo paralelograma
– pravilo trokuta
Duljina (modul) vektora−→AB je udaljenost tocaka A, B (tj. duljina duzine AB). Oznacava
se kao |−→AB|.
Smjer vektora−→AB je smjer koji odreduje pravac na kojima su tocke A,B.
Usmjerenje vektora−→AB je od tocke A do tocke B.
Definicija 1.4. Jednakosti vektora: Vektor−→AB jednak je vektoru
−−→CD ako tocke A,B,D,C
(upravo u tom redoslijedu) cine paralelogram.
Sad imamo glavnu tvrdnju o jednakosti vektora:
Dva su vektora jednaka ako i samo ako imaju jednake duljine, isti smjer i isto usmjerenje.
2
Ocita svojstva zbrajanja vektora i mnozenja vektora sa skalarom
1. (a+ b) + c = a+ (b+ c)
2. a+ 0 = 0 + a = a
3. (∀a ∈ V )(∃a′ ∈ V )a+ a′ = a′ + a = 0
4. a+ b = b+ a
5. λ(a+ b) = λa+ λb
6. (λ+ µ)a = λa+ µa
7. λ(µa) = (λµ)a.
Kut medu vektorima
Intuitivno je jasno (pokusom se lako potvrdi) da rezultanta djelovanja dviju sila (u nekoj
tocki) ne ovisi samo o njihovim intenzitetima vec i o kutu pod kojim te sile djeluju. Od
dvaju kutova (vanjskog i unutarnjeg) sto ga te dvije sile zatvaraju, vazan nam je manji-
unutarnji (jer rezultanta djeluje unutar njega). Odatle potjece definicija kuta medu dvama
ne-nul vektorima: to je manji od kutova sto ga ta dva vektora odreduju kad ih postavimo
da pocinju u istoj tocki (posebni su slucajevi kad je kut nula-kut ili ispruzeni kut).
α βγ
δ
Slika 1.1 Kut medu vektorima
Definicija 1.5. Funkcija - preslikavanje sa skupa A u skup B je pravilo koje svakom elementu
skupa A pridruzuje element skupa B.
3
2 Translacija
Definicija 2.1. Translacija (usporedni pomak)
Neka je u ravnini zadan vektor ~a. Taj vektor odreduje preslikavanje ravnine koje svakoj
tocki A te ravnine pridruzuje tocku A’ takvu da je:
−−→AA′ = ~a (2.1)
A
A′
~a ~a
Slika 2.1 Translacija
Od ucenika se u osnovnoj skoli ocekuje da nauci:
• translatirati tocku, duzinu, pravac, trokut i kruznicu.
• prepoznati lik koji je nastao translacijom drugoga.
Ucenicima u 8. razredu najvise problema predstavlja upravo obrada ovog dijela gradiva.
Uz ovo poznato je, da neki ucenici imaju problema sa geometrijom a ovdje je intenzivno
koristenje sestara i ravnala. Ne preporuca se nikakvo odredivanje koordinata tocaka trans-
latiranih likova u koordinatnoj ravnini, to treba ostaviti za izborni sadrzaj. Odredivanje
koordinata i prikaz vektora preko matrica uci se u srednjoj skoli, naravno opet ne u svim
skolama.
Svojstva translacije:
• Slika duzine AB pri translaciji duzine za vektor ~a jest duzina A′B′ koja je sukladna i
paralelna s duzinom AB.
• Translacija cuva udaljenost tocaka, tj. za bilo koje dvije tocke A i B i njihove trans-
latirane slike A′ i B′ vrijedi jednakost:
|AB| = |A′B′|
• Translacijom ravnine pravac p se preslikava u paralelni pravac p′.
• Translacija ravnine cuva paralelnost pravaca, tj. paralelne pravce preslikava u paralelne
pravce.
• Translacijom se kut preslikava u njemu sukladni kut s paralelnim krakovima.
4
• Trokut se translacijom preslikava u njemu sukladni trokut.
Cetverokut se translacijom preslikava u njemu sukladni cetverokut, peterokut u njemu
sukladni peterokut itd. Opcenito, mnogokut i njemu translacijom pridruzeni mnogokut
medusobno su sukladni.
• translacija nema fiksnih tocaka.
Kako translaciju opisati analiticki?
U 2D prostoru odnosno ravnini situacija je slijedeca:
Uvedimo ove oznake.
T (x, y) - opca tocka ravnine
T ′(x′, y′) - tocka dobivena translacijom tocke T za vektor a ·~i+ b ·~j.Tada je:
x′ = x+ a
y′ = y + b
Matrica translacije T u ravnini definirana sa vektorom a ·~i+ b ·~j je:
T =
1 0 a0 1 b0 0 1
(2.2)
Determinanta matrice T je:
detT = 1
Matrica inverza translacije dobije se tako da zamijenimo a sa −a i b sa −b pa dobijemo:
T−1 =
1 0 −a0 1 −b0 0 1
(2.3)
Vrijedi:
A · A−1 = A−1 · A = I (2.4)
Za translatirati kompleksnije oblike od tocaka, npr. poligon, potrebno je translatirati
svaki od vrhova poligona kojeg zelimo translatirati.
5
Primjer 2.0.1. Neka je dan trokut u koordinatnom sustavu, koordinata vrhova:
A = (0, 0) B = (1, 1) C = (−0.5, 0.5)
Zelimo ga translatirati za vektor ~v = 2i− 1j. Matrica translacije ce izgledati ovako:
T =
1 0 20 1 −10 0 1
A trokut cemo opisati matricom
P =
0 1 −0.5 00 1 0.5 01 1 1 1
Translatirani trokut P ′ ce mo dobiti P ′ = T · P
P ′ =
1 0 20 1 −10 0 1
·0 1 −0.5 0
0 1 0.5 01 1 1 1
=
2 3 1.5 2−1 0 −0.5 −11 1 1 1
Trazeni trokut ima koordinate:
A′ = (2,−1) B′ = (3, 0) C ′ = (1.5,−0.5)
x
y
−1 1 1.5 2 3
−1
−0.5
0.5
1
A
B
C
A′
B′
C ′
Slika 2.2 Translacija trokuta za vektor ~v = 2i− 1j
6
2.1 3D Translacija
Uvedimo ove oznake.
T (x, y, z) - opca tocka prostora
T ′(x′, y′, z′) - tocka dobivena translacijom tocke T za vektor a ·~i+ b ·~j + c · ~k.
Tada je:
x′ = x+ a
y′ = y + b
z′ = z + c
sto mozemo zapisati kao:
(x, y, z) 7→ (x+ a, y + b, z + c) (2.5)
x′y′z′
=
xyz
+
abc
=
x+ ay + bz + c
(2.6)
Vidimo da se translacija ostvaruje zbrajanjem dviju jednostupcanih matrica.
x
y
z
T (x, y, z)~V
=a~i
+ b~j + c
~k
T ′(x+ a, y + b, z + c)
Slika 2.3 3D translacija
Matricu translacije zapisati cemo ovako:
T =
1 0 0 a0 1 0 b0 0 1 c0 0 0 1
(2.7)
x′
y′
z′
1
=
xyz1
1 0 0 a0 1 0 b0 0 1 c0 0 0 1
(2.8)
7
Matrica inverzne translacije je:
T−1 =
1 0 0 −a0 1 0 −b0 0 1 −c0 0 0 1
(2.9)
8
3 Rotacija
S pojmom rotacije se susrecemo u svakodnevnom zivotu. Kazaljke sata vrte se (rotiraju)
oko sredisnje tocke sata. Vec iz tog primjera vidi se da je za rotaciju potrebno znati oko koje
tocke cemo rotirati i za koji kut.
Definicija 3.1. Neka je O zadana tocka ravnine, a α kut. Rotacija oko tocke O za kut α
preslikavanje je ravnine koje svakoj tocki T ravnine, razlicitoj od tocke O, pridruzuje tocku
T ′ takvu da vrijedi:
|OT | = |OT ′| i ∠TOT ′ = α. (3.1)
Tocka T ′ slika je tocke T pri rotaciji oko tocke O za kut α.
Tocka O srediste (centar) je rotacije, a kut α kut je rotacije.
Razlikujemo dvije vrste rotacije.
O T
T’
αO T
T’
−α
Slika 3.1 Slika prikazuje pozitivan smjer vrtnje α > 0 i negativan smjer vrtnje α < 0
• Ako tocku rotiramo u smjeru suprotnom kretanju kazaljke sata, kazemo da rotaciju
izvodimo u pozitivnom smjeru.
• Ako tocku T rotiramo u smjeru kretanja kazaljke na satu, kazemo da rotaciju izvodimo
u negativnom smjeru.
Svojstvo rotacije:
Rotacija ravnine cuva medusobne udaljenosti tocaka.
Dokaz svojstva:
Neka su A i B dvije tocke ravnine i neka su A′ i B′ njihove slike pri rotaciji oko tocke O
za kut (velicine) α.
Uocimo trokute ABO i A′B′O′.
Vrijedi: |AO| = |A′O|, |BO| = |B′O| (svojstvo rotacije). Osim toga je |∠AOB| =
α + |∠A′OB| = |∠A′OB′|.Na temelju poucka SKS o sukladnosti trokuta zakljucujemo 4ABO ∼= 4A′B′O, pa je
|AB| = |A′B′|. Time je tvrdnja dokazana.
Zakljucujemo:
9
Svako preslikavanje ravnine M u samu sebe koje cuva medusobne udaljenosti tocaka ima
svojstvo da se tim preslikavanjem geometrijski lik u ravnini preslikava u njemu sukladan lik.
To znaci da se duzina preslikava u njoj sukladnu duzinu, mnogokut u njemu sukladan
mnogokut, kruznica u njoj sukladnu kruznicu, pravac u pravac, kut u njemu sukladni kut
itd. Osim toga, takvo preslikavanje cuva paralelnost i okomitost pravaca.
Rotacijom ravnine (oko zadane tocke O, za kut α) geometrijski lik u ravnini preslikava se u
njemu sukladan lik.
Kako rotirati u pravokutnom kartezijevom koordinatnom sustavu u ravnini uz pomoc
vektora, odnosno matrica.
Rotiranje jedinicnog vektora
e1 =
[10
](3.2)
za kut α dobit ce se (rotirani) vektor
e′1 =
[cosαsinα
](3.3)
Iz ovoga se mora dobiti matrica R koja ce izgledati ovako[cosαsinα
]=
[r11 r12
r21 r22
] [10
](3.4)
Jedinicni vektor
e2 =
[01
](3.5)
pri tome ce rotirati u
e′2 =
[− sinαcosα
](3.6)
iz cega proizlazi matrica rotacije
R =
[cosα − sinαsinα cosα
](3.7)
Uvjerimo se u istinitost navedene tvrdnje. Neka je v proizvoljan vektor. Tvrdimo da ce
matrica rotacije R rotirati vektor v za kut α u novi vektor v′. Ako to vrijedi mora vrijediti
i ovaj skalarni produkt
v · v′ = ‖v‖2 cosα (3.8)
Uzeta je u obzir cinjenica da rotacija ne mijenja duljinu vektora jer je
‖v‖ = ‖v′‖ i ‖v‖ · ‖v′‖ = ‖v‖2 (3.9)
Kako je
v′ =
[v1 cosα− v2 sinαv2 sinα + v2 cosα
](3.10)
10
skalarni produkt v · v′ je dan sa
v · v′ = v21 cosα− v1v2 sinα + v1v2 sinα + v2
2 cosα =
= (v21 + v2
2) cosα) = ‖v‖2 cosα
kako je i dokazano.
Promotrimo drugi pogled na istu temu:
Rotacija ravnine oko ishodista za kut α suprotno od kazaljke na satu.
Uvedimo ove oznake:
T (x, y) - opca tocka ravnine,
T ′(x′, y′) - tocka dobivena rotacijom tocke T za kut α oko ishodista.
Koristeci formulu za mnozenje kompleksnih brojeva u trigonometrijskom prikazu, dobijemo:
x′ + iy′ = (cosα + i sinα)(x+ iy) = (cosα · x− sinα · y) + i(sinα · x+ cosα · y)
a odavde:
x′ = cosα · x− sinα · y, y′ = sinα · x+ cosα · y (3.11)
sto nas dovodi ponovno do matrice rotacije:
R =
[cosα − sinαsinα cosα
]
x
y
O
T (x, y)
T ′(x′, y′)
α~v
~v α
Slika 3.2 Rotacija oko O za kut α suprotno od kazaljke na satu
Gornju transformaciju mozemo krace prikazati kao preslikavanje (linearni operator)
R : R2 → R2
opisan s:
v′ = R · v
Dakle, [x′
y′
]=
[cosα − sinαsinα cosα
] [xy
]=
[cosα · x− sinα · ysinα · x+ cosα · y
](3.12)
11
Definicija 3.2. Neka su X i Y vektorski prostori. Preslikavanje A : X → Y naziva se
linearni operator ako za njega vrijedi
(∀x1, x2 ∈ X)(∀α1, α2 ∈ R) A(α1x1 + α2x2) = α1Ax1 + α2Ax2
Ovaj uvjet naziva se uvjet linearnosti. On je ekvivalentan uvjetima aditivnosti i ho-
mogenosti, tj. vrijedi samo onda ako je ispunjeno
(∀x1, x2 ∈ X) A(x1 + x2) = Ax1 + Ax2
(∀x ∈ X)(∀α ∈ R) A(αx) = αA(x)
Provjerimo matricu rotacije R kroz par primjera
Primjer 3.0.2. Rotacija za 180◦. Unaprijed znamo da je x′ = −x, y′ = −y provjerimo da
se formulom dobije isto:[x′
y′
]=
[cos 180◦ − sin 180◦
sin 180◦ cos 180◦
] [xy
]=
[−1 · x− 0 · y
0 · x+ (−1) · y
]=
[−x−y
]Primjer 3.0.3. Rotacija za 90◦. Pretpostavljamo da bi trebali dobiti x′ = −y, y′ = x
provjerimo da se formulom dobije isto:[x′
y′
]=
[cos 90◦ − sin 90◦
sin 90◦ cos 90◦
] [xy
]=
[0 · x− 1 · y1 · x+ 0 · y
]=
[−yx
]Primjer 3.0.4. Rotacija za 60◦. Pretpostavljamo da bi trebali dobiti x′ = −y, y′ = −xprovjerimo da se formulom dobije isto:[
x′
y′
]=
[cos 60◦ − sin 60◦
sin 60◦ cos 60◦
] [xy
]=
[12· x−
√3
2· y√
32· x+ 1
2· y
]
Dosad je bila opisana rotacija oko cvrste tocke O = (0, 0), a sto ako zelimo rotirati oko
neke druge tocke? Neka je S tocka razlicita od S. Rotiranje oko tocke S se vrsi na ovaj nacin:
1. translatiramo tocku S u ishodiste
2. izvedemo rotaciju oko ishodista
3. napravimo inverz translacije, odnosno vratimo se u tocku S.
Dakle rotacija oko tocke S se izvodi ovim redom
RS = TOS · SO · T−1OS (3.13)
Primjer 3.0.5. Neka je dan trokut u koordinatnom sustavu koordinata vrhova:
A = (0, 0) B = (1, 1) C = (−0.5, 0.5)
12
Zelimo ga rotirati oko tocke S = (1,−0.5, 0) za kut α = −90◦
Prvi korak nam je translatirati tocku S u ishodiste za vektor−→OS Matrica translacije ce
izgledati ovako:
T =
1 0 10 1 −0.50 0 1
Ako je sin(−90◦) = −1, a cos(−90◦) = 0 matrica rotacije ce imati oblik:
Rα =
0 1 0−1 0 00 0 1
Na kraju radimo inverz rotacije:
T−1 =
1 0 −10 1 0.50 0 1
A trokut cemo opisati matricom
P =
0 1 −0.5 00 1 0.5 01 1 1 1
Dakle:
T ·Rα · T−1 =
1 0 10 1 −0.50 0 1
· 0 1 0−1 0 00 0 1
·1 0 −1
0 1 0.50 0 1
=
0 1 1.5−1 0 0.50 0 1
P ′ = T ·Rα · T−1 · P =
0 1 1.5−1 0 0.50 0 1
·0 1 −0.5 0
0 1 0.5 01 1 1 1
=
1.5 2.5 2 1.50.5 −0.5 1 0.51 1 1 1
Trazeni trokut ima koordinate:
A′ = (1.5, 0.5) B′ = (2.5,−0.5) C ′ = (2, 1)
13
x
y
−1 1 1.5 2 2.5 3
−1
−0.5
0.5
1
A
B
C
S
A′
B′
C ′
Slika 3.3 Rotacija oko tocke S za kut α = −90◦
3.1 Svojstva matrice rotacije
Matrica rotacije
R =
[cosα − sinαsinα cosα
](3.14)
je:
• Realna matrica (elementi su joj realni brojevi).
• Kvadratna matrica
(Kvadratna matrica je matrica koja ima isti broj redaka i stupaca)
• Ortogonalna matrica je ona matrica za koju vrijedi da je produkt te matrice i njoj
transponirane matrice jednak jedinicnoj matrici, tj. ako je:
RTR = I = RRT (3.15)
gdje je:
RT - transponirana matrica
Matrica AT je transponirana matrica matrice A ako vrijedi
(AT )i,j = (A)j,i ∀ i, j
Iz ovoga se vidi da je inverzna matrica matrice rotacije ustvari transponirana ma-
trica. Primijetimo da ako zelimo mijenjati smjer rotacije (u smjeru kazaljke na satu -
negativan smjer) moramo samo znati inverznu matricu R−1, sto je ustvari:
R−1 = RT
14
Dakle ortogonalna matrica cuva duljinu vektora. Vektori stupci su im ortonormirani,
tj. jedinicni i okomiti sto i vrijedi za vektore retke.
Za nju vrijedi:
– Produkt ortogonalnih matrica je ortogonalna matrica.
– Ortogonalna matrica je komutativna sa svojom transponiranom matricom.
Postoje samo dvije vrste ortogonalnih matrica drugog reda, to su: matrica rotacije
i matrica zrcaljenja s obzirom na pravac kroz ishodiste.
Svaka ortogonalna matrica povlaci i regularnost.
– Regularna, tj. detR 6= 0. Sto znaci da je transformacija ravnine bijektivna.
Bijektivnost transformacije znaci da nema lijepljenja razlicitih tocaka u istu tocku
(injektivnost) i da su sve tocke u dolaznoj ravnini pogodene (surjektivnost).
Posebno svojstvo matrice rotacije je:
detR = 1
zbog
detR = ad− bc = (cosα · cosα)− (sinα) · (− sinα) = cos2 α + sin2 α = 1
Produkt dvije matrice rotacije je opet matrica rotacije:
(R1R2)T (R1R2) = RT
2 (RT1R1)R2 = I
det(R1R2) = (detR1)(detR2) = 1
Matrice rotacija (n=2) komutiraju npr., svejedno je dali rotiramo najprije za kut α pa zatim
za kut β ili obratno. U svakom slucaju mi trebamo rotirati za kut α + β. U jeziku matrica
to znaci: [cosα − sinαsinα cosα
] [cos β − sin βsin β cos β
]=[
cosα cos β − sinα sin β − cosα sin β − sinα cos βsinα cos β + cosα sin β − sinα sin β + cosα cos β
]iz cega zakljucujemo da je to ustvari[
cos(α + β) − sin(α + β)sin(α + β) cos(α + β)
]Sto su ustvari adicioni teoremi za trigonometrijske funkcije:
cos(α + β) = cosα cos β − sinα sin β
sin(α + β) = sinα cos β + cosα sin β
15
4 3D rotacija
Rotirajuci objekti i virtualne kamere su glavni dio kompjuterske animacije i igara. 3D
rotacija je malo kompliciranija od 2D jer moramo odrediti os rotacije. U 2D os rotacije je
uvijek okomita na XY ravninu, sto bi bila os Z, ali u 3D os rotacije bi mogla biti bilo koja
proizvoljna os. Zato najprije pogledajmo rotiranje oko osnovnih osi (X, Y, Z) a onda oko
proizvoljne osi.
4.1 Rotiranje oko osnovnih osi
Neka su (x, y, z) koordinate tocke M u starom, a (x′, y′, z′) koordinate te tocke u novom
koordinatnom sustavu.
• Rotacija oko z-osi
Rotacija oko z-osi je identicna rotaciji u 2D slucaju:
Slika 4.1 Rotacija oko z-osi
Rz =
cosα − sinα 0sinα cosα 0
0 0 1
(4.1)
Prijelaz tocke (x, y, z) u novu tocku (x′, y′, z′) za kutα je:
x′y′z′
=
cosα − sinα 0sinα cosα 0
0 0 1
xyz
=
x cosα− y sinαx sinα + y cos
zα
(4.2)
Inverz rotacije odnosno povratak tocke (x′, y′, z′) u pocetnu tocku (x, y, z) za kutα je:xyz
=
cosα sinα 0− sinα cosα 0
0 0 1
x′y′z′
=
x′ cosα + y′ sinα−x′ sinα + y′ cos
z′
(4.3)
16
• Rotacija oko x-osi
Rotacija oko x-osi izgleda kao i rotacija oko z-osi ako zamijenimo:
– X os sa Y osi
– Y os sa Z osi
– Z os sa X osi
Slika 4.2 Rotacija oko x-osi
Rx =
1 0 00 cosα − sinα0 sinα cosα
(4.4)
Prijelaz tocke (x, y, z) u novu tocku (x′, y′, z′) za kutα je:
x′y′z′
=
1 0 00 cosα − sinα0 sinα cosα
xyz
=
xy cosα− z sinαy sinα + z cosα
(4.5)
Inverz rotacije - povratak tocke (x′, y′, z′) u tocku (x, y, z) za kutα je:
xyz
=
1 0 00 cosα sinα0 − sinα cosα
x′y′z′
=
x′
y′ cosα + z′ sinα−y′ sinα + z′ cosα
(4.6)
• Rotiranje oko Y-osi
Rotacija oko Y-osi izgleda kao i rotacija oko Z-osi ako zamijenimo:
– X os sa Z osi
– Y os sa X osi
– Z os sa Y osi
17
Slika 4.3 Rotacija oko y-osi
Ry =
cosα 0 sinα0 1 0
− sinα 0 cosα
(4.7)
Prijelaz tocke (x, y, z) u novu tocku (x′, y′, z′) za kut α je:
x′y′z′
=
cosα 0 sinα0 1 0
− sinα 0 cosα
xyz
=
x cosα + z sinαy
−x sinα + z cosα
(4.8)
Inverz rotacije - povratak tocke (x′, y′, z′) u tocku (x, y, z) za kut α je:xyz
=
cosα 0 − sinα0 1 0
sinα 0 cosα
x′y′z′
=
x′ cosα− z′ sinαy′
x′ sinα + z′ cosα
(4.9)
18
4.2 Eulerovi kutovi
Promotrimo bilo koja dva jednako orijentirana kartezijeva sustava s zajednickim ishodistem
(sustavi Oxyz i OXY Z). Iz pocetnog sustava Oxyz mozemo prijeci u novi sustav OXY Z s
pomocu triju rotacija u ovom redoslijedu. Opisimo ih:
1. Rotacija za kut ϕ oko osi Oz. Pri ome os Ox prelazi u os Ox1, a os Oy u os Oy1.
Pravac Ox1 dobiven je kao presjek ravnina Oxy i OXY
2. Rotacija za kut θ oko osi Ox1. Pri tom os Oy1 prelazi u Oy2, a os Oz u konacan polozaj
- os OZ
3. Rotacija za kut ψ oko osi OZ, nakon koje os Ox1 prelazi u u OX, a os Oy2 u os OY .
Slika 4.4 Prijelaz izmedu dva kartezijeva jednako orijentirana sustava sa zajednickimishodistem uz pomoc triju rotacija.
Kutovi ϕ, θ, ψ nazivaju se Eulerovi kutovi.
• ϕ head ili yaw (smjer) (rotacija oko z-osi)
• θ pitch (dubina, elevacija)(rotacija oko y-osi)
• ψ roll (okret, nagib) (je rotacija oko z-osi lokalnog koordinatnog sustava, ali nakon
Yaw i Pitch rotacije)
19
Slika 4.5 Eulerovi kutevi
Napisimo matricu ove transformacije.
Neka su (x, y, z) koordinate tocke M u starom, a (X, Y, Z) koordinate te tocke u koordinat-
nom sustavu.
Neka su T1 ,T2, T3 matrice operatora rotacija opisanih u pojedinom koraku, tad vrijediXYZ
= T3T2T1
xyz
(4.10)
Matrica T1 odgovara operatoru rotacije oko trece osi, za kut ϕ.
T1 =
cosϕ − sinϕ 0sinϕ cosϕ 0
0 0 1
(4.11)
Primijetimo da je napisana rotacija ustvari rotacija oko z-osi identicna rotaciji u 2D
prostoru.
Matrica T2 odgovara operatoru rotacije oko prve osi, za kut θ
T2 =
1 0 00 cos θ − sin θ0 sin θ cos θ
(4.12)
Matrica T3 predstavlja operator rotacije za kut ψ oko trece osi:
T3 =
cosψ − sinψ 0sinψ cosψ 0
0 0 1
(4.13)
Vrijednosti Eulerovih kutova ogranicene su na intervale:
0 ≤ ϕ ≤ 2π, 0 ≤ θ ≤ π, 0 ≤ ψ ≤ 2π
20
Umnozak
T = T1T2T3 (4.14)
predstavlja trazenu matricu transformacije pocetnog u novi koordinatni sustav.
Redoslijed rotacija je vazan jer matrice reda veceg od 2 prilikom mnozenja ne komutiraju.
Svaka od ovih matrica ima svojstva iz prethodnog dijela (specijalne ortogonalne 3×3 matrice
sa determinantom 1), pa je i njihova kompozicija takoder ortogonalna matrica sa navedenim
svojstvima.
Mnozenjem gornjih matrica dobivamo
T =
cosϕ cosψ − sinϕ cos θ sinψ − sinϕ cosψ − cosϕ cos θ cosψ sin θ sinψcosϕ sinψ + sinϕ cos θ cosψ − sinϕ sinψ − cosϕ cos θ cosψ − sin θ cosψ
sinϕ sin θ cosϕ sin θ cos θ
(4.15)
Inverzna transformacija sustava OXY Z u sustav Oxyz reprezentirana je inverznom ma-
tricom
T−1 = T T
sto je:
T−1 =
cosϕ cosψ − sinϕ cos θ sinψ cosϕ sinψ + sinϕ cos θ cosψ sinϕ sin θ− sinϕ cosψ − cosϕ cos θ cosψ − sinϕ sinψ − cosϕ cos θ cosψ cosϕ sin θ
sin θ sinψ − sin θ cosψ cos θ
(4.16)
4.3 Rotiranje oko proizvoljne osi
Rotiranje oko proizvoljne osi je slicno 2D rotiranju oko proizvoljne tocke.
Postupak rotacije radi na principu:
1. izvesti transformaciju koja ce uskladiti os rotacije sa jednom od kordinatnih osi (x, y, z)
2. izvesti rotaciju oko odabrane osi
3. napraviti inverz iznesenog pod (1)
Specijalni slucaj:
Os rotacije paralelna je sa koordinatnom osi. Ovo je analogno 2D rotaciji oko tocke. Koraci
su slijedeci:
1. translatirati os rotacije na koordinatnu os
2. izvesti rotaciju
3. napraviti inverz translacije
U generalnom slucaju, rotiranje oko proizvoljne osi za kut θ je dosta kompliciranije.
Najprije nam treba os rotacije definirana kroz dvije tocke T1 = (x1, y1, z1), T2 = (x2, y2, z2)
(cine vektor ~v).
21
Slijede koraci:
1. translatirati tako da os rotacije prolazi kroz ishodiste koordinatnog sustava
2. rotirati tako da je os rotacije poravnata sa jednom od osnovnih koordinatnih osi
3. izvesti rotaciju objekta oko koordinatne osi
4. napraviti inverz rotacije napisane pod 2
5. napraviti inverz translacije napisane pod 1
Slijedeci navedenu proceduru na kraju dobivamo:
Matrica rotacije oko proizvoljne osi
R =
a2 + cos θ(1− a2) ab(1− cos θ)− c sin θ ac(1− cos θ) + b sin θab(1− cos θ) + c sin θ b2 + cos θ(1− b2) bc(1− cos θ)− a sin θac(1− cos θ)− b sin θ bc(1− cos θ) + a sin θ c2 + cos θ(1− c2)
(4.17)
Gdje je os rotacije je definirana kao:
~v = ai+ bj + ck
Nuzno je da je ‖v‖ = 1 zbog svojstva rotacije da ocuva udaljenost (bez skaliranja)
x′y′z′
=
a2 + cos θ(1− a2) ab(1− cos θ)− c sin θ ac(1− cos θ) + b sin θab(1− cos θ) + c sin θ b2 + cos θ(1− b2) bc(1− cos θ)− a sin θac(1− cos θ)− b sin θ bc(1− cos θ) + a sin θ c2 + cos θ(1− c2)
xyz
(4.18)
22
Provjerimo matricu rotacije oko proizvoljne osi kroz par primjera
Primjer 4.0.6. Neka je θ = 90◦,
v =
001
os rotacije x =
100
neki vektor.
Sto znaci da hocemo rotirati x oko v, ili oko e3-osi, za 90◦.
Kako znamo da je cos 90◦ = 0 i sin 90◦ = 1 racunamo:
R =
0 −1 01 0 00 0 1
Iz cega je
x′ =
010
Primjer 4.0.7. Neka je θ = 90◦,
v =
1√3
1√3
1√3
os rotacije x =
100
neki vektor.
Sto znaci da hocemo rotirati x oko v, ili oko e3-osi, za 90◦.
Kako znamo da je cos 90◦ = 0 i sin 90◦ = 1 racunamo:
R =
13
13− 1√
313
+ 1√3
13
+ 1√3
13
13− 1√
313− 1√
313
+ 1√3
13
Iz cega je
x′ =
13
13
+ 1√3
13− 1√
3
Primjer 4.0.8. Pogledajmo rotaciju za −90◦ oko e1-osi sa matricom rotacije R1 i rotaciju
za −90◦ oko e3-osi sa matricom rotacije R3.
R1 =
1 0 00 0 10 −1 0
R3 =
0 1 0−1 0 00 0 1
Dakle imamo kompoziciju rotacija
R3R1 =
0 0 1−1 0 00 −1 0
R1R3 =
0 1 00 0 11 0 0
23
e1
e2
e3
R3R1I
R1
e1
e2
e3
R1R3
R3
I
Slika 4.6 3D rotacija matrica ne komutira
Zakljucujemo da je
R3R1 6= R1R3
sto se vidi i iz slike
Lijeva stana slike prikazuje slijedecu transformaciju od
v =
001
R1v =
010
i R3R1v =
100
Desna slika prikazuje transformaciju od v po drugom redoslijedu operacija vrtnje
R3v =
001
i R1R3v =
010
Dakle vazan nam je redoslijed operacija.
24
Poglavlje II
TikZ i PGF
Korisnici TEX i LATEX programa oduvijek su imali potrebu za ubacivanjem grafike u svoje
dokumente. Vecina je to radila na najjednostavniji nacin, najprije se ostavi prazno mjesto
na papiru pa se u nekom drugom programu isprinta slika te zalijepi, pa zatim fotokopira...
Naravno, oni naprednijeg znanja znali su da se slika moze ubaciti direktno u TEX kao datoteka
odredenog tipa sa slijedecom naredbom:
\begin{figure}
% Requires \usepackage{graphicx}
\includegraphics[width=]{}\\
\caption{}\label{}
\end{figure}
Ovako izvedeno ubacivanje slike nije tako lose, ali zasto se crtez ne bi mogao nacrtati
direktno u TEX-u odnosno LATEX-u?
Za izvesti ovako nesto postoji desetak sustava. Cilj takvih sustava je stvaranje grafike
koja se jednostavno ukljucuje unutar LATEX naredbi i ne zahtjeva vanjski program za crtanje.
Naravno, svaku dobivenu sliku na opisan nacin vidimo kao vektorsku grafiku koja je otporna
na povecavanja ili pak promjene u dokumentu. Dakle, starim nacinom umetanja slike iz neke
datoteke ubacujemo rastersku grafiku koja ovim navedenim radnjama (povecavanjem) gubi
na kvaliteti. Ako zelimo staviti vecu sliku u dokument to onda zahtjeva i vecu rezoluciju
slike sto povlaci veci izlazni dokument - sto je naravno nepotrebno.
U svom diplomskom radu cu opisati jedan moderniji sustav za crtanje grafike pod nazivom
TikZ & PGF (zadnja verzija 2.0, 20.2.2008) koji zadovoljava navedene uvjete i kao rezultat
moze dati PDF, PostScript i SVG.
Vec iz samog naziva se vidi da se sustav sastoji iz dva sustava.
PGF nudi niz grafickih funkcija niske razine (engl. low-level graphics primitives), dok
TikZ daje korisnicko sucelje visoke razine. U TikZ-u se pisu naredbe visoke razine, koje se
onda pretvaraju u niz PGF upravljackih naredbi koje se izvrsavaju.
TikZ radi na principu naredbi koje povezuju tocke u ravnini ili upotreba slozenijih ob-
jekata kao sto su pravokutnici, kruznice, lukovi, tekst, mreze, Bezier-ove krivulje i sl. Sto
25
znaci da imamo okolinu u kojoj nesmetano mozemo koristiti TEX-ove fontove, simbole i
matematicke oznake unutar tako generirane grafike.
TikZ naredbe pisu se na isti nacin kao LATEX naredbe, koje imaju svoj poseban (tikzpic-
ture) okolis (engl. environment), slican onom grafickom ili matematickom u LATEX-u.
Primjer dokumenta napisanog u LATEX-u temeljenog na TikZ-ovom okolisu.
\documentclass[11pt]{article}
...
\usepackage{tikz}
...
\begin{document}
...
\begin{tikzpicture}[options]
...
\end{tikzpicture}
...
\end{document}
Na pocetku LATEX dokumenta ne smijemo zaboraviti ucitati paket TikZ, te ostale TikZ-ove
pakete ovisno o slozenosti slike.
Ako ne radimo ”slozenu” grafiku, postoji i naredba za ”malu grafiku” koju mozemo
koristiti kada zelimo u redu teksta staviti neki jednostavan crtez koji bi imao ulogu neke
oznake kao na primjer ovaj trokutic . To izvodimo na slijedeci nacin:
\tikz[<options>]{<commands>};
Postoji mogucnost unosa grafike iz tex datoteke na nacin da se upise npr:
\input tikz.tex
Toliko o uvodu u TikZ, a sada pogledajmo naredbe s kojima cemo stvarati crteze.
26
5 Odredivanje tocaka i staza
Osnovna ideja koja se koristi u TikZ-u su tocke i staze.
Tocke mozemo definirati na cetiri nacina:
• preko kartezijevih koordinata
• preko polarnih koordinata
• preko relativnih tocaka
• preko imenovanih tocaka
Definiranje tocke preko kartezijevih koordinata obavljamo uporabom obicnih zagrada:
(x, y), gdje je x udaljenost od ishodista po x-osi, a y udaljenost od ishodista po y-osi. Po
zadanoj vrijednosti udaljenosti su izrazene u centimetrima.
x
y
(x, y)
Slika 5.1 Kartezijeve koordinate u TikZ-u
Tocka zadana u polarnim koordinatama, odredena je kutom α u stupnjevima i udaljenosti
od ishodista. (α : r) odnosno (kut : modul). Jedinica mjere udaljenosti u ovom slucaju nema
zadanu vrijednost tako da mora biti odredena u kojoj je jedinici mjere.
x
y
r(α, r)
α
Slika 5.2 Polarne koordinate u TikZ-u
27
Jedinice mjere koje mozemo koristiti u crtezima
mm milimetri ≈ 1/25 inchcm centimetri = 10 mmin inch = 35.4 mmpt point (tocka) ≈ 1/72 inch ≈ 1/3 mm
em priblizna sirina slova ”M” trenutnog fontaex priblizna visina slova ”x” u trenutnom fontu
Slika 5.3 Tablica mjera koje se koriste u TikZ-u
5.1 Naredba path - staza
Sto znaci staza (path)? Staza je put koje opisuju neke tocke. Bitno je napomenuti da
staza ne crta odnosno ne radi nista sto mozemo vidjeti nego opisuje nevidljive (imagi-
narne) oblike kao sto su npr. (koordinata, linija, kruznica, cvor, pravokutnik ...). Naredba
\path (koordinate); pamti samo koordinate u memoriji. Tako odredene oblike onda
mozemo nacrtati, ispuniti, ... odredenim naredbama unutar staze.
5.2 Naredba draw - crtaj
Za prikaz koordinata slikovno moramo upotrijebiti naredbu ”draw” draw (crtaj) sto zanci
da crta ”olovkom” po stazi.
5.3 Crtanje linija
Naredba ”--” povlaci liniju izmedu dvaju koordinata izmedu kojih se nalazi. Tako da na ovaj
nacin mozemo uzastopno povezivati koordinate linijama, od pocetne do zavrsne koordinate.
Slika 5.4 Oblik zadan pomocu koordinata naredbom path i opcijom draw
\begin{tikzpicture}
\path[draw] (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- (1,0);
\end{tikzpicture}
ili
28
\begin{tikzpicture}
\path (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- (1,0) [draw];
\end{tikzpicture}
Ovu naredbu za crtanje mozemo napisati i skraceno da odmah pozovemo naredbu \draw
bez pozivanja staze na nacin:
\begin{tikzpicture}
\draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- (1,0);
\end{tikzpicture}
Za zatvaranje objekta linijom, bez da upisujemo ponovno pocetnu koordinatu, radimo s
naredbom cycle koju upisujemo na kraju naredbe. Osim nepotrebnog pisanja zadnje/prve
koordinate ipak postoji razlika koja se zatvara fino oblik, prikazano na slijedecoj slici.
Slika 5.5 Razlika ne uporabe i uporabe naredbe cycle
\begin{tikzpicture}[line width=5pt]
\draw (0,0) -- (1,0) -- (1,1) -- (0,0);
\draw (2,0) -- (3,0) -- (3,1) -- cycle;
\end{tikzpicture}
5.4 Imenovane koordinate
Nekad je potrebno nekim cesto upotrebljavanim koordinatama dodijeliti ime. To radimo na
slijedeci nacin:
\path (koordinata) coordinate (ime koordinate); sto na primjeru izgleda ovako:
\path (0,0) coordinate (ishodiste);
\path (35:1cm) coordinate (P);
\path (3em,2ex) coordinate (Q);
Vidi se da ovaj nacin definiranja tocke prihvaca i kartezijeve i polarne koordinate.
29
Primjer 5.0.9. Nacrtaj pravilan peterokut preko imenovanih koordinata.
Slika 5.6 Peterokut nacrtan naredbom draw preko imenovanih tocaka
\begin{tikzpicture}
% Definiranje tocaka peterokuta
\path (0,0) coordinate (ishodiste);
\path (0:1cm) coordinate (P0);
\path (1*72:1cm) coordinate (P1);
\path (2*72:1cm) coordinate (P2);
\path (3*72:1cm) coordinate (P3);
\path (4*72:1cm) coordinate (P4);
% Opisivanje peterokuta
\draw (P0) -- (P1) -- (P2) -- (P3) -- (P4) -- cycle;
% pravljenje zvijezde
\draw (ishodiste) -- (P0) (ishodiste) -- (P1) (ishodiste) -- (P2)
(ishodiste) -- (P3) (ishodiste) -- (P4);
\end{tikzpicture}
30
5.5 Relativne koordinate
Nekad imamo potrebu dodati nekoj koordinati neku vrijednost. Za to nam sluze relativne
koordinate.
Q
4y
P4x
r
Q
Pα
Slika 5.7 Relativne koordinate
\path (P) ++(Dx,Dy) coordinate (Q);
\path (P) +(:r) coordinate (Q);
Ako dodamo znak "++" ispred koordinate vrijednost nove koordinate biti ce uvecana za
tu koordinatu u odnosu na prethodnu.
Ako stoji samo jedan "+" onda se nova koordinata dobiva zbrajanjem sa pocetnom ko-
ordinatom, sto se vidi u primjeru:
\begin{tikzpicture}
% mijenjanje koordinate u odnosu na prethodnu koordinatu
\draw (0,0) -- ++(1,0) -- ++(1,1) -- ++(1,-1);
% mijenjanje koordinate u odnosu na pocetnu koordinatu
\draw (0,0) -- +(1,0) -- +(0,-1) -- +(-1,0) -- +(0,1);
\end{tikzpicture}
Slika 5.8 Prikaz relativnih koordinata ”+” i ”++”
31
5.6 Naredba okomito-vodoravno odnosno vodoravno-okomito
Osim klasicne ravne linije mozemo koristiti okomito-vodoravno liniju ”|-” odnosno vodoravno-
okomito ”-|”. Ovom naredbom se povezuju dvije tocke pod pravim kutom, redoslijedom
povezivanja koji mi odredimo najprije vodoravno ili okomito.
Slika 5.9 Primjer koristenja crtanja linije pod pravim kutom
\begin{tikzpicture}
\draw (0,0) -| (1,1);
\draw (2,0) |- ++(1,1);
\end{tikzpicture}
32
6 Slozeniji graficki oblici
Osim vec spomenutih pravocrtnih linija mogu se crtati i ostali graficki oblici kao sto su:
• Mreze i pravokutnici
• Kruznice i elipse
• Kutevi
• Bezier krivulje...
6.1 Grid - Mreza
Eng. grid = mreza. Mreza nam sluzi kao orijentir da bi nam olaksala crtanje. Ona se stavlja
u pozadinu, sto znaci da se stavlja kao prva naredba.
Inace redoslijed izvrsavanja naredbi se gleda od gore prema dolje, tako da je prva naredba
ustvari na dnu crteza.
Struktura naredbe je:
\draw (P) grid (Q);
Gdje je P pocetna koordinata, a Q zavrsna koordinata. U uglatim zagradama stavljamo
opcije mreze, postavljen je korak iscrtavanja (step) i boja. Opcenito svim naredbama se
u uglatim zagradama odreduju svojstva. Ako zelimo primijeniti set opcija na citavu sliku
opcije cemo staviti u uglate zagrade odmah nakon pocetka definiranja TikZ okolisa na nacin:
\begin{tikzpicture}[opcije]
Slika 6.10 Mreza
\begin{tikzpicture}
\draw[step=0.25cm,color=gray] (-1,-1) grid (1,1);
\draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle;
\end{tikzpicture}
33
6.2 Rectangle - pravokutnik
Za crtanje pravokutnika upotrebljavamo naredbu
\draw (P) rectangle (Q);
Slika 6.11 Pravokutnici
\begin{tikzpicture}
\draw (0,0) rectangle (1,1)
rectangle (3,2)
rectangle (4,3);
\end{tikzpicture}
Primijetimo da i ovdje vrijedi svojstvo povezivanja koordinati naredbom, tako da prvi
pravokutnik ide od (0, 0) do (1, 1) a drugi nastavlja od te tocke pa do (3, 2)...
6.3 Circle - Kruznica
Kod crtanja kruznice upotrebljava se naredba
\draw (a,b) circle (r);
Gdje je (a,b) koordinata sredista a r polumjer kruznice.
Slika 6.12 Kruznice sa istim sredistem
\begin{tikzpicture}
\draw (0,0) circle (1cm)
circle (0.6cm)
circle (0.2cm);
\end{tikzpicture}
34
6.4 Elipse - elipsa
Kod elipse situacija je slicna:
\draw (a,b) ellipse (pol1 and pol2);
Definirana je s centrom, malom i velikom polu osi.
Slika 6.13 Elipse zadane s istim centrom i razlicitim polu osima
\begin{tikzpicture}
\draw (0,0) ellipse (2cm and 1cm)
ellipse (0.5cm and 1 cm)
ellipse (0.5cm and 0.25cm);
\end{tikzpicture}
6.5 Arc - kruzni luk
Kod definiranja kruznog luka imamo slijedecu naredbu:
\draw (P) arc (od kut:do kut:polumjer);
Slika 6.14 Kombinacija kruznog odsjecka i isjecka
\begin{tikzpicture}
\draw (0:1cm) -- (0:2cm)
arc (0:60:2cm) -- (60:1cm)
arc (60:0:1cm);
\end{tikzpicture}
35
6.6 Controls - Bezier-ove krivulje
Za crtanje Bezier-ovih krivulja potrebne su nam tocke upravljanja ”..” (controls) kod kojih
postoji pocetna (P) i zavrsna (Q) tocka, a dodatne dvije tocke (C i D) sluze za upravljanje
nagibom i smjerom krivulje.
\draw (P) .. controls (C) and (D) .. (Q);
Naravno da koordinate (C) i (D) mozemo zadati polarno s cime dobivamo i bolju kontrolu
krivulje:
\draw (P) .. controls +(a:r1) and +(b:r2) .. (Q);
Slika 6.15 Kombinacija kruznog odsjecka i isjecka (tocke prikazuju tocke zakrivljenosti)
\begin{tikzpicture}
\draw (0,0) .. controls (1,1) and (2,1) .. (2,0);
\end{tikzpicture}
36
7 Boje
Za bojanje ruba, oblika ili teksta koristimo opciju color=ime boje.
Opcenito opcije upisujemo u uglatim zagradama ”[]”. Ako se uglate zagrade pisu nakon
naredbe odnosit ce se samo na tu naredbu, ako u uglatim zagradama zadamo set opcija
nakon tikzpicture okolisa, primijenit ce se na citav okolis.
Svaka boja ima svoje ime na engleskom jeziku. Zbog cestog koristenja ove opcije dovoljno
je samo napisati ime boje bez da se upise color=.
Osim cistih boja dozvoljeno je mijesanje boja zahvaljujuci paketu xcolor. Zelimo li boju
sastavljenu od recimo zelene (20%) i bijele (80%) napisat cemo na nacin green!20!white.
Boju mozemo definirati u gray (nijanse sive) i RGB (Red-Green-Blue=crveno-zeleno-
plavo) sustavu. Definiranje se izvodi na nacin:
\definecolor{orange}{rgb}{1,0.5,0}
7.1 Fill - ispuna
Kruznica prelazi u krug ispunom (bojanjem), odnosno umjesto \draw naredbe koristi se
\fill odnosno \path[fill]. Za obrub i ispunu odjedanput upotrebljava se kombinaciju
naredbi na ove nacine:
\path [draw,fill] (0,0) circle (1cm);
\path [draw] [fill] (0,0) circle (1cm);
\path [fill] (0,0) circle (1cm) [draw];
\draw [fill] (0,0) circle (1cm);
\fill (0,0) [draw] circle (1cm);
\filldraw (0,0) circle (1cm);
Slika 7.16 Naredba fill, set kombinacija naredbi koje rade isto
Za nacrtati crveni krug koristi se naredba \fill i dodaje opciju da crta crvenom bojom.
Za nacrtati 20% zuti kvadrat s crvenim obrubom, kombinacija naredbi \fill i \draw.
\path [fill=red] (0,0) circle (1cm);
\path [draw=red, fill=yellow!20] (2,-1) rectangle (4,1);
ili ovako
37
Slika 7.17 Naredba fill i u kombinaciji s draw naredbom
Slika 7.18 Zatvaranje oblika naredbom fill
\filldraw [draw=red, yellow!20] (2,-1) rectangle (4,1);
\draw [red, fill=yellow!20] (2,-1) rectangle (4,1);
Naredba \fill zatvara stazu ispunom, dok obrub ostavlja kakav je.
\begin{tikzpicture}[fill=yellow!20]
\filldraw (0,0) -- (1,1) -- (2,1);
\filldraw (4,0) circle (.5cm) (4.5,0) circle (.5cm);
\filldraw[even odd rule] (6,0) circle (.5cm) (6.5,0) circle (.5cm);
\filldraw (8,0) -- (9,1) -- (10,0) circle (.5cm);
\end{tikzpicture}
7.2 Shade - sjencenje
Osim naredbe fill koja cisto boja, mozemo koristiti i naredbu shade koja boja s prijelazom
boja. Ova naredba se moze koristiti i s naredbom draw ali ce se prvo staza osjenciti pa zatim
ocrtati. Koristiti ovu naredbu zajedno s naredbom fill nema smisla, ako se ipak proba kao
rezultat se dobiva greska.
Slika 7.19 Sjencenje oblika
\begin{tikzpicture}
\shade (0,0) circle (1cm);
\shadedraw (3,-1) rectangle (5,1);
\end{tikzpicture}
38
7.3 Vrste sjencenja
Spomenuti nacin sjencenja omogucava jedan izbor sjencenja od nijanse sive do bijele boje
i to u smjeru od gore prema dolje. Naravno da postoje opcije kojima mozemo obogatiti
sjencenje.
axis ovo je osnovni oblik sjencenja u kojoj boja prelazi izmedu tri horizontalne linije (gornja,
sredina, donja). Zadana gornja boja je siva, donja bijela, a srednja je izmedu gornje i
donje boje.
Slika 7.20 Sjenjcenje s opcijom axis
\tikz \shadedraw [shading=axis] (0,0) rectangle (1,1);
Shading angle - Ova opcija rotira samo sjenjcenje unutar staze, a stazu ostavlja kakva je.
Ova opcija ce dakle promijeniti smjer sjenjcenja na recimo 90◦.
Slika 7.21 Sjenjcenje s opcijama axis i angle
\tikz \shadedraw [shading=axis, shading angle=90] (0,0) rectangle (1,1);
Color - Za neku drugu boju osim zadane (crne) upotrijebit cemo ovu opciju. Kada upotri-
jebimo ovu opciju dogada se slijedece:
1. ukljucuje se shade naredba
2. ukljucuje se shading=axis opcija
3. kut rotacije sjenjcenja je postavljen na 0.
Postoje slijedece pozicije boja:
top color - postavlja danu boju kao vrha objekta
bottom color - postavlja danu boju kao dno objekta
middle color - postavlja danu boju u sredine objekta. Ukoliko se bira ova opcija
zajedno sa opcijama top i bottom, onda se ova opcija mora staviti zadnja u listi,
inace se ne dobiva zeljeni rezultat zbog toga sto opcije top i bottom same odreduju
srednju boju na osnovu gornje i donje boje.
39
Slika 7.22 Sjenjcenje s korisnickim izborom boja top/bottom/middle
\tikz \draw[top color=white,bottom color=black,middle color=red]
(0,0) rectangle (2,1);
Radial - Radijalno sjencenje je od sredista objekta prema rubovima. Zadana sredisnja boja
je siva, a vanjska bijela.
inner color - postavlja danu boju kao unutarnju boju objekta
outer color - postavlja danu boju kao vanjsku boju objekta.
Ako su ukljucene ove opcije bojanja odmah se zna da se koristi radijalno sjenjcenje
pa je nepotrebno pisati shading=radial
Slika 7.23 Radialni tip sjenjcenja s izborom outer/inner color
\begin{tikzpicture}
\draw[outer color=red,inner color=white]
(0,0) rectangle (2,1);
\begin{tikzpicture}
Ball Ovaj tip sjenjcenja ispunjava stazu u obliku kugle.
ball color - postavlja danu boju kao boju kugle objekta Ako je upotrijebljena ova
opcija nema potrebe pozivati naredbu ball jos jedanput.
Slika 7.24 Ball oblik sjenjcenja na krugu i kvadratu
\begin{tikzpicture}
\shade[ball color=white, draw=gray] (0,0) circle (1);
\shade[ball color=red] (1,0) circle (1);
40
\shade[ball color=black] (2,0) circle (1);
\shade[ball color=blue] (5,-1) rectangle (7,1);
\end{tikzpicture}
41
8 Linije
Linije mogu imati osim boje svoju debljinu, isprekidanost, zavrsetke...
8.1 Debljina linije
Slika 8.25 Opcije primjene debljina linija na razlicitim oblicima
\begin{tikzpicture}
\draw[line width=5pt] (0,1) -- (1cm,1.5);
\draw[ultra thin] (0,-1) -- (1,-1.5);
\path [draw, thick, fill=yellow!20] (2,-1) rectangle (4,1);
\end{tikzpicture}
ultra thin 0.1 ptvery thin 0.2 ptthin 0.4 ptsemithick 0.6 ptthick 0.8 ptvery thick 1.2 ptultra thick 1.6 pt
line width=5pt 5 pt
Tablica II.1 Nazivi raznih debljina linija
8.2 Krajevi linija
Linije mogu imati razlicite zavrsetke odnosno krajeve (eng. cap). Ovo svojstvo se moze
primijetiti samo kod debljih linija jer inace promjene nisu uocljive.\draw[line cap=rect, line width=5pt] (0,0) -- (1,0);
\draw[line cap=butt, line width=5pt] (0,.5) -- (1,.5);
\draw[line cap=round, line width=5pt] (0,1) -- (1,1);
42
8.3 Spojevi linija
Spojevi linija mogu biti takoder razliciti.
Slika 8.26 Razliciti spojevi linija
\begin{tikzpicture}[line width=10pt]
\draw[line join=round] (0,0) -- ++(60:2cm) -- ++(-60:2cm);
\draw[line join=bevel] (60:2) -- (0,0) -- (2,0);
\draw[line join=miter] (0,0) -- (2,0) -- ++(120:2);
8.4 Prekidi linija
Linije mogu biti isprekidane/iscrtane na slijedece nacine:
soliddotteddensely dottedloosely dotteddasheddensely dashedloosely dashed
Tablica II.2 Opcije iscrtkanosti linija
Prekidi mogu biti i zadani korisnicki:
Slika 8.27 Prekid linije zadan korisnicki
\begin{tikzpicture}[dash pattern=on 20pt off 10pt]
\draw[dash phase=0pt] (0pt,3pt) -- (3.5cm,3pt);
\draw[dash phase=10pt] (0pt,0pt) -- (3.5cm,0pt);
\end{tikzpicture}
43
8.5 Duple linije
Opcijom double crtaju se duple (dvostruke) linije. Naredba crta dvaput po stazi. Prvi puta
crta normalnom bojom koju zadamo, a drugi put zadajemo <core color> (boju jezgre)
koja je po zadanom bijela i crta preko prve linije.
Slika 8.28 Duple linije s raznim opcijama
\begin{tikzpicture}
\draw[very thick,double] (0,0) arc (180:90:1cm);
\draw[very thick,double distance=2pt] (1,0) arc (180:90:1cm);
\draw[thin,double distance=2pt] (2,0) arc (180:90:1cm);
\draw[draw=gray,double=yellow,very thick, double distance=4pt]
(3,0) arc (180:90:1);
\end{tikzpicture}
8.6 Zavrsetci na linijama - strelice
Linije mogu imati razlicite zavrsetke (eng. arrow):
Struktura naredbe je da se u opcijama ispred znaka ”-” stavimo oznaku za pocetak a iza
”-” oznaku za kraj zavrsetka ”strelice”.
Slika 8.29 Obicne strelice
\draw[->] (0,0) -- (1,0);
\draw[<->>] (0,0.3) -- (1,0.3);
Osim ovih osnovnih oblika strelica mogu se upotrebljavati i drugi oblici ucitani na pocetku
TEX dokumenta na nacin:
\usetikzlibrary{arrows} % ucitavanje TikZ-ovog paketa za strelice
44
Tada imamo izbor slijedecih oblika:
latex’ latex’ reversedstealth’ stealth’ reversedtriangle 90 open triangle 90
triangle 90 reversed open triangle 90 reversed
triangle 60 open triangle 60
triangle 60 reversed open triangle 60 reversed
triangle 45 open triangle 45
triangle 45 reversed open triangle 45 reversed
angle 90 angle 90 reversedangle 60 angle 60 reversedangle 45 angle 45 reversedhooks hooks reversed[-] ]-[(-) )-(o *diamond open diamond
Tablica II.3 Izbor oblika strelice iz usetikzlibrary (arrow)
Slika 8.30 Strelice
\begin{tikzpicture}[thick]
\draw[to reversed-to] (0,0) .. controls +(.5,0) and +(-.5,-.5) .. +(1.5,1);
\draw[[-latex reversed] (1,0) .. controls +(.5,0) and +(-.5,-.5) .. +(1.5,1);
\draw[latex-)] (2,0) .. controls +(.5,0) and +(-.5,-.5) .. +(1.5,1);
\end{tikzpicture}
45
9 Cvorovi
Za upotrebu oznaka u crtezima upotrijebit cemo cvorove.
Cvor (engl. node) je generalizirana koordinata, koja je karakterizirana oblikom, imenom
i tekstom.
Struktura naredbe se sastoji da se napise node iza recimo neke tocke kojoj zelimo dodijeliti
oznaku, zatim postavimo specifikacije u ”[ ]” i zatim tekst oznake u ”{ }”. Na tekst se
primjenjuju sva TEX-ova oblikovanja kao i pisanje matematickih formula unutar ”$ $”. U
slijedecem primjeru rijec ”text” je cvor koordinate (1, 1).
text
Slika 9.31 Cvor kao oznaka
\begin{tikzpicture}
\draw (0,0) node {text} -- (1,1);
\end{tikzpicture}
Struktura naredbe cvor izgleda ovako:
\path ... node[options](name) at (coordinate){text} ...;
gdje je
name - dodaje ime cvoru na koje se moze pozvati kasnije, slicno kao i sa dodjelom imena
koordinata
at na ovaj nacin se pridruzuje ime cvora sa koordinatom.
Osim toga cvor moze biti obrubljen, s ispunom...
text
a2 + b2 = c2 uokvireno i obojano
Slika 9.32 Cvor kao natpis
\begin{tikzpicture}
\draw (1,1) node [draw, circle, double, rounded corners, fill=green]{text}
-- (2,2) node [draw, fill=yellow]{$a^2+b^2=c^2$ uokvireno i obojano};
\end{tikzpicture}
Oblici kojima mozemo opisati cvor mogu biti razni. Osnovni oblik je pravokutnik. U
primjeru se vidi oblik kruga. Za elipsu se treba na pocetku dokumenta ukljuciti paket
pgflibraryshapes.
46
9.1 Pozicioniranje u cvoru
Prilikom postavljanja cvora na neku koordinatu, tekst ce biti smjesten u sredinu cvora.
Naravno da taj nacin pozicioniranja nije uvijek prikladan pa imamo mogucnosti smjestaja
teksta u odnosu na cvor. Prvi nacin smjestaja je uz pomoc sidra (eng. anchor). Ideja je
slijedeca, ovisno gdje se nalazi sidro brod je na suprotnoj strani. Brod ima ulogu teksta.
Moguca su slijedeca pozicioniranja, odredena stranama svijeta:
south west
north west
west
south
north
center
south east
north east
east
Slika 9.33 Opcije pozicioniranje teksta cvorova preko sidra
Sto na nekom primjeru izgleda ovako:
Prvi cvor
Drugi cvor
Slika 9.34 Pozicioniranje teksta cvora preko sidra
\begin{tikzpicture}
\draw (0,0) node[anchor=north east] {Prvi \v{c}vor}
rectangle (1,1) node[anchor=west] {Drugi \v{c}vor};
\end{tikzpicture}
Pozicioniranje sidra moguce je vrsiti jos preciznije, recimo za neki kut:
A
B
Slika 9.35 Pozicioniranje teksta cvora preko sidra za neki kut
\begin{tikzpicture}
\draw[o-o] (0,0) node[anchor=30] {A}
-- (30:3) node[anchor=-150] {B};
\end{tikzpicture}
47
Da se ne mora razmisljati gdje je sidro, a gdje brod, postoji i jednostavniji nacin pozi-
cioniranja ali bez toliko mogucnosti smjestaja. Jednostavno se u cvornim opcijama napise
gdje se nalazi tekst, npr.:
gore lijevo
dolje 1cm
Slika 9.36 Pozicioniranje teksta cvora uz odredenu udaljenost
\begin{tikzpicture}
\fill (0,0) circle (5pt) node[above left] {gore lijevo};
\fill (2,0) circle (2pt) node[below=1cm] {dolje 1cm};
\end{tikzpicture}
Mogucnosti smjestaja su slijedece:
above leftabove
below
rightleft
Slika 9.37 Kombinacije smjestaja teksta
Za raspored teksta (oznaka) duz neke linije nije nuzno racunati pa upisivati danu ko-
ordinatu kao cvor, nego se upotrebljava opcija pos. Vrijednosti pos imaju raspon od 0 do
1. Tako da vrijednost 0 postavlja tekst na samom pocetak, 1 na kraj, a ostale vrijednosti
izmedu 0 i 1 smjestaju tekst izmedu pocetka i kraja.
0
1/29/10
Slika 9.38 Smjstaj oznake duz neke linije
\begin{tikzpicture}
\draw (0,0) -- (3,1)
node[pos=0]{0} node[pos=0.5]{1/2} node[pos=0.9]{9/10};
\end{tikzpicture}
48
Kod naredbe -| i |- pozicija 0.5 se nalazi na lomu linije.
0
1/2 9/10
0 1/2
9/10
Slika 9.39 Upotreba opcije pozicioniranja teksta
\begin{tikzpicture}
\draw (0,0) |- (3,1)
node[pos=0]{0} node[pos=0.5]{1/2} node[pos=0.9]{9/10};
\draw (4,0) -| (7,1)
node[pos=0]{0} node[pos=0.5]{1/2} node[pos=0.9]{9/10};
\end{tikzpicture}
Neke cesto upotrebljavane pozicije su zamijenjene s rijecima:
at endvery near endnear end
midway
near start
very near start
at start
Slika 9.40 Pozicioniranja teksta uz rijeci
\begin{tikzpicture}
\draw (0,0) .. controls +(up:2cm) and +(left:3cm) .. (1,5)
node[at end] {at end}
node[very near end] {very near end}
node[near end] {near end}
node[midway] {midway}
node[near start] {near start}
node[very near start] {very near start}
node[at start] {at start};
\end{tikzpicture}
Ako zelimo da tekst slijedi krivulju odnosno da ima ulogu tangente, upotrijebit cemo
opciju sloped.
49
x
y
Slika 9.41 Pozicioniranja teksta uz rijeci
\begin{tikzpicture}[->]
\draw (0,0) -- (2,0.5) node[midway,sloped,above] {$x$};
\draw (2,-.5) -- (0,0) node[midway,sloped,below] {$y$};
\end{tikzpicture}
Cvor se moze rotirati za odredeni kut, opcijom rotate:
Rotirani krug
Krug
PravokutnikPravokutnik duzi
Slika 9.42 Rotirani cvorovi
\begin{tikzpicture}[fill=blue!20]
\draw[help lines] (-1,-2) grid (6,3);
\path (0,0) node(a) [circle,rotate=10,draw,fill=yellow] {Rotirani krug}
(3,-1) node(b) [circle,draw,fill] {Krug}
(2,2) node(c) [rectangle,rotate=20,draw,fill] {Pravokutnik}
(5,2) node(d) [rectangle,rotate=-30,draw,fill=red!20]
{Pravokutnik du\v{z}i};
\draw[thick] (a.east) -- (b) -- (c) -- (d);
\draw[thick,red,->] (a) |- +(1,3) -| (c) |- (b);
\draw[thick,blue,<->] (b) .. controls +(right:2cm) and +(down:1cm) .. (d);
\end{tikzpicture}
50
9.2 Label opcija
Cvorovi mogu biti zadani sa label i pin opcijom. Struktura je slijedeca:
/tikz/label=[{options}]{angle}:{text}
Unutar glavne naredbe node zadaje se label node naredba koja se smjesta u glavnu node
naredbu.
sredina
60◦
−90◦
Slika 9.43 Koristenje label opcije unutar cvora
\begin{tikzpicture}
\node [circle,draw,label=60:$60^\circ$,label=below:$-90^\circ$] {sredina};
\end{tikzpicture}
U primjeru se vidi da mogu koristiti smjerovi u kutovima i prije spomenutim left, right,
above, below...
Takoder za label opcije mogu se dodati sve dosad spomenute opcije kao bojanje i sl. Tada
opciju node moramo postaviti unutar {} zagrada.
/tikz/label=[{options}]{angle}:{text}
Unutar glavne naredbe node zadaje se label node naredba koja se smjesta u glavnu node
naredbu.
a, b
Slika 9.44 Koristenje label opcije unutar cvora s dodatnim opcijama
\begin{tikzpicture}
\node [circle,draw,label={[name=label node, red]above left:$a,b$}] {};
\draw (label node) -- +(1,1);
\end{tikzpicture}
Zelimo li da label opcije budu udaljene od cvora za neku udaljenost koristit cemo opciju
label distance sto vidimo u slijedecem primjeru.
51
krug X
YZ
Slika 9.45 Koristenje label distance opcije unutar cvora
\begin{tikzpicture}[label distance=5mm]
\node [circle,draw,label=right:X,
label=above right:Y,
label=above:Z] {krug};
\end{tikzpicture}
9.3 Pin opcija
Slicno kao label opciju mozemo koristiti i pin opciju s kojom dobivamo slijedeci rezultat:
O X
YZ
Slika 9.46 Koristenje pin opcije unutar cvora
\tikz[pin distance=1cm]
\node [circle,draw=red,pin=right:X,
pin=above right:Y,
pin=above:Z] {O};
9.4 Povezivanje cvorova s cvornim koordinatama
Definiran cvor imenom se moze koristiti kao poveznica. Definiran je cvor pod nazivom x na
nacin: \path(0,0) node(x){Pozdrav svijete!}
Povezivanje mozemo obaviti na dva nacina:
1. Tako definirani cvor se moze koristiti kao (x.{anchor}), s bilo kojim objektom. Smjer
sidra odredujemo na prije opisani nacin.
2. Isto tako moze se koristiti (x) kao koordinatu. U vecini slucajeva rezultat ce nam biti
isti kao da smo koristili (x.center)
52
Pozdrav svijete!
∫ 2
1xdx
vodoravno-okomito
kriv
ulja
Slika 9.47 Povezivanje cvorova
\begin{tikzpicture}
\path (0,0) node (x) {Pozdrav svijete!}
(3,1) node[circle,draw](y) {$\int_1^2 x \mathrm d x$};
\draw[->,blue] (x) -- (y);
\draw[->,red] (x.south) -| node[near start,below] {vodoravno-okomito} (y);
\draw[->,orange] (x.east) .. controls +(up:1cm) and +(left:1cm)
.. node[above,sloped] {krivulja} (y.north);
\end{tikzpicture}
53
10 Scoping
Kada zelimo set opcija primijeniti na cijelu sliku pisemo ih na nacin (vec opisano prije):
\begin{tikzpicture}[{options}]
...naredbe...
\end{tikzpicture}
Sa okolisem scope moze se primijeniti neki set opcija na odredeni dio objekata, odnosno na
neku grupu. Struktura scope okolisa je:
\begin{scope}[{options}]
...naredbe...
\end{scope}
Sve opcije unutar scope okolisa ce se odnositi na naredbe napisane do kraja scope okolisa.
Slika 10.48 Primjer koristenja scope okolisa
\begin{tikzpicture}[ultra thick]
\begin{scope}[red]
\draw (0mm,10mm) -- (10mm,10mm);
\draw (0mm,8mm) -- (10mm,8mm);
\end{scope}
\draw (0mm,6mm) -- (10mm,6mm);
\begin{scope}[green]
\draw (0mm,4mm) -- (10mm,4mm);
\draw (0mm,2mm) -- (10mm,2mm);
\draw[blue] (0mm,0mm) -- (10mm,0mm);
\end{scope}
\end{tikzpicture}
54
11 Clip - izrezivanje slike
Dio slike moze se izdvojiti radi boljeg pregleda detalja ili sl. naredbom \clip. Ovom
naredbom ustvari se opisuje podrucje slike koje se zeli prikazati kao finalni crtez. Opisano
podrucje moze imati oblik kakav se zada.
Slika 11.49 Crveni krug je izrezan na podrucje koje je obiljezeno crnom kruznicom
\begin{tikzpicture}
\draw[clip] (0,0) circle (1cm);
\fill[red] (1,0) circle (1cm);
\end{tikzpicture}
55
12 Foreach - FOR petlja
Petlje u crtanju mogu biti korisne, posebno kada postoji potreba za uzastopnim imenovanjem
nekih cvorova ili nesto slicno. Naredba \foreach ustvari se nalazi kao dio paketa TikZ-a
(pgffor) koji se automatski ucitava u TikZ-u, a za PGF se mora posebno ucitati.
Struktura naredbe je slijedeca:
\foreach \var in {lista}
{
naredbe % tijelo petlje
}
Varijabla \var uzima vrijednosti iz liste koja je u najjednostavnijem primjeru zarezom
odvojena lista u viticastim zagradama. Vrijednosti liste mogu biti brojevi koji su najcesca
opcija, a isto tako i sve ostalo.
Slika 12.50 Foreach naredbom nacrtane 4 kruznice
\begin{tikzpicture}
\foreach \x in {0,1,2,3}
\draw (\x,0) circle (1 cm);
\end{tikzpicture}
Zahvaljujuci pravilu da ako se foreach petlja nalazi pod jos jednom foreach petljom,
druga foreach petlja ce se izvrsavati kao naredba, sto nam omogucava:
Slika 12.51 Foreach naredbe kao jedna u drugoj
56
\begin{tikzpicture}
\foreach \x in {0,1,2,3}
\foreach \y in {0,1,2,3}
{
\draw (\x,\y) circle (0.2cm);
\fill (\x,\y) circle (0.1cm);
}
\end{tikzpicture}
12.1 Lista kao niz
Najbitnija osobina liste su ”...”. Ovom osobinom lista zna da treba nadopuniti niz vri-
jednosti brojeva izmedu kojih se tockice nalaze po pravilu razlike prva dva do zadnjega.
Sto znaci ”x, y, ..., z” ce napraviti ”x, x + d, x + 2d, x + 3d, ..., x + md” gdje je ”d = y − x”
(aritmeticki niz).
\foreach \x in {1,2,...,6} {\x, }
1, 2, 3, 4, 5, 6,\foreach \x in {1,2,3,...,6} {\x, }
1, 2, 3, 4, 5, 6,\foreach \x in {1,3,...,11} {\x, }
1, 3, 5, 7, 9, 11,\foreach \x in {1,3,...,10} {\x, }
1, 3, 5, 7, 9,\foreach \x in {0,0.1,...,0.5} {\x, }
0, 0.1, 0.20001, 0.30002, 0.40002,\foreach \x in {a,b,9,8,...,1,2,2.125,...,2.5} {\x, }
a, b, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 2.125, 2.25, 2.375, 2.5,foreach \x in {9,...,3.5} {\x, }
9, 8, 7, 6, 5, 4,
57
12.2 Parovi u listi
Liste mogu biti nacinjene od uredenih parova brojeva.
Slika 12.52 Parovi u listi
\begin{tikzpicture}
\foreach \position in {(0,0), (1,1), (2,0), (3,1)}
\draw \position rectangle +(.25,.5);
\end{tikzpicture}
12.3 Varijable u listi
Slika 12.53 Parovi u listi s jednom varijablom
\begin{tikzpicture}
\draw (0,0)
\foreach \x in {1,...,3}
{ -- (\x,1) -- (\x,0) }
;
\end{tikzpicture}
Osim jedne varijable moze se koristiti i vise varijabli. Da bi se odvojila jednu varijabla od
druge koristimo znak /. Takoder ovim znakom u listi odvajamo vrijednosti za prvu odnosno
drugu varijablu. Ako druge varijable nema brojcano koliko i prve druga ce se ponoviti u
svakom koraku petlje.
\begin{tikzpicture}[shading=ball]
\foreach \x / \cola in {0/red,1/green,2/blue,3/yellow}
\foreach \y / \colb in {0/red,1/green,2/blue,3/yellow}
\shade[ball color=\cola!50!\colb] (\x,\y) circle (0.4cm);
\end{tikzpicture}
58
Slika 12.54 Parovi u listi s vise varijabli
12.4 Prekid petlje
Naredba \breakforeach se koristi na kraju \foreach petlje odnosno kada se zeli izvrsiti
prekid naredbi
Slika 12.55 Parovi u listi
\begin{tikzpicture}
\foreach \x in {1,...,4}
\foreach \y in {1,...,4}
{
\fill[red!50] (\x,\y) ellipse (3pt and 6pt);
\ifnum \x<\y
\breakforeach
\fi
}
\end{tikzpicture}
59
13 Transformacije u TikZ-u
Vec se vidjelo da TikZ poznaje koordinatni sustav, koordinata (2, 3) znaci 2vx+3vy, 2 duljine
u smjeru vektora x-osi i 3 duljine u smjeru vektora y-osi. Slicno tako imamo u 3D prostoru,
koordinata (1, 2, 3) znaci vx + 2vy + +3vz.
Za razliku od drugih paketa, PGF pruza mogucnost da vx ne mora imati y-komponentu
0, nego x-vektor moze biti usmjeren gdje god zelimo, naravno da je najcesci smjer usmjeren
horizontalno.
Kod zadavanja koordinata ne smije se zadavati koordinata x u jednoj jedinici mjere, a
koordinata y u drugoj jedinici mjere, npr (1, 2pt).
Slijedeci primjer prikazuje promjenu velicine vektora vx sa vrijednosti 1cm na neku drugu.
U opcijama upisujemo x={vrijednost}.
Slika 13.56 Promjena velicine vektora vx
\begin{tikzpicture}
\draw (0,0) -- +(1,0);
\draw[x=2cm,color=red] (0,0.1) -- +(1,0);
\end{tikzpicture}
Kako se moze promijeniti velicinu vektora vx analogno se moze primijeniti i na ostale
vektore smjera vy i vz. Inicijalne vrijednosti argumenata su redom (1cm,1cm,−√
2cm). Vri-
jednost argumenta x moze biti zadana i kao koordinata, ali tada koordinatu moramo staviti
u viticaste zagrade. Kada se y argument zadan kao koordinata, rezultantni vektor ce imati
smjer (0, vrijednost), kod z argumenta smatrat ce se kao tocka (vrijednost, vrijednost).
Slika 13.57 Velicina vektora vx zadana koordinatno tockom (2, 0.5)
\begin{tikzpicture}
\draw (0,0) -- (1,0);
\draw[x={(2cm,0.5cm)},color=red] (0,0) -- (1,0);
\end{tikzpicture}
60
Slika 13.58 Zamjena x i y koordinate
\begin{tikzpicture}[smooth]
\draw plot coordinates{(1,0) (2,0.5) (3,0) (3,1)};
\draw[x={(0cm,1cm)},y={(1cm,0cm)},color=red]
plot coordinates{(1,0) (2,0.5) (3,0) (3,1)};
\end{tikzpicture}
x
y
z
Slika 13.59 Koordinatni sustav promijenjenih duljina smjerova
\begin{tikzpicture}[z=-1cm,->,thick]
\draw[color=red] (0,0,0) -- (1,0,0) node[right]{x};
\draw[y=2cm, color=blue] (0,0,0) -- (0,1,0)node[above]{y};
\draw[color=orange] (0,0,0) -- (0,0,1)node[below left]{z};
\end{tikzpicture}
13.1 Koordinatne transformacije
Izvodenje translacije ili pak rotacije ili njihove kompozicije je vrlo jednostavno. PGF i
TikZ dozvoljavaju nam koordinatne transformacije jednostavnim naredbama, s uporabom
transformacijskih matrica.
Bitna stvar kod transformacijskih matrica je da se primjenjuju samo na koordinate.
Pod tim samo se misli da ne mijenjaju debljinu linije, ili kut sjenjcenja. Postoji generalno
pravilo: ako nije ukljucena niti jedna koordinata, cak i indirektno, matrica rotacije nece biti
primijenjena.
Nije dobro koristiti prenapuhane transformacije, kao npr. scaling sa faktorom 10000.
Razlog ne koristenju toga je sto transformacije koriste TEX, koji ima jako slabu tocnost.
61
13.2 Skaliranje - povecavanje
Skaliranje scale=<faktor>
S ovom opcijom uvecavamo, odnosno opcija scale mnozi sve koordinate sa danim
faktorom, koji ne smije biti ekstremno velik a isto tako ni preblizak 0.
Slika 13.60 scale - Skaliranje (povecavanje) za faktor
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\draw (0,0) -- (1,1) -- (1,0);
\draw[scale=2,blue] (0,0) -- (1,1) -- (1,0);
\draw[scale=-1,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
Scale opcija se moze primijeniti na citav tikzpicture okolis, a isto tako unutar scope
okruzja.
Slika 13.61 Scale opcija u kombinaciji s clip opcijom
\begin{tikzpicture}[scale=3]
\draw (0,0) -- ( 0:1cm);
\draw (0,0) -- (10:1cm);
\draw (0,0) -- (20:1cm);
\draw (0,0) -- (30:1cm);
\begin{scope}[fill=red]
\fill[clip] (0.2,0.2) rectangle (0.5,0.5);
\draw (0,0) -- (40:1cm);
\draw (0,0) -- (50:1cm);
62
\draw (0,0) -- (60:1cm);
\end{scope}
\draw (0,0) -- (70:1cm);
\draw (0,0) -- (80:1cm);
\draw (0,0) -- (90:1cm);
\end{tikzpicture}
Skaliranje oko tocke scale around={<faktor>:<koordinata>}
Za razliku od prethodne opcije ova opcija samo stavlja srediste uvecavanja u danu
tocku.
Slika 13.62 scale around - Skaliranje (povecavanje) za faktor oko tocke
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\draw (0,0) -- (1,1) -- (1,0);
\draw[scale=2,blue] (0,0) -- (1,1) -- (1,0);
\draw[scale around={2:(1,1)},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
Skaliranje samo jenog argumenta koordinate xscale=<faktor>
Mnozi sa danim faktorom samo x vrijednost kod svih tocaka. Analogna ovoj opciji je
opcija yscale=<faktor>.
Slika 13.63 xscale - Skaliranje x koordinata za neki faktor
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\draw (0,0) -- (1,1) -- (1,0);
\draw[xscale=2,blue] (0,0) -- (1,1) -- (1,0);
\draw[xscale=-1,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
63
13.3 Translacija
pomak - translacija shift={<koordinata>}
Ovom opcijom radimo klasicnu koordinatnu translaciju. Dakle, ova opcija dodaje
koordinatu svim koordinatama.
Slika 13.64 shift - Translacija za neku tocku
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\draw (0,0) -- (1,1) -- (1,0);
\draw[shift={(1,1)},blue] (0,0) -- (1,1) -- (1,0);
\draw[shift={(30:1cm)},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
Translacija u x smjeru xshift=<vrijednost>
Ovom opcijom radimo ustvari translaciju u x-smjeru za danu vrijednost, dakle doda-
jemo vrijednost svim x koordinatama na koje se ova naredba odnosi.
Slika 13.65 xshift - Translacija u x smjeru
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\draw (0,0) -- (1,1) -- (1,0);
\draw[xshift=2cm,blue] (0,0) -- (1,1) -- (1,0);
\draw[xshift=-10pt,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
Translacija u y smjeru yshift=<vrijednost>
Analogno s prethodnom opcijom, samo sto se vrijednosti odnose na y-smjer.
64
13.4 Rotacija
Rotacija rotate=<stupnjevi>
Rotiranje koordinatnog sustava za unesenu vrijednost stupnjeva.
Slika 13.66 Rotate - rotacija koordinatnog sustava za kut u stupnjevima
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\draw (0,0) -- (1,1) -- (1,0);
\draw[rotate=40,blue] (0,0) -- (1,1) -- (1,0);
\draw[rotate=-20,red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
Rotacija oko tocke rotate around={<stupnjevi>:<koordinata>}
Rotiranje koordinatnog sustava za unesenu vrijednost stupnjeva oko neke tocke.
Slika 13.67 Rotate around - Rotacija koordinatnog sustava oko zadane tocke za kut ustupnjevima
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\draw (0,0) -- (1,1) -- (1,0);
\draw[rotate around={40:(1,1)},blue] (0,0) -- (1,1) -- (1,0);
\draw[rotate around={-20:(1,1)},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
65
13.5 Proizvoljna matrica transformacije
cm={<a>,<b>,<c>,<d>,<koordinata>}
Proizvoljna matrica transformacije omogucava definiranje parametara u matrici, koji se
odnose na sve koordinate. Neka je (x, y) koordinata u koju ce transformacija proizaci, a
(tx, ty) oznacava <koordinata>. Tada ce nova koordinata biti dana izrazom:(a bc d
)(ab
)+
(txty
)
Slika 13.68 Upotreba proizvoljne matrice transformacije
\begin{tikzpicture}
\draw[help lines](0,0) grid (3,2);
\draw (0,0) -- (1,1) -- (1,0);
\draw[cm={1,1,0,1,(0,0)},blue] (0,0) -- (1,1) -- (1,0);
\draw[cm={0,1,1,0,(1cm,1cm)},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
13.6 Transformacije crteza
canvas=<options>
Ovom opcijom direktno primjenjujemo rotaciju i translaciju. Ako zelimo upotrijebiti scale
opciju, ona ce djelovati ne samo na promjenu velicinu slike nego i na podebljavanje linije. Isto
tako canvas opcija moze narusiti smjestaj cvorova. Zato canvas opciju moramo upotrebljavati
s oprezom jer ustvari nam moze narusiti izgled crteza. Ovu opciju upotrebljavamo kada
znamo sto zelimo napraviti.
Slika 13.69 Canvas opcija, direktno djeluje na debljinu linije
66
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
\draw (0,0) -- (1,1) -- (1,0);
\draw[transform canvas={scale=2},blue] (0,0) -- (1,1) -- (1,0);
\draw[transform canvas={rotate=90},red] (0,0) -- (1,1) -- (1,0);
\end{tikzpicture}
67
14 Primjeri
Slijede neki primjeri crteza, koji su vezani uz rotaciju i translaciju.
Primjer 14.0.10. Primjer translacije 4ABC u 4A′B′C ′.
x
y
−1 1 1.5 2 3
−1
−0.5
0.5
1
A
B
C
A′
B′
C ′
Slika 14.70 Translacija trokuta
\begin{tikzpicture}[scale=2] % primjer translacije
% koordinatni sustav
\clip (-1.5,-1.5) rectangle (4,2);
\draw[step=1cm,gray,dashed,thin] (-1.4,-1.4) grid (3.4,1.4);
\draw[step=.5cm,dashed,gray,very thin] (-1.4,-1.4) grid (3.4,1.4);
\draw [->](-1.5,0) -- (3.5,0) node [anchor=west]{x};
\draw [->](0,-1.5) -- (0,1.5) node [anchor=south]{y};
% oznake na osima
\foreach \x in {-1,1,1.5,2,3}
\draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {$\x$};
\foreach \y in {-1,-0.5,0.5,1}
\draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {$\y$};
% slika
\coordinate [label=-135:$A$] (A) at (0,0);
\coordinate [label=45:$B$] (B) at (1,1);
\coordinate [label=left:$C$] (C) at (-.5,.5);
68
% ozanke tocaka na trokutu ABC
\foreach \point in {A,B,C}
\fill [red,opacity=.5] (\point) circle (1pt);
\draw (A) -- (B) -- (C) -- cycle;
% translatirani trokut u okolisu scope translatiranu u tocku (2,-1)
\begin{scope}[shift={(2,-1)}]
\coordinate [label=-135:$A’$] (A’) at (0,0);
\coordinate [label=45:$B’$] (B’) at (1,1);
\coordinate [label=left:$C’$] (C’) at (-.5,.5);
% oznake vrhova translatiranog trokuta
\foreach \point in {A’,B’,C’}
\fill [red,opacity=.5] (\point) circle (1pt);
\draw [fill=green!20](A’) -- (B’) -- (C’) -- cycle;
\end{scope}
% pomocne linije translacije
\draw [dotted,blue](A) -- (A’);
\draw [dotted,blue](B) -- (B’);
\draw [dotted,blue](C) -- (C’);
\end{tikzpicture}
69
Primjer 14.0.11. Primjer rotacije trokuta 4ABC oko tocke S u 4A′B′C ′
x
y
−1 1 1.5 2 2.5 3
−1
−0.5
0.5
1
A
B
C
S
A′
B′
C ′
Slika 14.71 Rotacija trokuta oko tocke S
\begin{tikzpicture}[scale=2] % primjer rotacije trokuta oko tocke S
% Izrez i mreza
\clip (-1.5,-1.5) rectangle (4,2);
\draw[step=1cm,gray,dashed,thin] (-1.4,-1.4) grid (3.4,1.4);
\draw[step=.5cm,dashed,gray,very thin] (-1.4,-1.4) grid (3.4,1.4);
% osi x i y
\draw [->](-1.5,0) -- (3.5,0) node [anchor=west]{x};
\draw [->](0,-1.5) -- (0,1.5) node [anchor=south]{y};
% oznake vrijednosti na osima
\foreach \x in {-1,1,1.5,2,2.5,3}
\draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {$\x$};
\foreach \y in {-1,-0.5,0.5,1}
\draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {$\y$};
% slika
\coordinate [label=-135:$A$] (A) at (0,0);
\coordinate [label=45:$B$] (B) at (1,1);
\coordinate [label=left:$C$] (C) at (-.5,.5);
\coordinate [label=left:$S$] (S) at (1,-.5);
70
% dodavanje malih kru\v{z}nica - uloga to\v{c}ke
\foreach \point in {A,B,C,S}
\fill [red,opacity=.5] (\point) circle (1pt);
% trokut
\draw (A) -- (B) -- (C) -- cycle;
% rotirani trokut u scope okru\v{z}ju naredbom rotate around
\begin{scope}[rotate around={-90:(1,-.5)}, blue]
\coordinate [label=115:$A’$] (A’) at (0,0);
\coordinate [label=-60:$B’$] (B’) at (1,1);
\coordinate [label=above:$C’$] (C’) at (-.5,.5);
% oznake novog trokuta samo kruzici
\foreach \point in {A’,B’,C’}
\fill [red,opacity=.5] (\point) circle (1pt);
\draw[fill=blue!20] (A’) -- (B’) -- (C’) -- cycle;
\end{scope}
% oznake svih to\v{c}aka trokuta
\foreach \point in {A,B,C,A’,B’,C’}
\draw [dotted, blue] (S) -- (\point);
\end{tikzpicture}
71
Primjer 14.0.12. Poplocavanje ravnine
Slika 14.72 Poplocavanje ravnine
\begin{tikzpicture}
\foreach \x in {0,2,...,6}
\foreach \y in {0,2,...,6}
{
\begin{scope}[shift=({\x ,\y})]
\shade [ball color=blue] (0,0) rectangle (2,2);
\draw [fill=red] (1.5,1.5) circle (0.2);
\draw [fill=blue!10](0,0) -- (1.5,0) arc (0:90:1.5) -- cycle;
\shade [ball color=green](0,0) -- (1,0) arc (0:90:1) -- cycle;
\end{scope}
}
\end{tikzpicture}
72
Primjer 14.0.13. Rotacija oblika u foreach petlji
Slika 14.73 Rotacija oblika u foreach petlji
\begin{tikzpicture}
\foreach \x in {2,4,6,8}
\foreach \k in {90,180,270,360}
{
\begin{scope}[rotate around={\k:(2,2)}]
\draw [blue, fill=yellow!20] (0,0) rectangle (2,2);
\shade [ball color=red] (1.5,1.5) circle (0.2);
\draw [fill=blue!10](0,0) -- (1.5,0) arc (0:90:1.5) -- cycle;
\shade [ball color=green](0,0) -- (1,0) arc (0:90:1) -- cycle;
\end{scope}
}
\end{tikzpicture}
73
Primjer 14.0.14. Ilustracija primjene rotacije
Slika 14.74 Ilustracija primjene rotacije
\begin{tikzpicture}
\coordinate (O) at (0,0);
\coordinate (S) at (4,0);
\foreach \kut in {0,15,...,360}
\draw [red] (S) -- ++(\kut:1.5) circle (0.2);
\foreach \kute in {5,20,...,365}
\draw [blue] (S) -- ++(\kute:2) circle (0.4);
\foreach \rot in {0,30,...,360}
{
\begin{scope}[rotate around={\rot:(S)}, blue, scale=0.5]
\foreach \kut in {0,15,...,360}
\draw [red] (0,0) -- (\kut:1.5) circle (0.2);
\foreach \kute in {5,20,...,365}
\draw [blue] (0,0) -- (\kute:2) circle (0.4);
\end{scope}
}
\end{tikzpicture}
74
Sazetak
U ovom diplomskom radu obradena je tema translacije i rotacije likova, te njihova graficka
izvedba u TEX-u odnosno LATEX-u uz pomoc grafickog paketa TikZ & PGF. Rad je nami-
jenjen studentima, nastavnicima, profesorima i svima koji ce imati potrebu nacrtati nesto u
TEX-u odnosno LATEX-u.
Rad je tako strukturiran da korisnika vodi korak po korak, od jednostavnih do slozenijih
slikovnih oblika. Prednost TikZ-a je ta sto sa vrlo malo truda mogu dobiti brzi rezultati, a
isto tako naredbe kojima crtamo su nam stalno vidljive i dostupne za brzu izmjenu.
Osim obradenih dijelova u ovom radu, TikZ & PGF pruza jos mnoge toga.
75
Bibliografija
[1] Neven Elezovic, Linearna algebra, Element, Zagreb, 1995.
[2] Gerald Farin, Dianne Hansford, Practical Linear Algebra, A Geometry Toolbox, A K
Peters, Wellesley, Massachusetts, 2005.
[3] Andrew Mertz and William Slough, Graphics with TikZ, The PracTEX Journal, 2007.
[4] Till Tantau, The TikZ and PGF Packages, Manual for version 2.00, Institut fur Theo-
retische Informatik, Universitut zu Lubeck, 2008.
[5] John Vince, Geometric Algebra for Computer Graphics, Springer, New York, 2008.
[6] Wikipedia, Rotation (mathematics),
http://en.wikipedia.org/wiki/Rotation_(mathematics)
[7] Wolfram MathWorld, Rotation Matrix,
http://mathworld.wolfram.com/RotationMatrix.html
76
Zivotopis
Osobni podaciIme i prezime Ivica Prgomet
Datum rodenja 29. srpnja 1980.Mjesto rodenja Osijek
Nacionalnost Hrvat
Obrazovanje1998. - 2008. Odjel za matematiku, Sveuciliste J. J. Strossmayera u Osijeku1994. - 1998. SSS Makarska, smjer elektrotehnika1993. - 1994. OS Zakarija Mijacika, Tucepi1991. - 1993. OS Mohac, Mohac1986. - 1991. OS Mose Pijade, Knezevi Vinogradi
77
Recommended