translacija i rotacija likova diplomski

82
Sveuˇ ciliˇ ste J. J. Strossmayera u Osijeku Odjel za matematiku Ivica Prgomet Translacije i rotacije likova Diplomski rad Osijek, 2008

Upload: selver-garic

Post on 30-Sep-2014

729 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Translacija i Rotacija Likova Diplomski

Sveuciliste J. J. Strossmayera u Osijeku

Odjel za matematiku

Ivica Prgomet

Translacije i rotacije likova

Diplomski rad

Osijek, 2008

Page 2: Translacija i Rotacija Likova Diplomski

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

Page 3: Translacija i Rotacija Likova Diplomski

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

Page 4: Translacija i Rotacija Likova Diplomski

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

Page 5: Translacija i Rotacija Likova Diplomski

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

Page 6: Translacija i Rotacija Likova Diplomski

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

Page 7: Translacija i Rotacija Likova Diplomski

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

Page 8: Translacija i Rotacija Likova Diplomski

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

Page 9: Translacija i Rotacija Likova Diplomski

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

Page 10: Translacija i Rotacija Likova Diplomski

• 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

Page 11: Translacija i Rotacija Likova Diplomski

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

Page 12: Translacija i Rotacija Likova Diplomski

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

Page 13: Translacija i Rotacija Likova Diplomski

Matrica inverzne translacije je:

T−1 =

1 0 0 −a0 1 0 −b0 0 1 −c0 0 0 1

(2.9)

8

Page 14: Translacija i Rotacija Likova Diplomski

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

Page 15: Translacija i Rotacija Likova Diplomski

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

Page 16: Translacija i Rotacija Likova Diplomski

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

Page 17: Translacija i Rotacija Likova Diplomski

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

Page 18: Translacija i Rotacija Likova Diplomski

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

Page 19: Translacija i Rotacija Likova Diplomski

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

Page 20: Translacija i Rotacija Likova Diplomski

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

Page 21: Translacija i Rotacija Likova Diplomski

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

(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

Page 22: Translacija i Rotacija Likova Diplomski

• 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

Page 23: Translacija i Rotacija Likova Diplomski

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

Page 24: Translacija i Rotacija Likova Diplomski

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

Page 25: Translacija i Rotacija Likova Diplomski

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

Page 26: Translacija i Rotacija Likova Diplomski

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

Page 27: Translacija i Rotacija Likova Diplomski

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

Page 28: Translacija i Rotacija Likova Diplomski

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

Page 29: Translacija i Rotacija Likova Diplomski

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

Page 30: Translacija i Rotacija Likova Diplomski

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

Page 31: Translacija i Rotacija Likova Diplomski

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

Page 32: Translacija i Rotacija Likova Diplomski

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

Page 33: Translacija i Rotacija Likova Diplomski

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

Page 34: Translacija i Rotacija Likova Diplomski

\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

Page 35: Translacija i Rotacija Likova Diplomski

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

Page 36: Translacija i Rotacija Likova Diplomski

5.5 Relativne koordinate

Nekad imamo potrebu dodati nekoj koordinati neku vrijednost. Za to nam sluze relativne

koordinate.

Q

4y

P4x

r

Q

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

Page 37: Translacija i Rotacija Likova Diplomski

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

Page 38: Translacija i Rotacija Likova Diplomski

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

Page 39: Translacija i Rotacija Likova Diplomski

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

Page 40: Translacija i Rotacija Likova Diplomski

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

Page 41: Translacija i Rotacija Likova Diplomski

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

Page 42: Translacija i Rotacija Likova Diplomski

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

Page 43: Translacija i Rotacija Likova Diplomski

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

Page 44: Translacija i Rotacija Likova Diplomski

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

Page 45: Translacija i Rotacija Likova Diplomski

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

Page 46: Translacija i Rotacija Likova Diplomski

\shade[ball color=black] (2,0) circle (1);

\shade[ball color=blue] (5,-1) rectangle (7,1);

\end{tikzpicture}

41

Page 47: Translacija i Rotacija Likova Diplomski

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

Page 48: Translacija i Rotacija Likova Diplomski

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

Page 49: Translacija i Rotacija Likova Diplomski

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

Page 50: Translacija i Rotacija Likova Diplomski

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

Page 51: Translacija i Rotacija Likova Diplomski

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

Page 52: Translacija i Rotacija Likova Diplomski

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

Page 53: Translacija i Rotacija Likova Diplomski

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

Page 54: Translacija i Rotacija Likova Diplomski

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

Page 55: Translacija i Rotacija Likova Diplomski

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

Page 56: Translacija i Rotacija Likova Diplomski

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

Page 57: Translacija i Rotacija Likova Diplomski

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

Page 58: Translacija i Rotacija Likova Diplomski

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

Page 59: Translacija i Rotacija Likova Diplomski

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

Page 60: Translacija i Rotacija Likova Diplomski

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

Page 61: Translacija i Rotacija Likova Diplomski

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

Page 62: Translacija i Rotacija Likova Diplomski

\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

Page 63: Translacija i Rotacija Likova Diplomski

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

Page 64: Translacija i Rotacija Likova Diplomski

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

Page 65: Translacija i Rotacija Likova Diplomski

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

Page 66: Translacija i Rotacija Likova Diplomski

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

Page 67: Translacija i Rotacija Likova Diplomski

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

Page 68: Translacija i Rotacija Likova Diplomski

\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

Page 69: Translacija i Rotacija Likova Diplomski

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

Page 70: Translacija i Rotacija Likova Diplomski

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

Page 71: Translacija i Rotacija Likova Diplomski

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

Page 72: Translacija i Rotacija Likova Diplomski

\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

Page 73: Translacija i Rotacija Likova Diplomski

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

Page 74: Translacija i Rotacija Likova Diplomski

% 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

Page 75: Translacija i Rotacija Likova Diplomski

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

Page 76: Translacija i Rotacija Likova Diplomski

% 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

Page 77: Translacija i Rotacija Likova Diplomski

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

Page 78: Translacija i Rotacija Likova Diplomski

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

Page 79: Translacija i Rotacija Likova Diplomski

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

Page 80: Translacija i Rotacija Likova Diplomski

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

Page 81: Translacija i Rotacija Likova Diplomski

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

Page 82: Translacija i Rotacija Likova Diplomski

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