Diplomski rad 3D Grafika u LATEX-u - PMF - Univerzitet u Tuzli
Diplomski rad 3D Grafika u LATEX-u - PMF - Univerzitet u Tuzli
Diplomski rad 3D Grafika u LATEX-u - PMF - Univerzitet u Tuzli
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
JU <strong>Univerzitet</strong> u <strong>Tuzli</strong><br />
Prirodno-Matematički fakultet<br />
Odsjek: Matematika<br />
<strong>Diplomski</strong> <strong>rad</strong><br />
<strong>3D</strong> <strong>Grafika</strong> u L A TEX-u<br />
Juni, 2009.<br />
Amela Halidović
Mentor <strong>rad</strong>a: Nermin Okičić, docent<br />
Rad ima 78 stranica.<br />
Redni broj diplomskog <strong>rad</strong>a:
⋆ Rezime<br />
U ovom diplomskom <strong>rad</strong>u je ob<strong>rad</strong>¯en problem <strong>3D</strong> grafike u L A TEX-u, bazirajući<br />
se na pstricks paketu pst-3dplot.<br />
U prvom poglavlju je dat matematički osvrt na samo funkcionisanje paketa<br />
pst-3dplot. U nastavku su definisane i pobliže objašnjene brojne naredbe za<br />
crtanje koordinatnog sistema, osnovnih <strong>3D</strong> grafičkih objekata (tačka, linija,<br />
trougao, paralelogram, paralelopiped), složenih <strong>3D</strong> grafičkih objekata (elipsa,<br />
kružnica, cilindar, paraboloid, kugla). Ipak, akcent je na petom poglavlju,<br />
koje je posvećeno grafičkom predstavljanju matematičkih funkcija.<br />
U dodatku je prezentiran paketpst-light3d, kao i osnovne karakteristike<br />
ostalih pstricks paketa za crtanje trodimezionalnih grafičkih objekata.
⋆ Summary<br />
In this thesis is elaborated the problem of <strong>3D</strong> graphics in L A TEX. This<br />
elaboration is based on pstricks package pst-3dplot.<br />
The first chapter is giving a mathematical view on how this package works.<br />
Hereafter are defined and closely explained many macros for drawing the<br />
coordinate axes, basic <strong>3D</strong> graphical objects (dot, line, triangle, square, box),<br />
complex <strong>3D</strong> graphical objects (ellipse, circle, cylinder, paraboloid, sphere).<br />
However, the accent is on the fifth chapter, that is dedicated to the plotting<br />
mathematical functions.<br />
In the appendix is introduced pst-light3d package, as well as basic<br />
characteristics of the other pstricks packages for plotting three dimensional<br />
graphical objects.
<strong>3D</strong> <strong>Grafika</strong> u <strong>LATEX</strong>-u<br />
PST-3dplot<br />
PSTricks paket za crtanje <strong>3D</strong> grafičkih objekata
Sadržaj<br />
1 PST-3dplot sa stanovišta Matematike 1<br />
1.1 <strong>3D</strong> koordinatni sistem . . . . . . . . . . . . . . . . . . . . . . 1<br />
1.2 Paralelna projekcija . . . . . . . . . . . . . . . . . . . . . . . . 2<br />
1.3 Kako pokrenuti <strong>3D</strong> crtanje? . . . . . . . . . . . . . . . . . . . 7<br />
2 Koordinatni sistem 8<br />
2.1 Crtanje koordinatnog sistema . . . . . . . . . . . . . . . . . . 8<br />
2.1.1 Parametri Alpha i Beta . . . . . . . . . . . . . . . . . 11<br />
2.1.2 Parametri za numeraciju koordinatnih osa . . . . . . . 13<br />
2.1.3 Parametri za rotaciju . . . . . . . . . . . . . . . . . . . 18<br />
2.2 <strong>3D</strong> koordinatna mreža . . . . . . . . . . . . . . . . . . . . . . 20<br />
2.3 Put naredbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />
2.3.1 \pstThreeDPut . . . . . . . . . . . . . . . . . . . . . . 25<br />
2.3.2 \pstPlanePut . . . . . . . . . . . . . . . . . . . . . . 26<br />
2.4 Povezivanje objekata . . . . . . . . . . . . . . . . . . . . . . . 29<br />
3 Osnovni <strong>3D</strong> grafički objekti 31<br />
3.1 Tačka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
3.2 Linija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
3.3 Trougao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />
3.4 Paralelogram . . . . . . . . . . . . . . . . . . . . . . . . . . . 36<br />
3.5 Paralelopiped . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />
4 Složeni <strong>3D</strong> grafički objekti 42<br />
4.1 Elipse i kružnice . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />
4.1.1 Elipsa . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />
4.1.2 Kružnica . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />
4.2 Površi drugog reda . . . . . . . . . . . . . . . . . . . . . . . . 47<br />
4.2.1 Cilindar . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />
4.2.2 Paraboloid . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />
4.2.3 Sfera . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
SADRŽAJ<br />
ii<br />
5 Matematičke funkcije 52<br />
5.1 Funkcije zadane eksplicitno . . . . . . . . . . . . . . . . . . . . 52<br />
5.1.1 Primjeri . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />
5.2 Funkcije zadane parametarski . . . . . . . . . . . . . . . . . . 61<br />
5.2.1 Primjeri . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />
A Grafičko predstavljanje datoteka podataka 69<br />
A.1 Naredbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />
B Paket PST-light3d 71<br />
B.1 Naredba \PstLightThreeDText . . . . . . . . . . . . . . . . 71<br />
B.1.1 Primjeri . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />
B.2 Naredba \PstLightThreeDGraphic . . . . . . . . . . . . . . 73<br />
B.2.1 Primjeri . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />
C Ostali PSTricks <strong>3D</strong> paketi 76<br />
C.1 pst-solides3d . . . . . . . . . . . . . . . . . . . . . . . . . . 76<br />
C.2 pst-ob3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
C.3 pst-vue3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
C.4 pst-gr3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
C.5 pst-fr3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
C.6 pst-circ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Poglavlje 1<br />
PST-3dplot sa stanovišta<br />
Matematike<br />
Dobro poznati pstricks paket nudi odlične makro naredbe koje pružaju mogućnost<br />
unošenja manje ili više složenih grafika u dokument. pstricks paket je<br />
osnova za nekoliko drugih dodatnih paketa, koji su uglavnom nazvani pst-xxx,<br />
kao pst-plot. Postoji nekoliko paketa za crtanje trodimenzionalnih grafičkih<br />
objekata. Jedan od njih je pst-3dplot, koji je više sličan pst-plot paketu za<br />
dvodimenzionalne objekte i matematičke funkcije.<br />
1.1 <strong>3D</strong> koordinatni sistem<br />
Prilikom crtanja objekata u dvodimenzionalnom ili trodimenzionalnom sistemu<br />
potreban nam je referentni okvir prema kome specificiramo lokaciju<br />
i veličinu objekta kojeg crtamo. Za dvodimenzionalno crtanje, referentni<br />
okvir je zapravo pravougli koordinatni sistem u ravni, koji se sastoji iz dvije<br />
perpendikularne (presjecaju se pod pravim uglom) ose, x i y.<br />
Za trodimenzionalno crtanje potrebno je dvodimenzionalni koordinatni<br />
sistem proširiti trećom dimenzijom koja daje komponentu dubine. Tako se<br />
uvodi nova osa z koja je perpendikularna na x i y ose i predstavlja liniju<br />
koja se crta ka posmatraču. Ose x, y i z, koje se sijeku u jednoj tački<br />
i perpendikularne su med¯usobno, predstavljaju trodimenzionalni pravougli<br />
koordinatni sistem i referentni okvir za <strong>3D</strong> crtanje. Na slici 1.1 je predstavljen<br />
takav <strong>3D</strong> koordinatni sistem, gdje y osa stremi pravo ka posmatraču.<br />
z<br />
x<br />
y<br />
Slika 1.1: <strong>3D</strong> koordinatni sistem (y osa izvire iz ravni papira)
1.2 Paralelna projekcija 2<br />
Med¯utim, kako se y osa ne vidi, ovakav položaj koordinatnog sistema<br />
ne daje željeni osjećaj ‘prostornosti’ na papiru. Zbog toga se uvode uglovi<br />
rotacije <strong>3D</strong> koordinatnog sistema, ugao horizontalne i ugao vertikalne rotacije.<br />
Ako zarotiramo pogled na koordinatni sistem sa slike 1.1 horizontalno u<br />
odnosu na z osu za ugao α i vertikalno u odnosu na x osu za ugao β, imat<br />
ćemo koordinatni sistem na slici 1.2.<br />
z<br />
x<br />
y<br />
Slika 1.2: Zarotirani <strong>3D</strong> koordinatni sistem<br />
Ugao α je ugao horizontalne, a ugao β ugao vertikalne rotacije <strong>3D</strong> sistema.<br />
Dakle, α je ugao izmed¯u x ose i horizontalne ose ravni papira, a β ugao izmed¯u<br />
z ose i vertikalne ose ravni papira. Naravno, pod pozitivnom rotacijom se<br />
podrazumijeva rotacija u smjeru suprotnom kretanju kazaljki na satu.<br />
1.2 Paralelna projekcija<br />
Od ranije je poznato kako se specificira položaj u <strong>3D</strong> prostoru pomoću<br />
pravouglih koordinata. Med¯utim, bez odbzira na to kako možete da ubjedite<br />
svoje oko, na papiru postoje samo dvije dimenzije. Time se postavlja<br />
pitanje: Kako L A TEX prevodi <strong>3D</strong> pravougle koordinate u dvodimenzionalne<br />
koje mogu da se crtaju na papiru? Kratak odgovor bi bio “Trigonometrija<br />
i prosta manipulacija matricom”. Ipak, to i nije tako jednostavno i biće u<br />
nastavku detaljno objašnjeno.<br />
Prva činjenica koju treba shvatiti jeste projekcija, kojom se <strong>3D</strong> koordinate<br />
spljošte, odnosno projektuju na 2D površinu (ekran ili ravan papira). To je<br />
kao crtanje flomasterom obrisa nekog objekta na staklu koje se nalazi ispred<br />
njega. Kada pomjerimo staklo, na njemu se još mogu vidjeti konture objekta<br />
sa svim njegovim ugaonim ivicama. Na slici 1.3, kuća je projektovana na<br />
ravan komad stakla.
1.2 Paralelna projekcija 3<br />
Slika 1.3: Projekcija <strong>3D</strong> odjekta na 2D površinu<br />
Zamislimo sada <strong>3D</strong> koordinatni sistem koji je od ravni papira zarotiran<br />
za horizontalni ugao rotacije α i vertikalni ugao rotacije β. Tačka u ovom <strong>3D</strong><br />
sistemu je odred¯ena svojim <strong>3D</strong> koordinatama. Njena ortogonalna projekcija<br />
na ravan papira za posmatrača je tačka koju ne vidi i vizuelno doživljava<br />
kao tačku koja se nalazi na papiru ravno iza projektovane tačke. Ako sve<br />
ovo predstavimo na papiru, dobit ćemo sliku na kojoj će se polazna tačka<br />
i njena ortogonalna projekcija poklapati. Upravo ovo je osnovni koncept<br />
na kome se zasniva <strong>3D</strong> crtanje u L A TEX-u upotrebom pst-3dplot paketa:<br />
tačka specificirana <strong>3D</strong> koordinatama se prvo transformiše u tačku sa 2D<br />
koordinatama (svoju ortogonalnu projekciju), koja se onda može p<strong>rad</strong>staviti<br />
na dvodimenzionalnoj površini kakva je ravan papira.<br />
y E<br />
z<br />
y ∗<br />
•<br />
P(x,y,z)<br />
P ∗ (x ∗ ,y ∗ )<br />
x<br />
x ∗<br />
α<br />
α<br />
x·sinα<br />
α x·cosα y·cosα<br />
y·sinα<br />
L M x·cosα α N<br />
y·cosα + x·sinα<br />
P xy<br />
y<br />
x E<br />
y·sinα − x·cosα<br />
Slika 1.4: Dužine u 2D i <strong>3D</strong> sistemima
1.2 Paralelna projekcija 4<br />
Na slici 1.4 prikazana je tačka P(x,y,z) u trodimenzionalnom koordinatnom<br />
sistemu (x,y,z) sa transformacijom u P ∗ (x ∗ ,y ∗ ), tačku u dvodimenzionalnom<br />
koordinatnom sistemu (x E ,y E ) ravni papira. Kakve zapravo koordinate<br />
ima tačka P ∗ u ravni (x E ,y E )?<br />
Spuštanjem okomica sa koordinatnih osa x i y na y E osu formiraju se dva<br />
pravougla trougla sa hipotenuzama x i y. Zbog jednakosti oštrih uglova s<br />
paralelnim, odnosno ortogonalnim kracima, uočeni pravougli trouglovi imaju<br />
po jedan oštar ugao jednak uglu α. Sada su katete pravouglih trouglova x·sinα<br />
i x·cosα, odnosno y·sinα i y·cosα za drugi trougao.<br />
Dvodimenzionalna x koordinata x ∗ tačke P ∗ je razlika dvije dužine LN i<br />
LM. Uočimo pravougli trougao △MNP xy . Njegova hipotenuza je NP xy = x,<br />
a stranice NP xy i MN ortogonalne na y, odnosno y E osu, te su uglovi ∠NLK<br />
i α jednaki kao dva oštra ugla s ortogonalnim kracima. Zbog toga je dužina<br />
MN jednaka x·cosα, i za koordinatu x ∗ dobijamo<br />
x ∗ = y·sinα − x·cosα.<br />
Jasno je da će koordinata x ∗ uvijek zavisiti samo od horizontalnog ugla<br />
rotacije α <strong>3D</strong> sistema, jer se vertikalna rotacija vrši okomito na horizontalnu<br />
osu x E i izlazi iz ravni papira. Zbog toga, vertikalna rotacija utiče samo na<br />
y ∗ koordinatu tačke P ∗ . Dakle, ako nema vertikalne rotacije <strong>3D</strong> sistema, tj.<br />
ako je β =0, onda je y ∗ =z. Ako je ugao β veći od 0 ◦ , onda samo koordinata<br />
y ∗ ima drugu vrijednost.<br />
Ugao β se lijepo vidi na slici 1.5, koja potiče od slike 1.1 kada se koordinatni<br />
sistem zarotira horizontalno za ugao −90 ◦ i vertikalno za ugao β.<br />
z<br />
y E<br />
z·cosβ<br />
(y·cosα + x·sinα)·sinβ<br />
y<br />
β<br />
β<br />
x<br />
y·cosα + x·sinα<br />
x E<br />
−(y·cosα + x·sinα)·sinβ<br />
Slika 1.5: <strong>3D</strong> sistem za α=−90 ◦ i β>0 (x osa ulazi u ravan papira)<br />
Ortogonalna projekcija z koordinate tačke P na y E osu odsjeca na njoj<br />
dužinu z·cosβ. Ali, to još uvijek ne odred¯uje koordinatu y ∗ .
•<br />
•<br />
1.2 Paralelna projekcija 5<br />
Okomice spuštene sa koordinatnih osa x i y na osu y E na slici 1.4 predstavljaju<br />
i dužine u (x,y) ravni. Isto vrijedi i za dužinu y ·cosα + x ·sinα .<br />
Vertikalnom rotacijom <strong>3D</strong> sistema dužina y·cosα +x·sinα, kao i ravan (x,y),<br />
zaklapa ugao β sa osom x E (uglovi s ortogonalnim kracima). Na slici 1.5,<br />
dužina y·cosα + x·sinα se i vidi na y osi, zbog položaja <strong>3D</strong> sistema (x,y,z).<br />
Dužina okomice povučene sa kraja te dužine u ravni (x,y) na osu x E jednaka<br />
je (y ·cosα + x·sinα)·sinβ. Kako se ova dužina nalazi ispod x E ose ona je<br />
negativna, pa je konačno<br />
y ∗ = z·cosβ − (y·cosα + x·sinα)·sinβ.<br />
Tako dobijamo sljedeće jednačine za transformaciju <strong>3D</strong> pravouglih koordinata<br />
tačke u 2D koordinate u ravni (x E ,y E ):<br />
x ∗ = −x·cosα + y·sinα<br />
y ∗ = −(x·sinα + y·cosα)·sinβ + z·cosβ<br />
(1.1)<br />
ili, zapisano u matričnom obliku:<br />
⎛ ⎞<br />
( ) ( )<br />
x<br />
∗<br />
x<br />
− cosα sinα 0<br />
y ∗ =<br />
· ⎝y⎠ . (1.2)<br />
− sinα sinβ − cosα sinβ cosβ<br />
z<br />
Prilikom svakog crtanja trodimenzionalnih objekata pomoću pst-3dplot<br />
paketa, L A TEX vrši transformacije <strong>3D</strong> koordinata u dvodimenzionalne koje<br />
potom predstavlja na papiru.<br />
z<br />
z<br />
2<br />
(1,2,2)<br />
1<br />
y ∗ (x∗ ,y ∗ )<br />
-2<br />
-1<br />
x ∗ 1 2<br />
x<br />
y<br />
x<br />
-1<br />
y<br />
Slika 1.6<br />
Slika 1.7<br />
Na slici 1.6 nacrtan je <strong>3D</strong> koordinatni sistem, sa uglovima rotacije α=45 ◦<br />
i β = 30 ◦ , te tačka sa koordinatama (1, 2, 2) pomoću naredbi pst-3dplot<br />
paketa. Dvodimenzionalne koordinate tačke (1, 2, 2), izračunate pomoću<br />
jednačina (1.1), su:
•<br />
•<br />
<br />
•<br />
<br />
1.2 Paralelna projekcija 6<br />
√ √<br />
2 2<br />
x ∗ = −1 ·<br />
2 + 2 · ≈ 0.7071 ,<br />
(√ √ ) 2<br />
2 2<br />
y ∗ = −<br />
2 + 2 · · 1<br />
√<br />
3<br />
2 2 + 2 · 2 ≈ 0.6714 .<br />
Na slici 1.7 prikazan je i 2D koordinatni sistem, u kojem su koordinate tačke<br />
(1, 2, 2) upravo izračunate (x ∗ ,y ∗ ).<br />
Na narednoj slici predstavljena je još jedna ilustracija. Na prvom crtežu<br />
su nacrtane tačke (1, 2, 2) i (2, 1, 3) u <strong>3D</strong> sistemu. Koristeći formule (1.1) dobijaju<br />
se transformacije ovih tačaka u dvodimenzionalne tačke sa približnim<br />
koordinatama (0.7071, 0.6714) i (−0.7071, 1.5374), koje se na prvom crtežu<br />
nalaze ravno ispod tačaka (1, 2, 2) i (2, 1, 3), tj. projektovana tačka i njena<br />
pojekcija se poklapaju. Zbog toga je na drugom crtežu <strong>3D</strong> koordinatni sistem<br />
pomjeren (rotacijom) iz položaja koji ima na prvom crtežu, te se tako<br />
jasno vide original i njegova transformacija.<br />
2<br />
(2,1,3)<br />
z<br />
2<br />
z<br />
1<br />
(1,2,2)<br />
(2,1,3)<br />
•<br />
1<br />
-2<br />
-1<br />
1 2<br />
-2<br />
-1<br />
(1,2,2)<br />
1 2<br />
x<br />
-1<br />
y<br />
x<br />
-1<br />
y<br />
Slika 1.8<br />
Ovdje se može uočiti da su vektori koji ilustruju projekciju paralelni, pa<br />
se stoga svaka tačka duži čije su krajnje tačke (1, 2, 2) i (2, 1, 3) projektuje<br />
u neku tačku duži u ravni papira, sa krajnjim tačkama (0.7071, 0.6714) i<br />
(−0.7071, 1.5374).<br />
Na osnovu svega izloženog može se zaključiti da su uglovi horizontalne i<br />
vertikalne rotacije <strong>3D</strong> sistema neophodni za svako <strong>3D</strong> crtanje. Zbog toga, i<br />
ukoliko ih ne precizirate, oni već imaju svoju unaprijed definisanu vrijednost<br />
(po default-u) unutar pst-3dplot paketa. Stoga, kako svaka makro naredba<br />
pst-3dplot paketa zahtijeva vrijednosti ovih uglova, svaku njihovu promjenu<br />
je najbolje uvoditi pomoću \psset naredbe, jer tako svaka promjena postaje
1.3 Kako pokrenuti <strong>3D</strong> crtanje? 7<br />
globalna unutar okruženja za koje je predvid¯ena. Ova veoma važna činjenica<br />
će ovdje možda biti pomalo nejasna, ali će se zato u nastavku, kada za to<br />
dod¯e pravo vrijeme, na nju skrenuti pažnja čitaoca . . .<br />
1.3 Kako pokrenuti <strong>3D</strong> crtanje?<br />
Sve počinje aktivacijom paketa pst-3dplot u preambuli dokumenta, naredbom:<br />
⋆ \usepackage{pst-3dplot} ⋆<br />
Prvi korak svake grafičke ilustracije jeste postavljenje referentnog okvira,<br />
odnosno crtanje koordinatnog sistema u odnosu na koji se objekti pozicioniraju.<br />
Zbog toga će sljedeće poglavlje biti u potpunosti posvećeno koordinatnom<br />
sistemu.<br />
pst-3dplot je pstricks paket za crtanje <strong>3D</strong> grafičkih objekata, te se<br />
stoga svako crtanje pokreće unutar pspicture okruženja, koje se definiše na<br />
već poznati način. Naravno, sve pstricks opcije su moguće, kao i kombinovanje<br />
dvodimenzionalnog i trodimenzionalnog crtanja.
Poglavlje 2<br />
Koordinatni sistem<br />
2.1 Crtanje koordinatnog sistema<br />
Naredba za crtanje koordinatnog sistema je<br />
⋆ \pstThreeDCoor[Opcije] ⋆<br />
Upotreba ove neredbe, uz izostavljanje bilo kakvih opcija, daje sljedeći<br />
rezultat:<br />
z<br />
\begin{pspicture}(-3.3,-2.2)(2,4.3)<br />
\pstThreeDCoor<br />
\end{pspicture}<br />
x<br />
y<br />
Jedina specijalna opcija jedrawing=true|false, koja omogućava crtanje<br />
koordinatnih osa. Default vrijednost ove opcije je true. Prilikom gotovo<br />
svakog <strong>3D</strong> crtanja, za inicijalizaciju <strong>3D</strong> koordinatnog sistema potrebno je<br />
koristiti ovu naredbu. Ako je pak ona postavljena na false, onda su sve<br />
opcije za podešavanje izgleda koordinatnih osa takod¯er onemogućene.<br />
U tablici 2.1 prikazani su svi novi parametri za podešavanje izgleda <strong>3D</strong><br />
koordinatnog sistema, kao i unaprijed definisane vrijednosti tih parametara
2.1 Crtanje koordinatnog sistema 9<br />
Tablica 2.1: Parametri za <strong>3D</strong> koordinatni sistem<br />
Naziv parametra Moguće vrijednosti Default<br />
Alpha 45<br />
Beta 35<br />
xMin -1<br />
xMax 4<br />
yMin -1<br />
yMax 4<br />
zMin -1<br />
zMax 4<br />
nameX $x$<br />
spotX 180<br />
nameY $y$<br />
spotY 0<br />
nameZ $z$<br />
spotZ 90<br />
IIIDticks false|true false<br />
Dx 1<br />
Dy 1<br />
Dz 1<br />
IIIDxTicksPlane xy|xz|yz xy<br />
IIIDyTicksPlane xy|xz|yz yz<br />
IIIDzTicksPlane xy|xz|yz yz<br />
IIIDticksize 0.1<br />
IIIDxticksep -0.4<br />
IIIDyticksep -0.2<br />
IIIDzticksep 0.2<br />
RotX 0<br />
RotY 0<br />
RotZ 0<br />
RotSequence xyz|xzy|yxz|yzx|zxy|zyx xyz<br />
koje L A TEX postavlja u slučaju izostanka njihovog preciziranja (default vrijednosti).<br />
Ne postoje ograničenja za uglove ili za minimalne i maksimalne vrijednosti<br />
na koordinatnim osama. Sve pstricks opcije su moguće, takod¯er.<br />
Promjene minimalne i maksimalne vrijednosti na odred¯enoj koordinatnoj<br />
osi vrše se parametrima xMin, xMax, yMin, yMax, zMin, zMax. Takod¯er<br />
je moguće promijeniti oznake koordinatnih osa (parametri nameX, nameY,
2.1 Crtanje koordinatnog sistema 10<br />
nameZ). Pozicioniranje oznake u odnosu na samu koordinatnu osu vrši se<br />
parametrima spotX, spotY i spotZ. Odabirom odgovarajućih vrijednosti<br />
(uglova) za ove parametre se zapravo vrši izbor uglova koje želimo da zaklapaju<br />
koordinatna osa i oznaka, te se na taj način vrši njeno pozicioniranje.<br />
Sve pomenute opcije ilustruju primjeri koji slijede, kao i način na koji se vrši<br />
promjena debljine i boje koordinatnih osa pomoću pstricks parametara.<br />
a<br />
c<br />
b<br />
\begin{pspicture}(-2.3,-2.3)(2.5,2.5)<br />
\pstThreeDCoor[<br />
linewidth=1pt,linecolor=WildStrawberry,<br />
xMin=-2,xMax=2,<br />
yMin=-2,yMax=2,<br />
zMin=-2,zMax=2,<br />
nameX=$a$,nameY=$b$,nameZ=$c$]<br />
\end{pspicture}<br />
a<br />
c<br />
b<br />
\begin{pspicture}(-2.2,-2)(3,3)<br />
\pstThreeDCoor[<br />
linewidth=1.2pt,linecolor=DarkViolet,<br />
xMin=-2,xMax=3,<br />
yMin=-2,yMax=3,<br />
zMin=-2,zMax=3,<br />
nameX=$a$,spotX=330,<br />
nameY=$b$,spotY=80,<br />
nameZ=$c$,spotZ=-160]<br />
\end{pspicture}<br />
v<br />
a<br />
t<br />
\begin{pspicture}(-2.25,-1.7)(3,3.4)<br />
\pstThreeDCoor[<br />
linewidth=1pt,linecolor=MidnightBlue,<br />
xMin=0,xMax=3,<br />
yMin=0,yMax=3,<br />
zMin=0,zMax=3,<br />
nameX=$v$,spotX=90,<br />
nameY=$t$,spotY=90,<br />
nameZ=$a$,spotZ=90]<br />
\end{pspicture}<br />
Preostali parametri iz tablice 2.1 bit će pojašljeni kroz naredne odjeljke.
2.1 Crtanje koordinatnog sistema 11<br />
2.1.1 Parametri Alpha i Beta<br />
U odjeljku 1.1 definisani su uglovi rotacije Dekartovog <strong>3D</strong> koordinatnog sistema,<br />
ugao horizontalne i ugao vertikalne rotacije. Njihov izuzetni značaj<br />
za <strong>3D</strong> crtanje u L A TEX-u pomoću pst-3dplot paketa opravdan je u odjeljku<br />
1.2. Naime, pomoću tih uglova se <strong>3D</strong> koordinate prevode u dvodimenzionalne<br />
koje L A TEX ctra na papiru. Zbog toga je jasno da njihovo preciziranje mora<br />
biti sastavni i obavezni dio opcionih argumenata \pstThreeDCoor naredbe.<br />
Parametri Alpha i Beta predstavljaju upravo te uglove, gdje je Alpha ugao<br />
horizontalne, a Beta ugao vertikalne rotacije.<br />
Sljedeći primjeri pokazuju kako se izmjenom uglova Alpha i Beta vrši<br />
izmjena pogleda na isti koordinatni sistem.<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-3.3,-1.5)(1,3)<br />
\pstThreeDCoor[<br />
linewidth=1.2pt,linecolor=DarkViolet,<br />
xMin=-1,xMax=2.5,<br />
yMin=-1,yMax=2.5,<br />
zMin=-1,zMax=2.5,<br />
Alpha=0,Beta=0]<br />
\end{pspicture}<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-2.4,-1.5)(1,3)<br />
\pstThreeDCoor[<br />
linewidth=1.2pt,linecolor=violet,<br />
xMin=-1,xMax=2.5,<br />
yMin=-1,yMax=2.5,<br />
zMin=-1,zMax=2.5,<br />
Alpha=40,Beta=0]<br />
\end{pspicture}<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-2.4,-1.5)(1,3)<br />
\pstThreeDCoor[<br />
linewidth=1.2pt,linecolor=MidnightBlue,<br />
xMin=-1,xMax=2.5,<br />
yMin=-1,yMax=2.5,<br />
zMin=-1,zMax=2.5,<br />
Alpha=45,Beta=30] % default vrijednosti<br />
\end{pspicture}
2.1 Crtanje koordinatnog sistema 12<br />
y x<br />
z<br />
\begin{pspicture}(-3,-1.5)(1,3)<br />
\pstThreeDCoor[<br />
linewidth=1.2pt,linecolor=MidnightBlue,<br />
xMin=-1,xMax=2.5,<br />
yMin=-1,yMax=2.5,<br />
zMin=-1,zMax=2.5,<br />
Alpha=-60,Beta=0]<br />
\end{pspicture}<br />
y<br />
x<br />
z<br />
\begin{pspicture}(-3,-1.5)(1,3)<br />
\pstThreeDCoor[<br />
linewidth=1.2pt,linecolor=violet,<br />
xMin=-1,xMax=2.5,<br />
yMin=-1,yMax=2.5,<br />
zMin=-1,zMax=2.5,<br />
Alpha=-60,Beta=30]<br />
\end{pspicture}<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-2.8,-1.5)(1,3)<br />
\pstThreeDCoor[<br />
linewidth=1.2pt,linecolor=DarkBlue,<br />
xMin=-1,xMax=2.5,<br />
yMin=-1,yMax=2.5,<br />
zMin=-1,zMax=2.5,<br />
Alpha=30,Beta=-60]<br />
\end{pspicture}<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-1.6,-1.5)(1,3)<br />
\pstThreeDCoor[<br />
linewidth=1.2pt,linecolor=WildStrawberry,<br />
xMin=-1,xMax=2.5,<br />
yMin=-1,yMax=2.5,<br />
zMin=-1,zMax=2.5,<br />
Alpha=90,Beta=25]<br />
\end{pspicture}
2.1 Crtanje koordinatnog sistema 13<br />
2.1.2 Parametri za numeraciju koordinatnih osa<br />
Numeracija koordinatnih osa postiže se parametrom IIIDticks. Moguće<br />
vrijednosti za ovaj parametar su false|true, a default vrijednost je false.<br />
Izborom opcije true za vrijednost ovog parametra, koordinatne ose dobijaju<br />
numeraciju i podione oznake. Med¯utim, preciziranje vrijednosti ovog<br />
parametra nije neophodno. Naime, samo navod¯enje ovog parametra u listi<br />
opcionih argumenata naredbe\pstThreeDCoor L A TEX će interpretirati kao izbor<br />
opcije true za njegovu vrijednost. Tako se izostavljanje ovog parametra<br />
interpretira kao i opcija IIIDticks=false. Naredni primjer ilustruje upravo<br />
rečeno.<br />
z<br />
-1.0<br />
3.0<br />
2.0<br />
-1.0<br />
1.0<br />
\begin{pspicture}(-3.3,-2.3)(2,4.5)<br />
\pstThreeDCoor[<br />
IIIDticks,<br />
linewidth=1pt,<br />
linecolor=DarkViolet!80]<br />
\end{pspicture}<br />
x<br />
1.0 2.0 3.0<br />
-1.0<br />
y<br />
1.0 2.0 3.0<br />
Podioni razmaci na koordinatnim osama, kao i pozicija numeracije i njena<br />
veličina u prethodnom primjeru imaju default vrijednosti. Ipak, svaka od<br />
ovih karakterizacija <strong>3D</strong> sistema može biti promjenjena do željenog oblika.<br />
Veličina fonta kojim se vrši numeracija na osama može se promijeniti<br />
predefinisanjem makro naredbe na sljedeći način:<br />
\def\psxyzlabel#1{\bgroup\scriptsize\textsf{#1}\egroup}<br />
Ovom definicijom se vrši izbor \textsf fonta veličine \scriptsize za numeraciju<br />
na osama. U sljedećem primjeru je odabran \textrm font veličine<br />
\scriptsize.
2.1 Crtanje koordinatnog sistema 14<br />
z<br />
x<br />
1.0 2.0 3.0<br />
-2.0<br />
-1.0<br />
3.0<br />
2.0<br />
1.0<br />
-2.0 -1.0<br />
-1.0<br />
-2.0<br />
1.0 2.0 3.0<br />
y<br />
\def\psxyzlabel#1{\bgroup<br />
\scriptsize\textrm{#1}\egroup}<br />
\begin{pspicture}(-3.3,-2.3)(2,4.2)<br />
\pstThreeDCoor[<br />
IIIDticks,<br />
linewidth=1pt,<br />
linecolor=DarkViolet!80,<br />
xMin=-2,yMin=-2,zMin=-2]<br />
\end{pspicture}<br />
Podioni razmaci na koordinatnim osama<br />
Izborom odred¯enih konkretnih vrijednosti (pozitivnih brojeva) za parametre<br />
Dx, Dy i Dz vrši se odabir podionih razmaka na koordinatnim osama x, y i z<br />
respektivno, te je na taj način moguće postići željenu podjelu.<br />
z<br />
x<br />
2.0 4.0 6.0<br />
-1.0<br />
-0.5<br />
0.75<br />
0.5<br />
-2.0<br />
0.25<br />
-4.0<br />
0.5 1.0 1.5<br />
-0.25<br />
-0.5<br />
y<br />
\begin{pspicture}(-3.3,-2.3)(2,4.2)<br />
\pstThreeDCoor[<br />
IIIDticks,<br />
linewidth=1pt,<br />
linecolor=RedOrange!80,<br />
xMin=-2,<br />
yMin=-2,<br />
zMin=-2,<br />
Dx=2,Dy=0.5,Dz=0.25]<br />
\end{pspicture}<br />
Pozicija numeracije koordinatnih osa<br />
Postoje dva parametra za pozicioniranje numeracija koordinatnih osa. Parametri<br />
IIIDxTicksPlane, IIIDyTicksPlane i IIIDzTicksPlane postavljaju<br />
brojne vrijednosti na odgovarajućim osama x, y i z u ravni xy, yz ili xz,
1.5<br />
1.0<br />
0.5<br />
-1.0<br />
2.1 Crtanje koordinatnog sistema 15<br />
što omogućava optimalan pogled na <strong>3D</strong> sistem. Takod¯er, moguće je precizirati<br />
udaljenost numeracije od same koordinatne ose, a parametri koji to<br />
omogućavaju su IIIDxticksep, IIIDyticksep i IIIDzticksep, gdje se prvi<br />
parametar odnosi na x, drugi na y, a treći na z osu, što je naglašeno i u<br />
nazivu parametra. Ilustracija funkcije navedenih parametara prikazana je u<br />
narednim primjerima.<br />
z<br />
x<br />
3.0<br />
-2.0<br />
1.0<br />
2.0<br />
-1.0<br />
3.0<br />
2.0<br />
-2.0<br />
1.0 -1.0<br />
1.0 2.0 3.0<br />
-1.0<br />
-2.0<br />
y<br />
\begin{pspicture}(-3.3,-2.3)(2,4.2)<br />
\pstThreeDCoor[<br />
linecolor=black,<br />
linewidth=0.9pt,<br />
IIIDticks,<br />
IIIDxTicksPlane=yz,<br />
xMin=-2,yMin=-2,zMin=-2]<br />
\end{pspicture}<br />
-0.5<br />
1.0 2.0 3.0<br />
y<br />
2.0<br />
4.0<br />
6.0<br />
z<br />
-2.0<br />
x<br />
\begin{pspicture}(-3.3,-2.3)(2,4.2)<br />
\pstThreeDCoor[<br />
linecolor=MidnightBlue,<br />
linewidth=1pt,IIIDticks,<br />
IIIDxTicksPlane=zx,<br />
IIIDxticksep=-0.2,<br />
IIIDyTicksPlane=yz,<br />
IIIDyticksep=-0.1,<br />
IIIDzTicksPlane=yz,<br />
IIIDzticksep=-0.2,<br />
Dx=0.5,Dy=1,Dz=2,<br />
Alpha=-135,Beta=-30]<br />
\end{pspicture}<br />
Sljedeći primjer prikazuje pogrešnu poziciju brojnih vrijednosti kojima<br />
se vrši numeracija koordinatnih osa. Naime, odabirom uglova Alpha i Beta<br />
koordinatne ose u prostoru zauzimaju pozicije tako da dolazi do preklapanja<br />
brojnih vrijednosti na osama. Takvo preklapanje se izbjegava upravo upotrebom<br />
opcija koje premještaju brojne vrijednosti u ravni koje su više pogodne.
-1.0<br />
0.5<br />
1.0<br />
1.5<br />
2.1 Crtanje koordinatnog sistema 16<br />
x<br />
0.5 1.0 1.5<br />
z<br />
-0.5<br />
y<br />
1.0 2.0 3.0<br />
2.0<br />
4.0<br />
6.0<br />
-2.0<br />
-1.0<br />
\begin{pspicture}(-3.8,-2.1)(1,3.3)<br />
\pstThreeDCoor[<br />
linecolor=NiceRed,<br />
linewidth=1pt,<br />
IIIDticks,<br />
Dx=0.5,Dy=1,Dz=2,<br />
Alpha=-60,Beta=60]<br />
\end{pspicture}<br />
Moguće rješenje ovakvog problema je:<br />
y<br />
x<br />
1.0 2.0 3.0<br />
2.0<br />
4.0<br />
z<br />
6.0<br />
-2.0<br />
-0.5<br />
\begin{pspicture}(-3.8,-2.1)(1,3.3)<br />
\pstThreeDCoor[<br />
linecolor=NiceRed,<br />
linewidth=1pt,<br />
IIIDticks,<br />
IIIDxTicksPlane=zx,<br />
IIIDxticksep=-0.2,<br />
IIIDyTicksPlane=yz,<br />
IIIDyticksep=0.1,<br />
IIIDzTicksPlane=yz,<br />
IIIDzticksep=-0.2,<br />
Dx=0.5,Dy=1,Dz=2,<br />
Alpha=-60,Beta=60]<br />
\end{pspicture}<br />
U narednom primjeru nacrtane su dvije elipse u koordinatnom sistemu sa<br />
numerisanim osama. Elipse su nacrtane pomoću naredbi pst-3dplot paketa<br />
o kojima će u daljem izlaganju biti više riječi.<br />
Ono što je važno uočiti u ovom primjeru jeste sljedeće: Uglovi rotacije<br />
Alpha i Beta postavljeni su sa \psset naredbom i tako učinjeni globalnim za<br />
sve naredbe koje figurišu unutar ovog primjera. Razlog za to je taj što svaka<br />
pst-3dplot naredba zahtijeva vrijednosti ovih uglova, te u slučaju nepreciziranja<br />
istih koristi standardne (default) vrijednosti. Zato, ukoliko bi uglovi<br />
Alpha i Beta bili postavljeni kao opcioni parametri unutar \pstThreeDCoor<br />
naredbe, elipse će biti crtane za standardne vrijednosti uglova Alpha i Beta,<br />
tj. u standardnom <strong>3D</strong> koordinatnom sistemu.<br />
Sa namjerom što boljeg pojašnjenja navedena su oba slučaja:
•<br />
•<br />
•<br />
•<br />
2.1 Crtanje koordinatnog sistema 17<br />
x<br />
1.0 2.0 3.0<br />
z<br />
3.0<br />
2.0<br />
1.0<br />
-1.0<br />
-1.0<br />
-1.0<br />
1.0 2.0 3.0<br />
y<br />
\begin{pspicture}(-3.85,-2)(2,4)<br />
\pstThreeDCoor[Alpha=30,Beta=30,IIIDticks,<br />
linecolor=black]<br />
\psset{linecolor=mycolor,<br />
linewidth=1.7pt}<br />
\pstThreeDEllipse<br />
(1,0.5,0.5)(-0.5,1,0.5)(1,-0.5,-1)<br />
\pstThreeDDot[drawCoor=true]<br />
(1,0.5,0.5) % centar<br />
\psset{beginAngle=0,endAngle=270,<br />
linecolor=mycolor1}<br />
\pstThreeDEllipse<br />
(2,1,2.5)(-0.5,0.5,0.5)(0.5,0.5,-1)<br />
\pstThreeDDot[drawCoor=true]<br />
(2,1,2.5) % centar<br />
\end{pspicture}<br />
. . . a trebalo bi da izgleda ovako:<br />
x<br />
1.0 2.0 3.0<br />
z<br />
3.0<br />
2.0<br />
1.0<br />
-1.0<br />
-1.0<br />
-1.0<br />
1.0 2.0 3.0<br />
y<br />
\begin{pspicture}(-3.85,-2)(2,4)<br />
\psset{Alpha=30,Beta=30}<br />
\pstThreeDCoor[linecolor=black,IIIDticks]<br />
\psset{linecolor=mycolor,<br />
linewidth=1.7pt}<br />
\pstThreeDEllipse<br />
(1,0.5,0.5)(-0.5,1,0.5)(1,-0.5,-1)<br />
\pstThreeDDot[drawCoor=true]<br />
(1,0.5,0.5) % centar<br />
\psset{beginAngle=0,endAngle=270,<br />
linecolor=mycolor1}<br />
\pstThreeDEllipse<br />
(2,1,2.5)(-0.5,0.5,0.5)(0.5,0.5,-1)<br />
\pstThreeDDot[drawCoor=true]<br />
(2,1,2.5) % centar<br />
\end{pspicture}
2.1 Crtanje koordinatnog sistema 18<br />
2.1.3 Parametri za rotaciju<br />
Koordinatni sistem može biti rotiran neovisno o odabranim vrijednostima<br />
uglova Alpha i Beta. Tako je moguće postaviti koordinatne ose u bilo kojem<br />
pravcu i bilo kojem redoslijedu.<br />
Postoje tri parametra RotX, RotY, RotZ kao i dodatni RotSequence.<br />
Mouguće vrijednosti parametra RotSequence su bilo koje kombinacije slova<br />
xyz. Parametrima RotX, RotY i RotZ se vrši rotacija oko koordinatnih osa<br />
x, y i z respektivno. Ako se u nekoj makro naredbi upotrebljavaju sva tri,<br />
onda je opcijom RotSequence moguće precizirati redoslijed vršenja rotacija.<br />
Tako npr. opcija RotSequence=zxy odred¯uje redoslijed: RotZ, RotX, RotY.<br />
U sljedećem primjeru pomoćupstricks makro naredbe\multido prikazan<br />
je niz od 18 rotacija koordinatnog sistema oko z ose za po 10 o .<br />
z<br />
x<br />
x<br />
y<br />
x<br />
y<br />
x<br />
y<br />
x<br />
y<br />
x<br />
y<br />
x<br />
y<br />
x<br />
y<br />
x<br />
y<br />
x<br />
y<br />
x<br />
x<br />
y<br />
y<br />
x y<br />
x y<br />
x y<br />
x y<br />
x y<br />
x y<br />
y<br />
\begin{pspicture}(-6,-3)(6,3.5)<br />
\multido{\iA=0+10}{18}{<br />
\pstThreeDCoor[linewidth=1pt,linecolor=NiceRed,<br />
RotZ=\iA,xMin=0,xMax=5,yMin=0,yMax=5,zMin=-1,zMax=3.5]<br />
}<br />
\end{pspicture}<br />
Kroz naredne primjere ilustrovane su funkcije parametara RotX, RotY,<br />
RotZ, RotSequence na trodimenzionalnom objektu (kvadar).
2.1 Crtanje koordinatnog sistema 19<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-2,-1.8)(2,2.5)<br />
\pstThreeDCoor[linecolor=black,<br />
xMin=0,yMin=0,zMin=0,xMax=2,yMax=2,zMax=2]<br />
\pstThreeDBox(0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDBox[RotX=90,<br />
linecolor=WildStrawberry]%<br />
(0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDBox[RotX=90,RotY=90,<br />
linecolor=NiceRed!80]%<br />
(0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDBox[RotX=90,RotY=90,RotZ=90,<br />
linecolor=CarnationPink!80]%<br />
(0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\end{pspicture}<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-4.5,-2)(2,2.6)<br />
\pstThreeDCoor[xMin=0,xMax=2.5,yMin=0,yMax=2.5,zMin=0,zMax=2.5]<br />
\pstThreeDBox(0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDBox[RotX=90,RotY=90,RotZ=90,<br />
linecolor=NiceRed](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDBox[RotSequence=xzy,RotX=90,RotY=90,RotZ=90,<br />
linecolor=viol_red](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDBox[RotSequence=zyx,RotX=90,RotY=90,RotZ=90,<br />
linecolor=cyan](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDBox[RotSequence=zxy,RotX=90,RotY=90,RotZ=90,<br />
linecolor=blue](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDBox[RotSequence=yxz,RotX=90,RotY=90,RotZ=90,<br />
linecolor=magenta](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDBox[RotSequence=yzx,RotX=90,RotY=90,RotZ=90,<br />
linecolor=violet](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDBox[fillstyle=g<strong>rad</strong>ient](0,0,0)(.5,0,0)(0,1,0)(0,0,1.5)<br />
\pstThreeDCoor[xMin=0,xMax=2.5,yMin=0,yMax=2.5,zMin=0,zMax=2.5]<br />
\end{pspicture}
2.2 <strong>3D</strong> koordinatna mreža 20<br />
2.2 <strong>3D</strong> koordinatna mreža<br />
Opšte-poznata je činjenica da Descartes-ov trodimenzionalni koordinatni sistem<br />
predstavlja ortogonalni presjek tri ravni u prostoru (horizontalna, frontalna<br />
i profilna ravan). Zbog toga se koordinatna mreža <strong>3D</strong> sistema sastoji<br />
iz koordinatnih mreža ravnina koje odred¯uju taj sistem.<br />
Naredba za crtanje koordinatne mreže u nekoj od ravnina <strong>3D</strong> sistema ima<br />
sintaksu:<br />
⋆ \pstThreeDPlaneGrid[Opcije](xMin,yMin)(xMax,yMax) ⋆<br />
Parametri navedeni unutar ( ) su obavezni i odred¯uju okvir koordinatne<br />
mreže, te je njihova funkcija ista kao i funkcija odgovarajućih parametara<br />
pst-plot paketa za naredbu \psgrid. Naime, na taj način se definišu koordinate<br />
dva suprotna tjemena četverougla u odred¯enoj ravni, koji predstavlja<br />
okvir za koordinatnu mrežu te ravni. Opcioni argumenti mijenjaju izgled koordinatne<br />
mreže, a parametri koji to omogućavaju su planeGrid, subticks<br />
i planeGridOffset.<br />
U narednim primjerima su odred¯ene opcije uvod¯ene pomoću\psset naredbe<br />
da bi učinjene globalnim za sve naredbe unutar pspicture okruženja.<br />
planeGrid<br />
Parametrom planeGrid se vrši izbor ravni u koju se želi umetnuti koordinatna<br />
mreža. Njegove moguće vrijednosti su: xy, xz iyz, a default vrijednost<br />
xy.<br />
U primjeru koji slijedi nacrtana je koordinatna mreža za sve tri ravni<br />
<strong>3D</strong> sistema, te promijenjena standardna debljina i boja linija kojima će se<br />
koordinatna mreža crtati.<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-3.3,-3)(2,4)<br />
\psset{linewidth=0.2pt,<br />
linecolor=lightgray}<br />
\pstThreeDCoor<br />
[xMin=0,yMin=0,zMin=0,<br />
linecolor=violet,<br />
linewidth=2pt]<br />
\pstThreeDPlaneGrid(0,0)(4,4)<br />
\pstThreeDPlaneGrid<br />
[planeGrid=xz](0,0)(4,4)<br />
\pstThreeDPlaneGrid<br />
[planeGrid=yz](0,0)(4,4)<br />
\end{pspicture}
2.2 <strong>3D</strong> koordinatna mreža 21<br />
subticks<br />
Iz prethodnog primjera smo vidjeli da ukoliko želimo da se koordinatna mreža<br />
sastoji iz odred¯enog broja linija, onda se taj broj mora precizirati. Parametar<br />
subticks ima sličnu funkciju. On je takod¯er definisan i u pst-plot<br />
paketu, ali ovdje uz komandu \pstThreeDPlaneGrid ima drugačiju funkciju.<br />
Naime, njime se odred¯uju podjele koordinatne mreže koje polaze od obje<br />
koordinatne ose ravni u kojoj se koordinatna mreža crta.<br />
U sljedećem primjeru je prikazana podjela koordinatne mreže na 6 dijelova<br />
od obje ose opcijom subticks=6.<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-3.3,-3)(2,4)<br />
\psset{linewidth=0.2pt,<br />
linecolor=lightgray,<br />
subticks=6}<br />
\pstThreeDCoor<br />
[xMin=0,yMin=0,zMin=0,<br />
linecolor=violet,<br />
linewidth=2pt]<br />
\pstThreeDPlaneGrid(0,0)(4,4)<br />
\pstThreeDPlaneGrid<br />
[planeGrid=xz](0,0)(4,4)<br />
\pstThreeDPlaneGrid<br />
[planeGrid=yz](0,0)(4,4)<br />
\end{pspicture}<br />
Moguće je i determinisati podjelu koordinatne mreže različitim podjelama<br />
koje polaze od koordinatnih osa. Parametri koji to omogućavaju su<br />
xsubticks i ysubticks.<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-3.3,-3)(2,4)<br />
\psset{linewidth=0.2pt,<br />
linecolor=lightgray,<br />
xsubticks=6,<br />
ysubticks=2}<br />
\pstThreeDCoor<br />
[xMin=0,yMin=0,zMin=0,<br />
linecolor=violet,<br />
linewidth=2pt]<br />
\pstThreeDPlaneGrid(0,0)(4,4)<br />
\pstThreeDPlaneGrid<br />
[planeGrid=xz](0,0)(4,4)<br />
\pstThreeDPlaneGrid<br />
[planeGrid=yz](0,0)(4,4)<br />
\end{pspicture}
2.2 <strong>3D</strong> koordinatna mreža 22<br />
planeGridOffset<br />
Koordinatna mreža može biti udaljena od koorinatnih osa za proizvoljnu<br />
dužinu. Parametar kojim se ta dužina precizira jeplaneGridOffset. Default<br />
vrijednost ovog parametra je 0.<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-3.3,-3)(2,4)<br />
\psset{linewidth=0.2pt,<br />
linecolor=lightgray,<br />
subticks=6}<br />
\pstThreeDCoor<br />
[xMin=0,yMin=0,zMin=0,<br />
linecolor=violet,<br />
linewidth=2pt]<br />
\pstThreeDPlaneGrid(0,0)(4,4)<br />
\pstThreeDPlaneGrid<br />
[planeGrid=xz,<br />
planeGridOffset=4](0,0)(4,4)<br />
\pstThreeDPlaneGrid<br />
[planeGrid=yz](0,0)(4,4)<br />
\end{pspicture}<br />
y<br />
x<br />
z<br />
\begin{pspicture}(-3.3,-4)(2,4)<br />
\psset{linewidth=0.4pt,<br />
linecolor=thistle!70,<br />
Alpha=-65,Beta=-45,<br />
subticks=5,unit=1.25}<br />
\pstThreeDPlaneGrid<br />
[planeGridOffset=-2,<br />
planeGrid=xy](-2,-2)(2,2)<br />
\pstThreeDPlaneGrid<br />
[planeGrid=xz,<br />
planeGridOffset=2](-2,-2)(2,2)<br />
\pstThreeDPlaneGrid<br />
[planeGridOffset=-2,<br />
planeGrid=yz,](-2,-2)(2,2)<br />
\pstThreeDCoor<br />
[xMin=-2,yMin=-2,zMin=-2,<br />
xMax=2,yMax=2,zMax=2,<br />
linecolor=violet,<br />
linewidth=2pt]<br />
\end{pspicture}<br />
U narednim primjerima nacrtane su funkcije<br />
f(x,y)=sinx·y i f(x,y)= x2 + 2y 2 − 6x − 4y + 3<br />
10
2.2 <strong>3D</strong> koordinatna mreža 23<br />
pomoću naredbe \psplotThreeD, o kojoj će više riječi biti kasnije, a pomoću<br />
<strong>3D</strong> koordinatne mreže ograničeni dijelovi prostora unutar kojih su funkcije<br />
smještene.<br />
z<br />
x<br />
y<br />
\scalebox{1.2}[1.6]{<br />
\begin{pspicture}(-5.45,-3)(5.45,3)<br />
\psset{nameX=\scriptsize{$x$},nameY=\scriptsize{$y$},<br />
nameZ=\scriptsize{$z$}}<br />
\psset{Alpha=25,Beta=20,<br />
linecolor=thistle,linewidth=0.5pt,<br />
xsubticks=10,ysubticks=3,unit=0.8}<br />
\pstThreeDCoor[xMin=-5.5,yMin=-5.5,zMin=-1,<br />
xMax=5.5,yMax=5.5,zMax=1,<br />
linecolor=black,linewidth=.7pt]<br />
\pstThreeDPlaneGrid[planeGridOffset=-1,ysubticks=10](-5,-5)(5,5)<br />
\pstThreeDPlaneGrid[planeGrid=xz,planeGridOffset=5](-5,-1)(5,1)<br />
\pstThreeDPlaneGrid[planeGrid=xz,planeGridOffset=-5](-5,-1)(5,1)<br />
\pstThreeDPlaneGrid[planeGrid=yz,planeGridOffset=-5](-5,-1)(5,1)<br />
\pstThreeDPlaneGrid[planeGrid=yz,planeGridOffset=5](-5,-1)(5,1)<br />
\psplotThreeD[plotstyle=curve,drawStyle=xyLines,<br />
yPlotpoints=70,xPlotpoints=70,<br />
linewidth=0.2pt,linecolor=black](-3.5,3.5)(-3.5,3.5)<br />
{x y mul 57 mul sin}<br />
\psset{subticks=10}<br />
\pstThreeDPlaneGrid[planeGridOffset=1](-5,-5)(5,5)<br />
\end{pspicture}}
2.2 <strong>3D</strong> koordinatna mreža 24<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-9,-2)(4,7.5)<br />
\psset{Beta=10,Alpha=30,subticks=7}<br />
\pstThreeDCoor[xMin=0,yMin=0,zMin=0,xMax=7,yMax=7,zMax=7,<br />
linewidth=1.5pt,linecolor=black]<br />
\psset{linewidth=0.1pt,linecolor=gray}<br />
\pstThreeDPlaneGrid(0,0)(7,7)<br />
\pstThreeDPlaneGrid[planeGrid=xz](0,0)(7,7)<br />
\pstThreeDPlaneGrid[planeGrid=yz](0,0)(7,7)<br />
\pscustom[linewidth=0.1pt,fillstyle=g<strong>rad</strong>ient,g<strong>rad</strong>begin=MidnightBlue,<br />
g<strong>rad</strong>end=lightgray,g<strong>rad</strong>midpoint=0.6,plotstyle=curve]{<br />
\psset{xPlotpoints=200,yPlotpoints=1}<br />
\psplotThreeD(0,7)(0,0)<br />
{x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div}<br />
\psset{xPlotpoints=1,yPlotpoints=200,drawStyle=yLines}<br />
\psplotThreeD(7,7)(0,7)<br />
{x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div}<br />
\psset{xPlotpoints=200,yPlotpoints=1,drawStyle=xLines}<br />
\psplotThreeD(7,0)(7,7)<br />
{x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div}<br />
\psset{xPlotpoints=1,yPlotpoints=200,drawStyle=yLines}<br />
\psplotThreeD(0,0)(7,0)<br />
{x dup mul y dup mul 2 mul add x 6 mul sub y 4 mul sub 3 add 10 div}}<br />
\pstThreeDPlaneGrid[planeGrid=xz,planeGridOffset=7](0,0)(7,7)<br />
\pstThreeDPlaneGrid[planeGrid=yz,planeGridOffset=7](0,0)(7,7)<br />
\end{pspicture}
•<br />
2.3 Put naredbe 25<br />
2.3 Put naredbe<br />
U L A TEX-u, općenito, put naredbe služe za pozicioniranje teksta ili bilo kakvih<br />
objekata na crtežu, kao i za označavanje objekata. Kod pst-plot paketa tu<br />
funkciju ima \rput naredba. Ona omogućava i pozicioniranje objekta sa<br />
raznih strana referentne tačke (parametri: lt|lB|lb|t|c|B|b|rt|rB|rb).<br />
Kod pst-3dplot paketa postoje dvije put naredbe, \pstThreeDPut i<br />
\pstPlanePut. Default parametar pozicioniranja prve je c (referentna tačka<br />
je centrirana u odnosu na objekat), a druge naredbe lB (referentna tačka je<br />
lijevo po osnovnoj liniji od objekta).<br />
2.3.1 \pstThreeDPut<br />
Sintaksa ove naredbe slična je \rput naredbi i glasi:<br />
⋆ \pstThreeDPut[opcije](x,y,z){objekat} ⋆<br />
Unutar [ ] zag<strong>rad</strong>a moguće je specificirati odred¯ene opcije za objekat, a<br />
(x,y,z) su koordinate referentne tačke objekta.<br />
•<br />
<strong>3D</strong> tačka<br />
x<br />
y<br />
z<br />
\begin{pspicture}(-2,-1.3)(1,2.4)<br />
\psset{Alpha=-60,Beta=30}<br />
\pstThreeDCoor[<br />
linecolor=MidnightBlue,linewidth=.8pt,<br />
xMin=-1,yMin=-1,zMin=-1,<br />
xMax=2,yMax=2,zMax=2]<br />
\pstThreeDPut(1,0.5,1.25){\emph{<strong>3D</strong> ta\v cka}}<br />
\pstThreeDDot[drawCoor=true](1,0.5,1.25)<br />
\end{pspicture}<br />
Ako se naredbom \pstThreeDPut želi postaviti neki <strong>3D</strong> objekat, onda se<br />
referentna tačka ne mora vidjeti kao centar tog odjekta, zbog perspektive iz<br />
koje se koordinatni sistem posmatra. Med¯utim, to nije slučaj sa prethodnim<br />
primjerom jer je tekst dvodimenzionalan objekat.<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-2.6,-1.6)(2,2.8)<br />
\pstThreeDCoor[<br />
linecolor=black,linewidth=.7pt,<br />
xMin=-1,yMin=-1,zMin=-1,<br />
xMax=2.5,yMax=2.5,zMax=2.5]<br />
\pstThreeDBox[linecolor=thistle]%<br />
(-1,-1,-1)(0,1,0)(0,0,.5)(1.5,0,0)<br />
\pstThreeDPut[linecolor=MidnightBlue](1,-1,1.25)<br />
{\pstThreeDBox(-1,-1,-1)(0,1,0)(0,0,.5)(1.5,0,0)}<br />
\pstThreeDDot[drawCoor=true](1,-1,1.25)<br />
\end{pspicture}
2.3 Put naredbe 26<br />
2.3.2 \pstPlanePut<br />
Ova naredba omogućava postavljanje željenog objekta u jednu od tri koordinatne<br />
ravni <strong>3D</strong> sistema. Sama definicija ove naredbe identična je prethodnoj:<br />
⋆ \pstPlanePut[opcije](x,y,z){objekat} ⋆<br />
Med¯utim, opcioni argumenti ove naredbe se ured¯uju pomoću dva parametra:<br />
plane i planecorr.<br />
plane<br />
Parametrom plane se vrši izbor ravni u koju se objekat želi postaviti. Objekat<br />
može biti bilo kojeg tipa, ali u većini slučajeva on je neka vrsta teksta.<br />
Referentna tačka objekta je sa lijeve strane vertikalno centrirana, obično<br />
vid¯ena kao u poziciji lB.<br />
Moguće vrijednosti za ovaj parametar su: xy, xz, yz; a default vrijednost<br />
xy. Prvi parametar odred¯uje pozitivan smjer za širinu, a drugi za visinu.<br />
Kroz naredne primjere su ilustrovane sve tri vrijednosti za ovaj parametar.<br />
x<br />
xy plane<br />
xy plane<br />
xy plane<br />
z<br />
y<br />
\begin{pspicture}(-4,-3.5)(3,3.5)<br />
\psset{Alpha=30}<br />
\pstThreeDCoor[<br />
linecolor=MidnightBlue,<br />
linewidth=.9pt,<br />
xMin=-3,yMin=-3,<br />
zMin=-3,zMax=3.3]<br />
\pstPlanePut[plane=xy](0,0,-2)<br />
{\fbox{\LARGE\emph{xy plane}}}<br />
\pstPlanePut[plane=xy](0,0,0)<br />
{\fbox{\LARGE\emph{xy plane}}}<br />
\pstPlanePut[plane=xy](0,0,2)<br />
{\fbox{\LARGE\emph{xy plane}}}<br />
\end{pspicture}
xz plane<br />
2.3 Put naredbe 27<br />
x<br />
xz plane<br />
z<br />
xz plane<br />
y<br />
\begin{pspicture}(-4.5,-3)(3,3.5)<br />
\pstThreeDCoor[<br />
linecolor=MidnightBlue,<br />
linewidth=.9pt,xMin=-3,<br />
yMin=-3,yMax=3,<br />
zMin=-3,zMax=3.3]<br />
\pstPlanePut[plane=xz](0,-2,0)<br />
{\fbox{\LARGE\emph{xz plane}}}<br />
\pstPlanePut[plane=xz](0,0,0)<br />
{\fbox{\LARGE\emph{xz plane}}}<br />
\pstPlanePut[plane=xz](0,2,0)<br />
{\fbox{\LARGE\emph{xz plane}}}<br />
\end{pspicture}<br />
x<br />
z<br />
yz plane<br />
yz plane<br />
yz plane<br />
y<br />
\begin{pspicture}(-2.5,-3)(3,3.5)<br />
\pstThreeDCoor[<br />
linecolor=MidnightBlue,<br />
linewidth=.9pt,yMin=-3,<br />
xMin=-3,xMax=3,<br />
zMin=-3,zMax=3.3]<br />
\pstPlanePut[plane=yz](-2,0,0)<br />
{\fbox{\LARGE\emph{yz plane}}}<br />
\pstPlanePut[plane=yz](0,0,0)<br />
{\fbox{\LARGE\emph{yz plane}}}<br />
\pstPlanePut[plane=yz](2,0,0)<br />
{\fbox{\LARGE\emph{yz plane}}}<br />
\end{pspicture}<br />
planecorr<br />
U prethodnim primjerima je moguće uočiti i neke nepravilnosti. Naime, u<br />
prva dva primjera tekst je postavljen u odred¯ene ravni, ali je njegov odraz na<br />
papiru na neki način izokrenut. Kod trećeg primjera to nije slučaj i tekst je<br />
u potpunosti čitljiv. Za korekciju ovakvih nepravilnosti koristi se parametar<br />
planecorr.<br />
O čemu se zapravo <strong>rad</strong>i? Naredba\pstPlanePut sa parametromplane=xy<br />
postavlja tekst u xy ravan sa gornje strane, tako da parametar x odred¯uje<br />
pozitivan smjer za širinu, a parametar y pozitivan smjer za visinu. Prema<br />
tome, ako je odraz teksta izokrenut, onda je ravan u prostoru postavljena<br />
tako da je vidimo sa donje strane.<br />
Sljedeće tri opcije mogu biti vrijednosti parametra planecorr:
•XZ<br />
2.3 Put naredbe 28<br />
⋆ off<br />
Izbor ove opcije ne uzrokuje nikakve promjene u prikazu i ona je, takod¯er, default<br />
vrijednost ovog parametra. Stoga je opcija planecorr=off postavljena<br />
u slučaju kada nedostaje parametar planecorr.<br />
•XY<br />
x<br />
z<br />
•YZ<br />
y<br />
\begin{pspicture}(-2.7,-2.2)(2.5,4.5)<br />
\pstThreeDCoor[linecolor=black,<br />
xMax=3.2,yMax=3.2,zMax=4]<br />
\pstThreeDDot<br />
[drawCoor=true,linecolor=Violet](1,-1,2)<br />
\pstPlanePut[plane=xy](1,-1,2)<br />
{\fbox{\LARGE\Violet\textbf{XY}}}<br />
\pstThreeDDot<br />
[drawCoor=true,linecolor=magenta](1,3,1)<br />
\pstPlanePut[plane=xz](1,3,1)<br />
{\fbox{\LARGE\magenta\textbf{XZ}}}<br />
\pstThreeDDot<br />
[drawCoor=true,linecolor=cyan](-1.5,0.5,3)<br />
\pstPlanePut[plane=yz](-1.5,0.5,3)<br />
{\fbox{\LARGE\cyan\textbf{YZ}}}<br />
\end{pspicture}<br />
⋆ normal<br />
Opcijom planecorr=normal se za svaki položaj koordinatnog sistema obezbjed¯uju<br />
ravni u kojima je postavljeni tekst čitljiv iz perspektive posmatranja<br />
<strong>3D</strong> sistema.<br />
x<br />
•XY<br />
z<br />
•YZ<br />
•XZ<br />
y<br />
\begin{pspicture}(-2.7,-2.2)(2.5,4.5)<br />
\pstThreeDCoor[linecolor=black,<br />
xMax=3.2,yMax=3.2,zMax=4]<br />
\pstThreeDDot<br />
[drawCoor=true,linecolor=Violet](1,-1,2)<br />
\pstPlanePut[plane=xy,planecorr=normal]%<br />
(1,-1,2){\fbox{\LARGE\Violet\textbf{XY}}}<br />
\pstThreeDDot<br />
[drawCoor=true,linecolor=magenta](1,3,1)<br />
\pstPlanePut[plane=xz,planecorr=normal]%<br />
(1,3,1){\fbox{\LARGE\magenta\textbf{XZ}}}<br />
\pstThreeDDot<br />
[drawCoor=true,linecolor=cyan](-1.5,0.5,3)<br />
\pstPlanePut[plane=yz,planecorr=normal]%<br />
(-1.5,0.5,3){\fbox{\LARGE\cyan\textbf{YZ}}}<br />
\end{pspicture}
2.4 Povezivanje objekata 29<br />
⋆ xyrot<br />
Ova opcija omogućava dodatnu korekciju za xy ravan. Zbog simetričnosti<br />
pogleda, nekada je potrebno rotirati tekst u xy ravni tako da je linija teksta<br />
paralelna sa y, a ne x osom. To se postiže rotacijom ravni xy, a pomoću<br />
opcije planecorr=xyrot.<br />
x<br />
z<br />
•XY<br />
•YZ<br />
•XZ<br />
y<br />
\begin{pspicture}(-1.75,-2.25)(4,5)<br />
\psset{Alpha=69.3,Beta=19.43}<br />
\pstThreeDCoor[linecolor=black,<br />
xMax=4,yMax=4,zMax=4]<br />
\pstThreeDDot<br />
[drawCoor=true,linecolor=Violet](1,-1,2)<br />
\pstPlanePut[plane=xy,planecorr=xyrot]%<br />
(1,-1,2){\fbox{\LARGE\Violet\textbf{XY}}}<br />
\pstThreeDDot<br />
[drawCoor=true,linecolor=magenta](1,3.5,1)<br />
\pstPlanePut[plane=xz,planecorr=normal]%<br />
(1,3.5,1){\fbox{\LARGE\magenta\textbf{XZ}}}<br />
\pstThreeDDot<br />
[drawCoor=true,linecolor=cyan](-2,1,3)<br />
\pstPlanePut[plane=yz]%<br />
(-2,1,3){\fbox{\LARGE\cyan\textbf{YZ}}}<br />
\end{pspicture}<br />
2.4 Povezivanje objekata<br />
Povezivanje objekata u <strong>3D</strong> sistemu vrši se definisanjem node-ova. Definicija<br />
<strong>3D</strong> node-a slična je definicijama dvodimenzionalnih node-ova i glasi:<br />
⋆ \pstThreeDNode(x,y,z){ime node-a} ⋆<br />
gdje je (x,y,z) referentna tačka, a ime node-a najčešće definisano slovima<br />
A, B, C, . . .<br />
Ovom definicijom se zapravo definiše dvodimenzionalan node u <strong>3D</strong> tački<br />
(x,y,z), pa se povezivanje dva <strong>3D</strong> node-a vrši sintaksom za povezivanje 2D<br />
node-ova pst-plot paketa:<br />
⋆ \nc-veza{arrows}{node A}{node B} ⋆<br />
Parametrom veza se specificira način povezivanja node-ova, a moguće su<br />
sljedeće opcije 1 : ncline, ncarc, ncdiag, ncdiagg, nccurve, . . .<br />
Evo nekoliko jednostavnijih primjera . . .<br />
1 Sve navedene opcije su definisane za pst-plot paket.
•<br />
2.4 Povezivanje objekata 30<br />
z<br />
x<br />
node A<br />
node B<br />
y<br />
\begin{pspicture}(-3,-2)(3,4)<br />
\pstThreeDCoor[linewidth=.8pt,<br />
linecolor=MidnightBlue,<br />
xMax=3.5,yMax=3.5]<br />
\pstThreeDPut[linecolor=RedOrange](1.4,1,0)<br />
{\ovalnode{A}{\textsl{node A}}}<br />
\pstThreeDPut[linecolor=RedOrange](0,2,3)<br />
{\ovalnode{B}{\textsl{node B}}}<br />
\nccurve{->}{A}{B}<br />
\end{pspicture}<br />
x<br />
z<br />
translacija<br />
y<br />
\begin{pspicture}(-3,-2)(3,4)<br />
\pstThreeDCoor[linewidth=.8pt,<br />
linecolor=MidnightBlue,<br />
xMax=3.5,yMax=3.5]<br />
\pstThreeDBox(1.2,0,0)%<br />
(-.5,0,0)(0,-1,0)(0,0,-1.5)<br />
\pstThreeDNode(1.2,0,0){A}<br />
\pstThreeDPut[linecolor=RedOrange](0,2,3.4)<br />
{\rnode{B}<br />
{\pstThreeDBox(0,0,0)%<br />
(-.5,0,0)(0,-1,0)(0,0,-1.5)}}<br />
\ncline{->}{A}{B}<br />
\tvput{\small\emph{translacija}}<br />
\end{pspicture}<br />
x<br />
z<br />
tačka u xz ravni<br />
y<br />
\begin{pspicture}(-3,-2.4)(3,4.4)<br />
\pstThreeDCoor[linewidth=.8pt,<br />
linecolor=MidnightBlue,<br />
xMin=0,yMin=0,zMin=0,<br />
xMax=3.5,yMax=3.5]<br />
\pstThreeDPlaneGrid[planeGrid=xz,<br />
linecolor=lightgray,<br />
linewidth=.4pt,<br />
xsubticks=7,<br />
ysubticks=8](0,0)(3.5,4)<br />
\pstThreeDDot[linecolor=RedOrange](2,0,2)<br />
\pstThreeDNode(2,0,2){A}<br />
\pstThreeDPut(2,2,0){\rnode{B}{<br />
\texttt{\emph{ta\v cka u xz ravni}}}}<br />
\ncarc[linewidth=.6pt]{
Poglavlje 3<br />
Osnovni <strong>3D</strong> grafički objekti<br />
U ovom poglavlju će biti definisano mnoštvo naredbi za crtanje osnovnih grafičkih<br />
objekata <strong>3D</strong> sistema, kao što su: tačka, prava, mnogougao, kvadar, . . . Neke od<br />
njih su već korištete u prethodnom izlaganju, ali će u nastavku biti detaljno<br />
objašnjene i ilustrovane brojnim primjerima.<br />
3.1 Tačka<br />
Naredba za crtanje tačke u <strong>3D</strong> sistemu je:<br />
⋆ \pstThreeDDot[Opcije](x,y,z) ⋆<br />
(x,y,z) su koordinate tačke koja se crta, dok opcioni argumenti odred¯uju<br />
njen izgled.<br />
Parametri kojima se specificira izgled tačke su svi parametri istog tipa<br />
naredbi \psdot i \psdots pst-plot paketa, a oni su: dotstyle, dotscale,<br />
dotsize,dotangle,fillcolor, . . . Varijacije svih ovih parametar su, takod¯er,<br />
preuzete iz pst-plot paketa. Jedini dodatni i posebni parametar naredbe<br />
\pstThreeDDot jeste parametar drawCoor, sa mogućim vrijednostima true<br />
i false, koji omogućava iscrtavanje koordinatnih linija tačke (isprekidanim<br />
linijama). Takod¯er je moguće i nacrtati ‘nevidljivu’ tačku opcijomdotstyle=<br />
none. U ovom slučaju naredba crta samo koordinatne linije tačke, ako je<br />
uključena i opcija drawCoor=true.<br />
U narednim primjerima ilustrovane su neke opcije za pomenute parametre.<br />
Korištena je i naredba \multido <strong>rad</strong>i što bolje demonstracije crtanja<br />
tačaka u <strong>3D</strong> sistemima. (Nacrtane su tačke oblika (a,a,a), gdje a ∈ {−3, −2,<br />
− 1, 0, 1, 2, 3}.)
3.1 Tačka 32<br />
x<br />
y<br />
z<br />
<br />
<br />
\begin{pspicture}(-2.25,-2.2)(2,2.2)<br />
\psset{Alpha=30,Beta=60,arrowsize=0.15,<br />
drawCoor=true,dotstyle=pentagon*,<br />
dotscale=1.6,linecolor=MidnightBlue}<br />
\pstThreeDCoor[linewidth=.9pt,linecolor=black,<br />
xMin=-2,xMax=2,yMin=-2,yMax=2,zMin=-2,zMax=2]<br />
\pstThreeDDot(-1,1,1)<br />
\pstThreeDDot(1,-1,-1)<br />
\end{pspicture}<br />
x<br />
y<br />
z<br />
<br />
<br />
<br />
<br />
<br />
<br />
\begin{pspicture}(-2,-2.5)(2,2.8)<br />
\psset{Alpha=65,Beta=30,linecolor=MidnightBlue}<br />
\pstThreeDCoor[linewidth=.9pt,linecolor=black,<br />
xMin=-2,xMax=2,yMin=-2,yMax=2,zMin=-2,zMax=2]<br />
\pstThreeDDot[dotstyle=pentagon*,<br />
dotscale=2.6,drawCoor=true](-1,1,1)<br />
\psset{dotstyle=triangle*,dotscale=1.8}<br />
\pstThreeDDot[dotangle=0](-1.22,.9,1.28)<br />
\pstThreeDDot[dotangle=68](-1,.6,1.05)<br />
\pstThreeDDot[dotangle=140](-.8,.82,.7)<br />
\pstThreeDDot[dotangle=212](-1.05,1.25,.67)<br />
\pstThreeDDot[dotangle=-60](-1.3,1.25,1.08)<br />
\end{pspicture}<br />
x<br />
y<br />
z<br />
+<br />
+<br />
+<br />
+<br />
+<br />
+<br />
+<br />
\begin{pspicture}(-3.25,-3.2)(3,3.5)<br />
\psset{Alpha=30,Beta=30,<br />
dotstyle=+,dotsize=6pt,<br />
dotangle=45,drawCoor=true,<br />
arrowsize=0.15}<br />
\pstThreeDCoor[linewidth=1pt,<br />
linecolor=MidnightBlue,<br />
xMin=-3.2,yMin=-3.2,zMin=-3.2,<br />
xMax=3.2,yMax=3.2,zMax=3.2]<br />
\multido{\n=-3+1}{7}{<br />
\pstThreeDDot(\n,\n,\n)}<br />
\end{pspicture}
•<br />
<br />
<br />
3.2 Linija 33<br />
3.2 Linija<br />
Definicija naredbe za crtanje trodimenzionalne linije (prave) ista je kao definicija<br />
odgovarajuće naredbe pst-plot paketa (\psline):<br />
⋆ \pstThreeDLine[Opcije]{arrow}(x1,y1,z1)· · ·(xn,yn,zn) ⋆<br />
Ona omogućava crtanje prave ili izlomljene linije.<br />
Dijelovi za opcije i arrow su opcioni, a broj tačaka je jedino ograničen<br />
memorijom. Sve opcije za pstricks linije su moguće, pa ne postoje dodatne<br />
opcije za <strong>3D</strong> linije. Naredba za crtanje linija se koristi i za crtanje vektora,<br />
a jedina razlika je u izboru opcije za arrow, u slučaju linije je to ‘-’, a za<br />
vektor ‘->’.<br />
Za pst-3dplot paket ne postoji specijalna naredba za crtanje poligona,<br />
jer se gotovo isto može postići naredbom \pstThreeDLine. Ipak, za crtanje<br />
trouglova i paralelograma postoje posebne i pogodnije naredbe, o kojima u<br />
nastavku više.<br />
Primjeri<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-3,-2.7)(2,2.4)<br />
\psset{Alpha=30,Beta=60,arrowsize=0.15}<br />
\pstThreeDCoor[linewidth=.7pt,<br />
linecolor=black,<br />
xMin=-2,yMin=-2,zMin=-2,<br />
xMax=3,yMax=3,zMax=3]<br />
\pstThreeDDot[dotstyle=diamond*,<br />
drawCoor=true](-1,1,1)<br />
\pstThreeDDot[drawCoor=true](1.5,-1,-1)<br />
\pstThreeDLine[linewidth=2pt,<br />
linecolor=violet](-1,1,1)(1.5,-1,-1)<br />
\end{pspicture}<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-2.7,-2.75)(2,3)<br />
\psset{Alpha=30,Beta=-60,drawCoor=true,<br />
dotstyle=Bpentagon,dotscale=1.3,<br />
arrowsize=0.15}<br />
\pstThreeDCoor[linewidth=.8pt,<br />
linecolor=black,<br />
xMin=-2,yMin=-2,zMin=-2,<br />
xMax=2,yMax=2,zMax=2]<br />
\pstThreeDLine[linewidth=3pt,linearc=0.5,<br />
linecolor=violet,arrowscale=1.8]<br />
{}(-1,1,1)(1.5,2,-1)(1.5,-1,-1)<br />
\pstThreeDDot(-1,1,1)<br />
\pstThreeDDot(1.5,-1,-1)<br />
\end{pspicture}
3.2 Linija 34<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-2,-2.8)(2,2.8)<br />
\psset{Alpha=60,Beta=50,arrowsize=0.15}<br />
\pstThreeDCoor[linewidth=.7pt,<br />
linecolor=black,<br />
xMax=3,yMax=3,zMax=3]<br />
\pstThreeDLine[linewidth=1.8pt,<br />
linecolor=WildStrawberry,<br />
linearc=0.2]{H-H}%<br />
(3,1,1)(0,2,3)(.5,3,1)(2,0,3)<br />
\end{pspicture}<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-6.8,-2)(4,5)<br />
\pstThreeDCoor[linecolor=black,linewidth=.8pt,<br />
xMin=-3,xMax=3.5,yMin=-3,yMax=3.5,zMin=-1.5,zMax=4.8]<br />
\multido{\iA=1+1,\iB=60+-10}{5}{<br />
\ifcase\iA\or\psset{linecolor=black}\or\psset{linecolor=violet}<br />
\or\psset{linecolor=mycolor1}\or\psset{linecolor=WildStrawberry}<br />
\or\psset{linecolor=mycolor}<br />
\fi<br />
\pstThreeDLine[SphericalCoor=true,linewidth=3pt]<br />
(\iA,0,\iB)(\iA,30,\iB)(\iA,60,\iB)(\iA,90,\iB)(\iA,120,\iB)<br />
(\iA,150,\iB)(\iA,180,\iB)(\iA,210,\iB)(\iA,240,\iB)<br />
(\iA,270,\iB)(\iA,300,\iB)(\iA,330,\iB)(\iA,360,\iB)}<br />
\multido{\iA=0+30}{12}{<br />
\pstThreeDLine[SphericalCoor=true,linestyle=dashed]<br />
(0,0,0)(1,\iA,60)(2,\iA,50)(3,\iA,40)(4,\iA,30)(5,\iA,20)}<br />
\end{pspicture}
•<br />
•<br />
•<br />
3.3 Trougao 35<br />
U prethodnom primjeru su korištene sferne koordinate <strong>3D</strong> tačaka, a njihovo<br />
korištenje omogućava se opcijomSphericalCoor=true. I u ovom slučaju<br />
moraju postojati tri parametra (r,φ,θ), gdje je r poluprečnik, a φ i θ sferni<br />
uglovi. Sferne koordinate je moguće koristiti kod svih naredbi koje zahtijevaju<br />
trodimenzionalne koordinate, osim kod naredbi za crtanje matematičkih<br />
funkcija.<br />
Za crtanje izlomljenih linija značajan je parametar linejoin, kojim se<br />
specificira način na koji se tačke spajaju. Ovaj parametar ima tri opcije<br />
0|1|2, koje su ilustrovane na sljedećoj slici, a default vrijednost je 0.<br />
linejoin=0 linejoin=1 linejoin=2<br />
Slika 3.1: Značenje opcija linejoin=0|1|2 za crtanje linija<br />
3.3 Trougao<br />
Naredba za crtanje trougla je:<br />
⋆ \pstThreeDTriangle[opcije](P1)(P2)(P3) ⋆<br />
gdje tačke P1, P2 i P3 odred¯uju vrhove trougla.<br />
Ponovo su sve pstricks opcije moguće. Za trouglove je posebno važan<br />
parametar linejoin (slika 3.1).<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-3.2,-4)(3,3.1)<br />
\psset{linejoin=1,arrowsize=0.15}<br />
\pstThreeDCoor[<br />
linecolor=black,<br />
linewidth=.8pt,xMin=-4,<br />
yMin=-4,zMin=-4,zMax=3]<br />
\pstThreeDTriangle[<br />
fillcolor=JungleGreen!40,<br />
fillstyle=solid,linewidth=1.5pt]<br />
(3,1,-2)(1,4,-1)(-2,2,0)<br />
\pstThreeDTriangle[drawCoor=true,<br />
linecolor=MidnightBlue,<br />
linewidth=2pt]<br />
(3.8,1,2)(3,4,-1)(-1,-.7,1)<br />
\end{pspicture}
•<br />
•<br />
•<br />
•<br />
<br />
3.4 Paralelogram 36<br />
3.4 Paralelogram<br />
Paralelogram je četverougao koji ima dva para paralelnih stranica, pa je za<br />
crtanje u potpunosti odred¯en sa početnom tačkom (koja predstavlja jedan vrh<br />
paralelograma) i dva vektora smjera koji odred¯uju stranice paralelograma.<br />
Na sljedećoj slici su prikazani ti vektori.<br />
z<br />
⃗u<br />
P<br />
⃗v<br />
⃗o<br />
x<br />
y<br />
Slika 3.2: Vektori položaja paralelograma<br />
Za pst-3dplot paket vektori ⃗o, ⃗u i ⃗v jednoznačno odred¯uju paralelogram<br />
sa jednim vrhom u tački P čiji je vektor položaja ⃗o, a vektori ⃗u i ⃗v su vektori<br />
pravca stranica paralelograma, koji se nalazi u ravni odred¯enoj vektorima ⃗u<br />
i ⃗v. Za crtanje paralelograma u <strong>3D</strong> sistemu neophodno je precizirati upravo<br />
ove vektore, te naredba za crtanje paralelograma ima oblik:<br />
⋆ \pstThreeDSquare[Opcije](⃗o)(⃗u)(⃗v) ⋆<br />
Paralelogram odred¯en istim vektorima ⃗o, ⃗u i ⃗v kao na slici 3.2, nacrtan<br />
pomoću naredbe \pstThreeDSquare, prikazan je u sljedećem primjeru:<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-2.2,-2.2)(2.5,4.1)<br />
\psset{drawCoor=true,arrowsize=0.15}<br />
\pstThreeDCoor[linecolor=black,<br />
linewidth=.8pt,<br />
xMin=-2.5,xMax=2.5,<br />
yMin=-2.5,yMax=2.5,<br />
zMin=-1,zMax=4]<br />
\pstThreeDSquare[linewidth=1.5pt,<br />
linecolor=MidnightBlue]<br />
(-2,2,3)(3.7,0,0)(0,1,0)<br />
\end{pspicture}
•<br />
3.5 Paralelopiped 37<br />
x<br />
y<br />
z<br />
\begin{pspicture}(-2.6,-2.3)(2.5,4.8)<br />
\psset{Alpha=-20,Beta=48,<br />
linecolor=MidnightBlue,<br />
linewidth=1.5pt,arrowsize=0.15}<br />
\pstThreeDCoor[linecolor=black,<br />
linewidth=.8pt,<br />
xMin=-3,yMin=-3,zMin=-1,<br />
xMax=2,yMax=2,zMax=4]<br />
\pstThreeDSquare<br />
(-2,2,3)(3.7,0,0)(0,1,0)<br />
\pstThreeDSquare[RotZ=40]<br />
(-2,2,3)(3.7,0,0)(0,1,0)<br />
\pstThreeDSquare[RotZ=80]<br />
(-2,2,3)(3.7,0,0)(0,1,0)<br />
\pstThreeDSquare[RotZ=120]<br />
(-2,2,3)(3.7,0,0)(0,1,0)<br />
\end{pspicture}<br />
3.5 Paralelopiped<br />
Zapst-3dplot paket, paralelopiped je samo specijalan slučaj paralelograma.<br />
Naime, kada vektorima ⃗u i ⃗v pridružimo treći vektor ⃗w u istoj početnoj tački,<br />
dobijamo tri povezana vektora koji sada odred¯uju trodimenzionalan objekat–<br />
paralelopiped (slika 3.3).<br />
z<br />
⃗v<br />
⃗u<br />
⃗w<br />
⃗o<br />
x<br />
y<br />
Slika 3.3: Vektori položaja paralelopipeda<br />
Prema tome, sintaksa naredbe za crtanje <strong>3D</strong> ‘kutije’ je:<br />
⋆ \pstThreeDBox[Opcije](⃗o)(⃗u)(⃗v)(⃗w) ⋆<br />
gdje je ⃗o vektor položaja proizvoljne početne tačke (jednog vrha paralelopipeda),<br />
a ⃗u, ⃗v i ⃗w vektori pravca koji odred¯uju stranice paralelopipeda–<br />
vektori položaja paralelopipeda.
•<br />
•<br />
3.5 Paralelopiped 38<br />
Paralelopiped, čiji su vektori položaja predstavljeni na prethodnoj slici,<br />
nacrtan je pomoću naredbe \pstThreeDBox u narednim primjerima. (To je,<br />
zapravo, kvadar je su mu vektori položaja med¯usobno ortogonalni.)<br />
x<br />
z<br />
\begin{pspicture}(-2.2,-1.6)(2,4.6)<br />
\psset{Alpha=30,Beta=30}<br />
\pstThreeDCoor[linecolor=black,<br />
linewidth=.8pt,arrowsize=0.15,<br />
xMin=-2,yMin=-2,xMax=2,yMax=2]<br />
\pstThreeDLine[linecolor=WildStrawberry,<br />
⃗u<br />
linewidth=1.4pt,arrows=->](0,0,0)(-1,1,2)<br />
⃗v<br />
• ⃗w \pstThreeDPut(-.75,.35,.7){$\vec{o}$}<br />
\pstThreeDPut(-.6,1.2,3){$\vec{u}$}<br />
⃗o \pstThreeDPut(0,1,2.3){$\vec{v}$}<br />
\pstThreeDPut(-1.2,1.5,2.3){$\vec{w}$}<br />
\psset{linecolor=violet,linewidth=1.2pt}<br />
\pstThreeDBox(-1,1,2)(0,0,2)(2,0,0)(0,1,0)<br />
y \pstThreeDDot[drawCoor=true](-1,1,2)<br />
\end{pspicture}<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-2.2,-1)(2,4.6)<br />
\psset{Alpha=120,Beta=30}<br />
\pstThreeDCoor[linecolor=black,<br />
linewidth=.8pt,arrowsize=0.15,<br />
xMin=-2,yMin=-2,zMin=-1,<br />
xMax=2,yMax=2,zMax=4]<br />
\pstThreeDLine[linecolor=WildStrawberry,<br />
linewidth=1.4pt,arrows=->](0,0,0)(-1,1,2)<br />
\psset{linecolor=violet,linewidth=1.2pt}<br />
\pstThreeDBox(-1,1,2)(0,0,2)(2,0,0)(0,1,0)<br />
\pstThreeDDot[drawCoor=true](-1,1,2)<br />
\end{pspicture}<br />
y<br />
z<br />
x<br />
\begin{pspicture}(-2.2,-1)(2,4.7)<br />
\psset{Alpha=210,Beta=30}<br />
\pstThreeDCoor[linecolor=black,<br />
linewidth=.8pt,arrowsize=0.15,<br />
xMin=-2,yMin=-2,zMin=-1,<br />
xMax=2,yMax=2,zMax=4]<br />
\pstThreeDLine[linecolor=WildStrawberry,<br />
linewidth=1.4pt,arrows=->](0,0,0)(-1,1,2)<br />
\psset{linecolor=violet,linewidth=1.2pt}<br />
\pstThreeDBox(-1,1,2)(0,0,2)(2,0,0)(0,1,0)<br />
\pstThreeDDot[drawCoor=true](-1,1,2)<br />
\end{pspicture}
•<br />
3.5 Paralelopiped 39<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-2.2,-2.5)(2,2.7)<br />
\psset{Alpha=120,Beta=100}<br />
\pstThreeDCoor[linecolor=black,<br />
linewidth=.8pt,arrowsize=0.15,<br />
xMin=-2,yMin=-2,zMin=-4,<br />
xMax=2,yMax=2,zMax=4]<br />
\pstThreeDLine[linecolor=WildStrawberry,<br />
linewidth=1.4pt,arrows=->](0,0,0)(-1,1,2)<br />
\psset{linecolor=violet,linewidth=1.2pt}<br />
\pstThreeDBox(-1,1,2)(0,0,2)(2,0,0)(0,1,0)<br />
\pstThreeDDot[drawCoor=true](-1,1,2)<br />
\end{pspicture}<br />
Za crtanje kvadra postoji još jedna specijalna naredba, koja omogućava<br />
sjenčenje osnova i bočnih strana kvadra. Njena definicija je:<br />
⋆ \psBox[Opcije](⃗o){širina}{dubina}{visina} ⋆<br />
gdje je ⃗o vektor položaja donjeg lijevog vrha kvadra. Izgled kvadra determinišu<br />
obavezni parametri širina, dubina i visina, koji se odražavaju u<br />
smjeru x, y i z ose, respektivno.<br />
x<br />
z<br />
y<br />
\psset{SegmentColor=<br />
{[cmyk]{0.98,0.13,0,0.43}}}<br />
\begin{pspicture}(-3.2,-2.5)(2,3)<br />
\psset{Alpha=30,Beta=45}<br />
\pstThreeDCoor[linecolor=black,<br />
linewidth=1pt,xMin=-2,xMax=3,<br />
yMin=-2,yMax=3,zMin=-2,zMax=3]<br />
\psBox(0,0,0){2}{1.4}{3.4}<br />
\end{pspicture}<br />
Za naredbu \psBox postoje dva parametra. Parametar showInside, sa<br />
mogućim vrijednostima true|false (default: true), omogućava sjenčenje<br />
osnova kvadra i na taj način skrivanje njegove unutrašnjosti. U sljedećem<br />
primjeru korištena je opcija showInside=false.
3.5 Paralelopiped 40<br />
x<br />
y<br />
z<br />
\begin{pspicture}(-3.2,-2.5)(2,3)<br />
\psset{Alpha=-30,Beta=45,<br />
xyzLight=0.5 2 -2.5}<br />
\pstThreeDCoor[linecolor=black,<br />
linewidth=1pt,xMin=-2,xMax=3,<br />
yMin=-2,yMax=3,zMin=-2,zMax=3]<br />
\psBox[showInside=false,<br />
SegmentColor={[cmyk]{0,0.53,0.38,0}}]<br />
(0,0,0){2}{1.4}{3.4}<br />
\end{pspicture}<br />
Intenzitet sjenčenja reguliše parametar xyzLight, i u narednim primjerima<br />
je ilustrovano njegovo korištenje.<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-3,-2.1)(2,3.2)<br />
\psset{Beta=30,xyzLight=-7 1 4}<br />
\pstThreeDCoor[linecolor=black,<br />
linewidth=1pt,xMin=-2,xMax=3,<br />
yMin=-2,yMax=3,zMin=-2,zMax=3]<br />
\psBox[showInside=false,<br />
SegmentColor={[cmyk]{0,0.53,0.38,0}}]<br />
(2,1,1.5){2}{1.4}{4}<br />
\end{pspicture}<br />
x<br />
y<br />
z<br />
\begin{pspicture}(-3.25,-2.1)(2,3.2)<br />
\psset{Alpha=-30,Beta=30,<br />
xyzLight=1 1 -4}<br />
\pstThreeDCoor[linecolor=black,<br />
linewidth=1pt,xMin=-2,xMax=3,<br />
yMin=-2,yMax=3,zMin=-2,zMax=3]<br />
\psBox[showInside=false,<br />
SegmentColor={[cmyk]{0,0.53,0.38,0}}]<br />
(0,0,0){2}{1.4}{4}<br />
\end{pspicture}<br />
Boja kojom se vrši sjenčenje može se proizvoljno odabrati pomoću opcije<br />
SegmentColor={[cmyk]{c,m,y,k}}. U narednim primjerima je za boju<br />
sjenčenja odabrana MidnightBlue ({c,m,y,k}={0.98,0.13,0,0.43}).
3.5 Paralelopiped 41<br />
x<br />
y<br />
z<br />
\begin{pspicture}(-3.25,-2.1)(2,3.2)<br />
\psset{Alpha=-30,Beta=-45,<br />
xyzLight=1 -1 -4}<br />
\pstThreeDCoor[linecolor=DarkBlue,<br />
linewidth=1pt,xMin=-2,xMax=3,<br />
yMin=-2,yMax=3,zMin=-2,zMax=3]<br />
\psBox[SegmentColor={<br />
[cmyk]{0.98,0.13,0,0.43}}]<br />
(0,0,0){2}{1.4}{4}<br />
\end{pspicture}<br />
x<br />
y<br />
z<br />
\begin{pspicture}(-3.25,-2.1)(2,3.2)<br />
\psset{Alpha=-30,Beta=-45,<br />
xyzLight=1 2 3}<br />
\pstThreeDCoor[linecolor=DarkBlue,<br />
linewidth=1pt,xMin=-2,xMax=3,<br />
yMin=-2,yMax=3,zMin=-2,zMax=3]<br />
\psBox[SegmentColor={<br />
[cmyk]{0.98,0.13,0,0.43}}]<br />
(0,0,0){2}{1.4}{4}<br />
\end{pspicture}<br />
z<br />
y<br />
x<br />
\begin{pspicture}(-2.25,-2.1)(2,3.2)<br />
\psset{Alpha=150,Beta=30,<br />
xyzLight=-4 2 7}<br />
\pstThreeDCoor[linecolor=DarkBlue,<br />
linewidth=1pt,xMin=-2,xMax=3,<br />
yMin=-2,yMax=3,zMin=-2,zMax=3]<br />
\psBox[SegmentColor={<br />
[cmyk]{0.98,0.13,0,0.43}}]<br />
(0,0,0){2}{1.4}{4}<br />
\end{pspicture}
Poglavlje 4<br />
Složeni <strong>3D</strong> grafički objekti<br />
4.1 Elipse i kružnice<br />
Elipsa, kao kriva drugog reda u ravni, ima jednačinu:<br />
e :<br />
(x − x M ) 2<br />
a 2 + (y − y M) 2<br />
b 2 = 1,<br />
gdje je tačka (x M ,y M ) centar elipse, a parametri a i b predstavljaju malu,<br />
odnosno veliku poluosu elipse.<br />
y<br />
F 2<br />
a<br />
e<br />
a<br />
b<br />
e<br />
M<br />
F 1<br />
x<br />
Slika 4.1: Elipsa u 2D sistemu<br />
Ako je u prethodnoj jednačini a = b, onda dobijamo jednačinu kružnice<br />
poluprečnika a, koja je, prema tome, samo specijalan slučaj elipse.<br />
Parametarski oblik jednačine elipse je:<br />
{ x = a · cos α<br />
e :<br />
y = b · sin α ,<br />
a vektorski (da bi dobili elipsu u <strong>3D</strong> sistemu):<br />
e : ⃗x = ⃗m + cos α · ⃗u + sin α · ⃗v (0 ≤ α ≤ 360),
4.1 Elipse i kružnice 43<br />
gdje je ⃗m vektor položaja centra elipse, a ⃗u i ⃗v vektori smjera, koji su<br />
ortogonalni med¯usobno, i čiji su intenziteti jednaki parametrima a i b.<br />
Na sljedećoj slici prikazana je elipsa u <strong>3D</strong> sistemu, sa vektorima ⃗m, ⃗u i ⃗v.<br />
z<br />
⃗u<br />
⃗v<br />
x<br />
⃗m<br />
Slika 4.2: Elipsa u <strong>3D</strong> sistemu<br />
y<br />
4.1.1 Elipsa<br />
Veoma je teško u <strong>3D</strong> koordinatnom sistemu uočiti razliku izmed¯u elipse i<br />
kružnice. U zavisnosti od perspektive pogleda na koordinatni sistem, elipsa<br />
može biti vid¯ena kao kružnica i obratno.<br />
Naredba za crtanje elipse u <strong>3D</strong> sistemu je:<br />
⋆ \pstThreeDEllipse[Opcije](⃗m)(⃗u)(⃗v) ⋆<br />
Vektori ⃗m, ⃗u i ⃗v prikazani su na slici (4.2): ⃗m je vektor položaja tačke koja je<br />
centar elipse, a ⃗u i ⃗v su tzv. vektori smjera koji odred¯uju smjerove i dužine<br />
poluosa elipse i moraju biti ortogonalni med¯usobno (njihovi inetenziteti su<br />
jednaki poluosama a i b – respektivno).<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-1.9,-2.2)(2,2.8)<br />
\psset{Alpha=60}<br />
\pstThreeDCoor[linecolor=black!75,<br />
xMax=3,yMax=2.5,zMax=2.5]<br />
\psset{linecolor=DarkOrchid!90,linewidth=1.5pt}<br />
\pstThreeDEllipse<br />
(0,0,0)(-0.25,0.5,-0.5)(1.25,-0.625,-1.25)<br />
\psset{linecolor=thistle,linewidth=1.2pt}<br />
\pstThreeDLine{->}(0,0,0)(-0.25,0.5,-0.5)<br />
\pstThreeDLine{->}(0,0,0)(1.25,-0.625,-1.25)<br />
\end{pspicture}
•<br />
4.1 Elipse i kružnice 44<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-1.8,-1.5)(2,3)<br />
\psset{Alpha=60}<br />
\pstThreeDCoor[linecolor=black!75,<br />
xMax=2.5,yMax=2.5,zMax=2.5]<br />
\pstThreeDDot[drawCoor=true,<br />
linecolor=thistle](-1,0.5,0.5)<br />
\psset{linecolor=DarkOrchid!90,linewidth=1.5pt}<br />
\pstThreeDEllipse<br />
(-1,0.5,0.5)(-0.2,0.4,-0.4)(1,-0.5,-1)<br />
\end{pspicture}<br />
Za izmjenu karaktristika elipse (debljina linije, boja . . . ) koriste se svi već<br />
postojeći parametri pst-plot paketa, kao i dva dodatna koji omogućavaju<br />
crtanje odred¯enih segmenata elipse definisanjem početnog i krajnjeg ugla<br />
crtanja, a oni su:<br />
⋆ beginAngle (default: 0),<br />
⋆ endAngle (default: 360).<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-2.5,-2.3)(2,3.7)<br />
\psset{Alpha=60,linewidth=1.5pt}<br />
\pstThreeDCoor[linecolor=black!75,<br />
xMax=4,yMax=2.5,zMax=3.5]<br />
\pstThreeDEllipse[linecolor=violet,<br />
beginAngle=0,endAngle=290]<br />
(0,-1,0)(-.25,.5,-.5)(1.25,-.625,-1.25)<br />
\pstThreeDEllipse[linecolor=NavyBlue,<br />
beginAngle=-280,endAngle=0]<br />
(.7,.6,0.4)(-.2,.4,-.4)(1,-.5,-1)<br />
\pstThreeDEllipse[linecolor=DarkOrchid!90,<br />
beginAngle=-90,endAngle=125]<br />
(-.8,.5,-.8)(-.16,.32,-.32)(.8,-.4,-.8)<br />
\end{pspicture}<br />
Redoslijed navod¯enja vektora ⃗u i ⃗v u prethodnoj definiciji je važan, jer<br />
odred¯uje smjer crtanja elipse, koji je u skladu sa pravilom desne ruke:<br />
ako se prvi vektor (⃗u) najkraćim putem dovede do poklapanja sa drugim vektorom<br />
(⃗v), onda dobijamo smjer pozitivnog kretanja. Ova činjenica je posebno<br />
značajna prilikom korištenja parametara beginAngle i endAngle.<br />
Na sljedećoj slici prikazana je ilustracija uticaja redoslijeda navod¯enja<br />
vektora ⃗u i ⃗v na smjer crtanja elipse, tako što su sve linije crtane sa opcijom<br />
arrows=->.
4.1 Elipse i kružnice 45<br />
x<br />
x<br />
1.0 2.0<br />
1.0 2.0<br />
-1.0<br />
-1.0<br />
z<br />
-1.0<br />
z<br />
-1.0<br />
2.0<br />
1.0<br />
-1.0<br />
2.0<br />
1.0<br />
-1.0<br />
1.0 2.0<br />
1.0 2.0<br />
y<br />
y<br />
\psset{arrows=->,linewidth=1.5pt,<br />
linecolor=violet}<br />
\begin{pspicture}(-2.8,-1.6)(3,3.2)<br />
\pstThreeDCoor[linecolor=black,<br />
IIIDticks,xMax=3,yMax=3,zMax=3]<br />
\psset{beginAngle=0,endAngle=90,<br />
arrowscale=1.5}<br />
\pstThreeDEllipse(0,0,0)(2,0,0)(0,2,0)<br />
\pstThreeDEllipse(0,0,0)(0,0,2)(2,0,0)<br />
\pstThreeDEllipse(0,0,0)(0,2,0)(0,0,2)<br />
\end{pspicture}<br />
\vspace{2mm}<br />
\begin{pspicture}(-2.8,-1.5)(3,3)<br />
\pstThreeDCoor[linecolor=black,<br />
IIIDticks,xMax=3,yMax=3,zMax=3]<br />
\psset{beginAngle=0,endAngle=90,<br />
arrowscale=1.5}<br />
\pstThreeDEllipse(0,0,0)(0,2,0)(2,0,0)<br />
\pstThreeDEllipse(0,0,0)(2,0,0)(0,0,2)<br />
\pstThreeDEllipse(0,0,0)(0,0,2)(0,2,0)<br />
\end{pspicture}<br />
Ukoliko vektori ⃗u i ⃗v u definiciji naredbe \pstThreeDEllipse nisu ortogonalni,<br />
L A TEX će i dalje crtati elipsu sa ‘poluosama’ jednakim intenzitetima<br />
vektora ⃗u i ⃗v i koje neće biti ortogonalne.<br />
Na narednoj slici nacrtana je elipsa u xy ravni sa vektorima smjera koji<br />
nisu ortogonalni, te <strong>rad</strong>i što bolje ilustracije ravan xy rotacijom <strong>3D</strong> sistema<br />
smještena u ravan papira. Takod¯er je prikazana ista elipsa sa opcijama<br />
beginAngle=0 i endAngle=90.<br />
x<br />
x<br />
z<br />
y<br />
z<br />
y<br />
\psset{Alpha=0,Beta=90,linewidth=1.5pt,<br />
linecolor=DarkOrchid!90}<br />
\begin{pspicture}(-3.2,-1.9)(1,1.7)<br />
\pstThreeDCoor[linecolor=black!75,<br />
xMax=2,yMax=1.5,zMax=2]<br />
\pstThreeDEllipse(0,0,0)(-0.5,1,0)(2,-0.5,0)<br />
\pstThreeDLine{->}(0,0,0)(-0.5,1,0)<br />
\pstThreeDLine{->}(0,0,0)(2,-0.5,0)<br />
\end{pspicture} \vspace{1mm}<br />
\begin{pspicture}(-3.2,-1.8)(1,1.6)<br />
\pstThreeDCoor[linecolor=black!75,<br />
xMax=2,yMax=1.5,zMax=2]<br />
\pstThreeDEllipse[beginAngle=0,endAngle=90]<br />
(0,0,0)(-0.5,1,0)(2,-0.5,0)<br />
\pstThreeDLine{->}(0,0,0)(-0.5,1,0)<br />
\pstThreeDLine{->}(0,0,0)(2,-0.5,0)<br />
\end{pspicture}
•<br />
•<br />
•<br />
••<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
••<br />
•<br />
4.1 Elipse i kružnice 46<br />
Zapravo se <strong>rad</strong>i o tome da zadavanjem proizvoljnih vektora za crtanje<br />
elipse L A TEX računa njihove ‘ortogonalne komponente’, čiji intenziteti odgovaraju<br />
stvarnim poluosama prikazane elipse.<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-1.9,-2)(2,3.2)<br />
\psset{Alpha=60}<br />
\pstThreeDCoor[linecolor=black!75,<br />
xMax=3,yMax=3,zMax=3]<br />
\psset{linecolor=DarkOrchid!90,<br />
linewidth=1.5pt}<br />
\pstThreeDEllipse<br />
(1,1,0.5)(-0.5,0.5,1)(2,-0.5,0.4)<br />
\pstThreeDDot[drawCoor=true](1,1,0.5)<br />
\pstThreeDLine{->}(1,1,0.5)(0.5,1.5,1.5)<br />
\pstThreeDLine{->}(1,1,0.5)(3,0.5,0.9)<br />
\end{pspicture}<br />
4.1.2 Kružnica<br />
Kružnica je specijalan slučaj elipse, te ju je moguće nacrtati pomoću naredbe<br />
\pstThreeDEllipse, gdje vektori smjera ⃗u i ⃗v moraju biti istih intenziteta<br />
i ortogonalni med¯usobno (⃗u · ⃗v = ⃗0). Ipak, postoji i posebna naredba za<br />
crtanje kružnice:<br />
⋆ \pstThreeDCircle[Opcije](⃗m)(⃗u)(⃗v) ⋆<br />
gdje vektori ⃗u i ⃗v moraju zadovoljavati već pomenute uvjete, a ⃗m je vektor<br />
položaja centra kružnice.<br />
x<br />
• • • • • • •<br />
z<br />
y<br />
\begin{pspicture}(-2.55,-2.7)(2,3.7)<br />
\psset{linewidth=1.5pt,linecolor=NavyBlue}<br />
\pstThreeDCoor[linecolor=black!75,<br />
xMax=2.8,yMax=2.8,zMax=2.8]<br />
\pstThreeDCircle[linestyle=dashed,linecolor=violet]<br />
(1,1,0)(1,0,0)(0,-1,0)<br />
\pstThreeDCircle(1,1.6,1.5)(.8,.4,.8)(.8,-.8,-.4)<br />
\pstThreeDDot[drawCoor=true,linecolor=NavyBlue]<br />
(1,1.6,1.5)<br />
\psset{linecolor=DarkOrchid!90,linewidth=2pt,<br />
plotpoints=20,showpoints=true}<br />
\pstThreeDCircle(1.6,.6,2)(.8,.4,.8)(.8,-.8,-.4)<br />
\pstThreeDDot[drawCoor=true,linecolor=DarkOrchid!90]<br />
(1.6,.6,2)<br />
\end{pspicture}
4.2 Površi drugog reda 47<br />
4.2 Površi drugog reda<br />
4.2.1 Cilindar<br />
Naredba za crtanje uspravnog valjka–cilindra je<br />
⋆ \pstIIIDCylinder[Opcije](x,y,z){<strong>rad</strong>ijus}{visina} ⋆<br />
gdje je (x,y,z) centar donje osnove cilindra, a <strong>rad</strong>ijus poluprečnik osnova.<br />
Ako nedostaju koordinate tačke (x,y,z), onda se za centar uzima (0,0,0).<br />
Primjeri<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-2.5,-1.6)(3,4.7)<br />
\psset{Alpha=60}<br />
\pstThreeDCoor[<br />
xMax=3,yMax=2.5,zMax=4.8,<br />
linecolor=MidnightBlue,<br />
linewidth=1pt]<br />
\pstIIIDCylinder{1.5}{3.5}<br />
\end{pspicture}<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-2.5,-1.6)(3,4.7)<br />
\psset{Alpha=60}<br />
\pstThreeDCoor[<br />
xMax=3,yMax=2.5,zMax=4.8,<br />
linecolor=black,<br />
linewidth=.8pt]<br />
\pstIIIDCylinder[RotY=15,<br />
fillcolor=MidnightBlue!10,<br />
linecolor=black!80,<br />
fillstyle=solid]{1.5}{3.5}<br />
\end{pspicture}<br />
Broj izvodnica cilindra moguće je izmjeniti parametromincrement (engl.<br />
korak povećanja, prirast), koji precizira rastojanje izmed¯u njih. U narednom<br />
primjeru je pomoću opcije increment=0.4 nacrtan cilindar čije su izvodnice<br />
jako blizu, tako da ostavljaju dojam ‘neprekidnosti’ omotača.
4.2 Površi drugog reda 48<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-2.5,-1.6)(3,4.5)<br />
\psset{Alpha=60}<br />
\pstThreeDCoor[<br />
xMax=3,yMax=2.5,zMax=4.4,<br />
linecolor=black,<br />
linewidth=.8pt]<br />
\pstIIIDCylinder[<br />
linecolor=DarkOrchid!60,<br />
fillstyle=solid,<br />
increment=0.4]{1.5}{3}<br />
\psset{linecolor=black,<br />
linewidth=.8pt}<br />
\pstThreeDLine{->}(0,0,3)(0,0,4.4)<br />
\end{pspicture}<br />
Postoji još jedna naredba za crtanje cilindra. Njena sintaksa je slična<br />
prethodnoj definiciji:<br />
⋆ \psCylinder[Opcije](x,y,z){<strong>rad</strong>ijus}{visina} ⋆<br />
gdje svi parametri imaju isto značenje. Jedina razlika je u tome da omotač<br />
cilindra nacrtanog pomoću ove naredbe biva ispunjen bojom (isjenčen), a<br />
opcijom showInside=false|true se unutrašnjost cilindra može sakriti ili<br />
prikazati.<br />
z<br />
x<br />
x<br />
z<br />
y<br />
y<br />
\psset{SegmentColor={[cmyk]{0,0.53,0.38,0}}}<br />
\begin{pspicture}(-2.2,-1.8)(3,4)<br />
\psset{Alpha=60}<br />
\pstThreeDCoor[<br />
xMax=3,yMax=2.5,zMax=4,<br />
linecolor=RedOrange,<br />
linewidth=1pt]<br />
\psCylinder[RotY=-45]{1.5}{3.5}<br />
\end{pspicture}<br />
\vspace{2mm}<br />
\begin{pspicture}(-3.1,-1.6)(3,4)<br />
\psset{Alpha=60}<br />
\pstThreeDCoor[<br />
xMax=3,yMax=2.5,zMax=4,<br />
linecolor=RedOrange,<br />
linewidth=1pt]<br />
\psCylinder[RotY=15,RotZ=-25,RotX=45,<br />
showInside=false]{1.5}{3.5}<br />
\end{pspicture}
4.2 Površi drugog reda 49<br />
4.2.2 Paraboloid<br />
Definicija naredbe za crtanje paraboloida je:<br />
⋆ \pstParaboloid[Opcije]{visina}{<strong>rad</strong>ijus} ⋆<br />
gdje parametri visina i <strong>rad</strong>ijus zavise jedan od drugog–naime, <strong>rad</strong>ijus<br />
je poluprečnik kružnice na visini visina paraboloida.<br />
Po default-u je početna tačka paraboloida u koordinatnom početku, ali<br />
pomoću naredbe \pstThreeDPut paraboloid može biti premješten bilo gdje.<br />
U tablici ispod prikazani su parametri naredbe\pstParaboloid, sa mogućim<br />
vrijednostima.<br />
Naziv parametra Značenje Mog.vr.(Default)<br />
SegmentColor cmyk boja za segmente ({0.2,0.6,1,0})<br />
showInside prikaz unutrašnjosti false|true(true) 1<br />
increment rast. izmed¯u izvodnica dužina (10)<br />
Tablica 4.1: Parametri naredbe \pstParaboloid<br />
Parametar SegmentColor ima sintaksu SegmentColor={[cmyk]{c,m,y,k}}.<br />
Boja za segmente mora biti postavljena kao cmyk boja, i u suprotnom njene<br />
vrijednosti ne mogu biti pročitane. Bijela boja segmenata data je sa<br />
SegmentColor={[cmyk]{0,0,0,0}}.<br />
Primjeri<br />
z<br />
\psset{showInside=false,<br />
SegmentColor={[cmyk]{0.34,0.90,0,0.02}}}<br />
\begin{pspicture}(-2,-1)(2,5)<br />
\pstThreeDCoor[linecolor=black,<br />
xMax=2,yMax=2,zMax=5]<br />
\pstParaboloid{3.5}{1}<br />
\end{pspicture}<br />
x<br />
y<br />
1 Ove vrijednosti za MiKTeX ver.2.7 imaju drugačije značenje: false–prikazuje unutrašnjost,<br />
true–ne prikazuje unutrašnjost.
•<br />
4.2 Površi drugog reda 50<br />
x<br />
1.0 2.0<br />
-2.0<br />
-1.0<br />
z<br />
4.0<br />
3.0<br />
2.0<br />
-2.0 -1.0<br />
1.0<br />
-1.0<br />
1.0 2.0<br />
y<br />
\begin{pspicture}(-2.6,-1.5)(3,5.6)<br />
\pstThreeDCoor[linewidth=1pt,<br />
linecolor=MidnightBlue,<br />
xMax=3,yMax=3,zMax=5.8,<br />
xMin=-2,yMin=-2,<br />
IIIDticks]<br />
\pstThreeDPut(-1,1.5,1){<br />
\pstParaboloid[showInside=false,<br />
SegmentColor={<br />
[cmyk]{0.47,0.91,0,0.08}}]<br />
{4}{2}}<br />
\psset{linecolor=MidnightBlue}<br />
\pstThreeDLine[linewidth=1pt<br />
]{->}(0,0,2.2)(0,0,5.8)<br />
\pstThreeDDot[drawCoor=true]<br />
(-1,1.5,1)<br />
\end{pspicture}<br />
z<br />
5.0<br />
4.0<br />
3.0<br />
2.0<br />
1.0<br />
-1.0<br />
-1.0<br />
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0<br />
x<br />
1.0<br />
\begin{pspicture}(-2.5,-4.7)(7,5.6)<br />
\psset{showInside=false}<br />
\pstThreeDCoor[linecolor=black,xMax=2,yMax=13,zMin=0,zMax=6,IIIDticks]<br />
\multido{\rA=2.0+2.5,\rB=0.15+0.20}{5}{<br />
\pstParaboloid[SegmentColor={[cmyk]{0.07,\rB,0,0.34}}](0,\rA,0){5}{1}}<br />
\pstThreeDLine[linestyle=dashed]{->}(0,0,5)(0,13,5)<br />
\end{pspicture}<br />
y
4.2 Površi drugog reda 51<br />
4.2.3 Sfera<br />
Definicija naredbe za crtanje sfere je:<br />
⋆ \pstThreeDSphere[Opcije](x,y,z){<strong>rad</strong>ijus} ⋆<br />
Tačka (x,y,z) je centar sfere. Moguće su sve opcije navedene u tablici 4.1,<br />
osim, naravno, opcija za parametar showInside.<br />
Primjeri<br />
z<br />
y<br />
\begin{pspicture}(-3.6,-1.8)(2,4.2)<br />
\psset{SegmentColor={[cmyk]<br />
{0.40,0.80,0.20,0}}}<br />
\pstThreeDCoor[xMin=-2,yMax=2,<br />
linecolor=black,<br />
linewidth=.8pt]<br />
\pstThreeDSphere(1,-1,2){1.6}<br />
\pstThreeDDot[dotstyle=pentagon*,<br />
drawCoor=true](1,-1,2)<br />
\end{pspicture}<br />
x<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-3.6,-1.8)(2,4.2)<br />
\psset{SegmentColor={[cmyk]<br />
{0,0,0,0}}}<br />
\pstThreeDCoor[xMin=-2,yMax=2,<br />
linecolor=black,<br />
linewidth=.8pt]<br />
\pstThreeDSphere[<br />
increment=8](1,-1,2){1.6}<br />
\pstThreeDDot[dotstyle=pentagon*,<br />
drawCoor=true](1,-1,2)<br />
\end{pspicture}
Poglavlje 5<br />
Matematičke funkcije<br />
Ovo poglavlje je posvećeno crtanju grafika matematičkih funkcija dvije promjenljive.<br />
Postoje dvije naredbe, koje <strong>rad</strong>e slično kao odgovarajuće naredbe paketa<br />
pst-plot. One su:<br />
⋆ \psplotThreeD – koja služi za grafičko predstavljanje funkcija f(x,y)<br />
zadanih u eksplicitnom obliku;<br />
⋆ \parametricplotThreeD – kojom se grafički predstavljaju funkcije date<br />
u parametarskom obliku.<br />
5.1 Funkcije zadane eksplicitno<br />
Naredba \psplotThreeD za crtanje ekslicitno zadanih funkcija nema istu<br />
sintaksu kao odgovarajuća naredba pst-plot paketa, ali obje <strong>rad</strong>e na isti<br />
način. Naredba je definisana sa:<br />
⋆ \psplotThreeD[Opcije](xMin,xMax)(yMin,yMax){Funkcija} ⋆<br />
Funkcija mora biti zapisana PostScript kodom, tj. inverznom poljskom<br />
notacijom (IPN). Takod¯er, jedini validni nazivi promjenljivih su x i y. (Na<br />
primjer: {x dup mul y dup mul add sqrt} je PostScript kod funkcije<br />
date sa f(x,y) = √ x 2 + y 2 .)<br />
U tablici 5.1 prikazani su parametri naredbe \psplotThreeD, kao i njihove<br />
moguće i default vrijednosti. Naredba \psplotThreeD ima iste opcije<br />
za parametar plotstyle kao i naredba \psplot, dok su opcije plotpoints<br />
parametra sada podijeljene na opcije za promjenljivu x i opcije za promjenljivu<br />
y.
5.1 Funkcije zadane eksplicitno 53<br />
Naziv parametra Moguće vrijednosti Default<br />
dots<br />
line<br />
polygon<br />
plotstyle curve none<br />
ecurve<br />
ccurve<br />
none<br />
showpoints false|true false<br />
xPlotpoints 25<br />
yPlotpoints 25<br />
xLines<br />
drawStyle yLines xLines<br />
xyLines<br />
yxLines<br />
hiddenLine false|true false<br />
Tablica 5.1: Parametri naredbe \psplotThreeD<br />
Na sljedećoj slici prikazan je grafik funkcije f(x,y) = (5x − y)e −(x2 +y 2) .<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-6.5,-2.8)(6,4)<br />
\psset{Alpha=30,Beta=20}<br />
\pstThreeDCoor[xMax=4,yMax=4.5,zMax=3.5,linecolor=black!60,<br />
linewidth=.8pt]<br />
\psplotThreeD[linewidth=.5pt,plotstyle=line,drawStyle=xLines,<br />
xPlotpoints=40,yPlotpoints=40](-3,3)(-3,3)<br />
{1 2.718183 x x mul y y mul add exp div x 5 mul y sub mul}<br />
\end{pspicture}
5.1 Funkcije zadane eksplicitno 54<br />
U ovom primjeru odabrane su opcijeplotstyle=line idrawStyle=xLines.<br />
Kroz naredne primjere će biti ilustovane i druge opcije parametraplotstyle.<br />
Opcijom plotstyle=curve postiže se glatkoća grafika.<br />
x<br />
y<br />
z<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
•<br />
Slika 5.1: Grafik funkcije f(x,y) sa opcijom plotstyle=dots<br />
x<br />
y<br />
z<br />
Slika 5.2: Grafik funkcije f(x,y) sa opcijom plotstyle=curve<br />
x<br />
y<br />
z<br />
Slika 5.3: Grafik funkcije f(x,y) sa opcijom plotstyle=ccurve
5.1 Funkcije zadane eksplicitno 55<br />
Parametrima xPlotpoints i yPlotpoints se bira broj tačaka za obje<br />
promjenljive, koji odred¯uje broj linija krive koje će se crtati. Te linije mogu<br />
biti nacrtane na četiri načina, koji se precizira parametrom drawStyle. Opcije<br />
parametra drawStyle su:<br />
⋆ xLines – linije se crtaju u smjeru x ose (default),<br />
⋆ yLines – linije se crtaju u smjeru y ose,<br />
⋆ xyLines – linije se prvo crtaju u smjeru x, a zatim u smjeru y ose,<br />
⋆ yxLines – linije se prvo crtaju u smjeru y, a zatim u smjeru x ose.<br />
U narednim primjerima nacrtan je grafik funkcije<br />
f(x,y) = sin x sin y sin(x + y)<br />
(⋆)<br />
te ilustrovane razne opcije za parametar drawStyle.<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-6.75,-3.75)(6,4)<br />
\pstThreeDCoor[xMax=5,yMax=5,zMax=3.5,linewidth=.8pt,<br />
linecolor=black!60]<br />
\psplotThreeD[linewidth=.8pt,plotstyle=curve,drawStyle=xLines,<br />
yPlotpoints=50,xPlotpoints=50](-4,4)(-4,4)<br />
{x 57 mul sin y 57 mul sin mul x y add 57 mul sin mul}<br />
\end{pspicture}
5.1 Funkcije zadane eksplicitno 56<br />
z<br />
x<br />
y<br />
Slika 5.4: Grafik funkcije (⋆) sa opcijom drawStyle=yLines<br />
z<br />
x<br />
y<br />
Slika 5.5: Grafik funkcije (⋆) sa opcijom drawStyle=xyLines<br />
Crtanje trodimenzionalnih funkcija sa krivuljama koje su transparentne<br />
(prozirne) čini teško vidljivim tačke koje se nalaze ispred ili iza drugih. Zbog<br />
toga, \psplotThreeD naredba ima opcioni parametar hiddenLine, koji <strong>rad</strong>i<br />
na način da prostor izmed¯u svake dvije linije krive ispuni bijelom bojom<br />
(default).<br />
U sljedećim primjerima ilustrovana je primjena ovog parametra na primjeru<br />
funkcije<br />
(<br />
f(x,y) = 10 x 3 + xy 4 − x )<br />
e −(x2 +y 2 ) + e<br />
−((x−1.225) 2 +y 2 ) (⋆⋆)<br />
5
5.1 Funkcije zadane eksplicitno 57<br />
z<br />
x<br />
y<br />
\begin{pspicture}(-6.8,-3.2)(6,4.4)<br />
\psset{Beta=15} \psscalebox{.8}{<br />
\pstThreeDCoor[xMax=5,yMax=5,zMax=4.5,linecolor=black,linewidth=.8pt]<br />
\psplotThreeD[plotstyle=curve,hiddenLine=true,drawStyle=xLines,<br />
yPlotpoints=50,xPlotpoints=50,linewidth=1pt,linecolor=DarkViolet]<br />
(-4,4)(-4,4){x 3 exp x y 4 exp mul add x 5 div sub 10 mul<br />
2.729 x dup mul y dup mul add neg exp mul<br />
2.729 x 1.225 sub dup mul y dup mul add neg exp add}}<br />
\end{pspicture}<br />
z<br />
x<br />
y<br />
Slika 5.6: Grafik funkcije (⋆⋆) sa opcijamadrawStyle=yLines ihiddenLine=true
5.1 Funkcije zadane eksplicitno 58<br />
5.1.1 Primjeri<br />
z<br />
x<br />
y<br />
f (x,y) = (5x − y)e −(x2 +y 2 )<br />
\begin{pspicture}(-6.5,-2.6)(6,3.25)<br />
\psset{Beta=25,fillstyle=g<strong>rad</strong>ient,g<strong>rad</strong>begin=DarkBlue,g<strong>rad</strong>end=DarkViolet}<br />
\pstThreeDCoor[xMax=4,yMax=4,zMax=3,linecolor=black!60,linewidth=.9pt]<br />
\psplotThreeD[linewidth=.5pt,plotstyle=curve,drawStyle=xLines,<br />
xPlotpoints=40,yPlotpoints=40](-3,3)(-3,3)<br />
{1 2.718183 x x mul y y mul add exp div x 5 mul y sub mul}<br />
\rput(4.4,-2.25){$\mathit{f(x,y)=(5x-y)e^{-(x^{2}+y^{2})}}$}<br />
\end{pspicture}<br />
z<br />
x<br />
y<br />
f (x,y) = 4 − x2 − y 2<br />
e x2 +y 2<br />
\begin{pspicture}(-6.7,-3)(6,3.7)<br />
\pstThreeDCoor[xMax=4,yMax=4,zMax=3.6,linewidth=.8pt,linecolor=black]<br />
\psscalebox{.8}{\psplotThreeD[plotstyle=curve,drawStyle=xyLines,<br />
linecolor=DarkOrchid,yPlotpoints=50,xPlotpoints=50](-4,4)(-4,4)<br />
{4 x x mul sub y y mul sub 1 2.73 x x mul y y mul add exp div mul}}<br />
\rput(4.5,-2.5){$\mathit{f(x,y)=\displaystyle\frac{4-x^{2}-y^{2}}<br />
{e^{x^{2}+y^{2}}}}$}<br />
\end{pspicture}
5.1 Funkcije zadane eksplicitno 59<br />
z<br />
x<br />
y<br />
f (x,y) = 12 sin √ x 2 + y 2<br />
√<br />
x2 + y 2<br />
\begin{pspicture}(-6.8,-3.1)(6,3.4)<br />
\pstThreeDCoor[xMax=5,yMax=5,zMax=3.5,linecolor=black!70,linewidth=.9pt]<br />
\psscalebox{0.2}{\psplotThreeD[plotstyle=curve,drawStyle=xLines,<br />
xPlotpoints=75,yPlotpoints=75,linewidth=3.5pt,linecolor=DarkBlue]<br />
(-20,20)(-20,20){x x mul y y mul add sqrt 57 mul sin 12 mul x x<br />
mul y y mul add sqrt div}}<br />
\rput(4.25,-2.6){$\mathit{f(x,y)=\displaystyle<br />
\frac{12\sin\sqrt{x^{2}+y^{2}}}{\sqrt{x^{2}+y^{2}}}}$}<br />
\end{pspicture}<br />
z<br />
x<br />
y<br />
f (x,y) = 5 4 sin √ x 2 + y 2<br />
\begin{pspicture}(-6.6,-2.9)(6,3.4)<br />
\pstThreeDCoor[xMax=5,yMax=5,zMax=3.5,linewidth=.8pt,linecolor=black!70]<br />
\psscalebox{.2}{\psplotThreeD[plotstyle=curve,drawStyle=yLines,<br />
yPlotpoints=70,xPlotpoints=70,linewidth=3.5pt,linecolor=DarkBlue]<br />
(-18,18)(-18,18){x x mul y y mul add sqrt 57 mul sin 1.25 mul}}<br />
\rput(4.5,-2.5){$\mathit{f(x,y)=\displaystyle\frac{5}{4}<br />
\sin\sqrt{x^{2}+y^{2}}}$}<br />
\end{pspicture}
5.1 Funkcije zadane eksplicitno 60<br />
x<br />
y<br />
z<br />
f (x,y)=x 2 −y 2<br />
\begin{pspicture}(-7,-2.9)(6,3.4)<br />
\psset{Alpha=25,Beta=15}<br />
\pstThreeDCoor[xMax=4,yMax=4,zMax=3,linewidth=.8pt,linecolor=black]<br />
\psplotThreeD[plotstyle=curve,drawStyle=xyLines,linecolor=DarkOrchid,<br />
yPlotpoints=50,xPlotpoints=50,linewidth=.8pt](-1.5,1.5)(-1.5,1.5)<br />
{x x mul y y mul sub}<br />
\rput(4.9,-2.6){$\mathit{f(x,y)\!=\!x^{2}\!-\!y^{2}}$}<br />
\end{pspicture}<br />
x<br />
y<br />
z<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
f (x,y) = 5 2 − 2x2 − y 2<br />
\begin{pspicture}(-6.7,-2.8)(6,4)<br />
\psset{Alpha=25,Beta=15,dotstyle=pentagon*,dotsize=1.5pt}<br />
\pstThreeDCoor[xMax=4,yMax=4,zMax=3.5,linewidth=.8pt,linecolor=black]<br />
\psplotThreeD[plotstyle=dots,drawStyle=xyLines,linecolor=DarkOrchid,<br />
xPlotpoints=50,yPlotpoints=50,linewidth=.7pt](-1.25,1.25)(-1.25,1.25)<br />
{2.5 x x mul 2 mul sub y y mul sub}<br />
\rput(4.6,-2.4){$\mathit{f(x,y)=\displaystyle\frac{5}{2}-2x^{2}-y^{2}}$}<br />
\end{pspicture}
5.2 Funkcije zadane parametarski 61<br />
5.2 Funkcije zadane parametarski<br />
Za grafičko predstavljanje trodimenzionalnih krivih i površi datih u parametarskom<br />
obliku koristi se naredba<br />
⋆ \parametricplotThreeD[Opcije](t1,t2)(u1,u2){x y z} ⋆<br />
gdje su x, y i z parametarske funkcije, koje zavise od parametara t i u:<br />
x = f(t,u)<br />
y = f(t,u)<br />
z = f(t,u)<br />
Jedini mogući nazivi za parametre su t i u, sa intervalima definisanosti<br />
(t1,t2) i(u1,u2). Funkcijex,yizse u naredbi navode zapisane PostScript<br />
kodom, odvojene med¯usobno samo praznim prostorom. Redoslijed navod¯enja<br />
funkcija nije važan.<br />
Parametarske funkcije krive u prostoru zavise samo od jednog parametra,<br />
pa se za predstavljanje krivih koristi naredba<br />
⋆ \parametricplotThreeD[Opcije](t1,t2){x y z} ⋆<br />
a naziv za parametar mora biti t (default). Med¯utim, isto se može postići i<br />
upotrebom prve naredbe uz interval za parametar u (0,0).<br />
Opcije za naredbu \parametricplotThreeD su iste kao i opcije naredbe<br />
\psplotThreeD, i prikazane su u tablici 5.1.<br />
U sljedećem primjeru nacrtana je cilindrična spirala poluprečnika 2.5, čije<br />
su parametarske jednačine:<br />
x = r cos t<br />
y = r sin t<br />
z = t/600<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-3.3,-2)(3.2,5.4)<br />
\pstThreeDCoor[<br />
linecolor=black!75,<br />
linewidth=0.8pt,<br />
zMax=5.5]<br />
\parametricplotThreeD[<br />
linecolor=NiceRed,<br />
xPlotpoints=200,<br />
linewidth=1.7pt,<br />
plotstyle=curve](0,2160)<br />
{2.5 t cos mul<br />
2.5 t sin mul<br />
t 600 div}<br />
\end{pspicture}
5.2 Funkcije zadane parametarski 62<br />
U prethodnom primjeru je vrijednost parametra t za z koordinatu podijeljena<br />
sa 600. Razlog za to je taj što su vrijednosti parametratustepenima,<br />
a interval definisanosti (0 ◦ , 2160 ◦ ), te bi dužina spirale bila ogromna.<br />
Umjesto uptrebe naredbe\psplotThreeD se brojne matematičke funkcije<br />
mogu predstavljati pomoću naredbe \parametricplotThreeD, ako su poznate<br />
njihove parametarske jednačine. Isto tako je moguće, na primjer, umjesto<br />
upotrebe \pstThreeDSphere naredbe nacrtati sferu pomoću njenih parametarskih<br />
jednačina. Parametarske jednačine sfere se mogu zadati na dva<br />
načina:<br />
x = r cos t · sin u<br />
y = r cos t · cosu<br />
z = r sin t<br />
(⋆)<br />
x = r cos u · sin t<br />
y = r cos u · cos t<br />
z = r sin u<br />
(⋆⋆)<br />
Njihovim primjenama se ne dobijaju isti grafici, što ilustruje sljedeći primjer.<br />
x<br />
x<br />
z<br />
z<br />
y<br />
y<br />
\begin{pspicture}(-3.2,-2.5)(2.8,3.2)<br />
\pstThreeDCoor[<br />
xMax=3,yMax=3,zMax=3,<br />
linecolor=black!75,<br />
linewidth=1pt]<br />
\parametricplotThreeD[<br />
linecolor=NiceRed,<br />
plotstyle=curve,<br />
linewidth=1.15pt,<br />
yPlotpoints=20](0,360)(0,360)<br />
{2 t cos mul u sin mul<br />
2 t cos mul u cos mul<br />
2 t sin mul}<br />
\end{pspicture}<br />
\begin{pspicture}(-3.2,-2.5)(2.8,3.5)<br />
\pstThreeDCoor[<br />
xMax=3,yMax=3,zMax=3,<br />
linecolor=black!75,<br />
linewidth=1pt]<br />
\parametricplotThreeD[<br />
linecolor=NiceRed,<br />
linewidth=1.15pt,<br />
plotstyle=curve,<br />
yPlotpoints=20](0,360)(0,360)<br />
{2 u cos mul t sin mul<br />
2 u cos mul t cos mul<br />
2 u sin mul}<br />
\end{pspicture}<br />
Obje \parametricplotThreeD naredbe moguće je upotrijebiti zajedno<br />
unutar istog pspicture okruženja, a rezultat je prikazan na sljedećem primjeru.
5.2 Funkcije zadane parametarski 63<br />
x<br />
z<br />
y<br />
\begin{pspicture}(-3.2,-3)(2.8,3.6)<br />
\pstThreeDCoor[xMax=3,yMax=3,zMax=3,<br />
linecolor=black!75,linewidth=1pt]<br />
\psset{<br />
linecolor=NiceRed,yPlotpoints=20,<br />
plotstyle=curve,linewidth=1.15pt}<br />
\parametricplotThreeD(0,360)(0,360)<br />
{2 t cos mul u sin mul<br />
2 t cos mul u cos mul<br />
2 t sin mul}<br />
\parametricplotThreeD(0,360)(0,360)<br />
{2 u cos mul t sin mul<br />
2 u cos mul t cos mul<br />
2 u sin mul}<br />
\end{pspicture}<br />
5.2.1 Primjeri<br />
Plückerov konoid<br />
Plücker-ovi konoidi su pravčaste plohe (plohe koje nastaju pomjeranjem<br />
pravca duž neke krivulje) koje zadovoljavaju sljedeće parametarske jednačine:<br />
x(u,v) = v cos u<br />
y(u,v) = v sin u k ∈ N, (u,v) ∈ [0, 2π] 2<br />
z(u,v) = 3 sin ku<br />
Na sljedećoj slici prikazan je Plücker-ov konoid za k = 5.<br />
z<br />
x<br />
y<br />
\psset{xunit=0.9,yunit=0.7}<br />
\begin{pspicture}(-3.5,-5)(3,5)<br />
\psset{Alpha=125,Beta=65}<br />
\pstThreeDCoor[zMax=5.5,<br />
linecolor=black!75,<br />
linewidth=0.8pt]<br />
\parametricplotThreeD[<br />
linecolor=violet,<br />
plotstyle=curve,<br />
linewidth=0.2pt,<br />
yPlotpoints=40<br />
](0,360)(0,360)<br />
{t cos u mul 120 div<br />
t sin u mul 120 div<br />
t 5 mul sin 3 mul}<br />
\end{pspicture}
5.2 Funkcije zadane parametarski 64<br />
Torus<br />
Torus je ploha koja nastaje rotacijom kružnice poluprečnika r 1 oko ose koja<br />
je od njenog središta udaljena za r 2 . Ako kružnica leži u xz ravni i rotira se<br />
oko z ose, parametarske jednačine torusa su:<br />
x(u,v) = (r 2 + r 1 cos v) cos u<br />
y(u,v) = (r 2 + r 1 cos v) sin u (u,v) ∈ [0, 2π] 2<br />
z(u,v) = r 1 sin v<br />
Torus sa poluprečnicima r 1 = 1 i r 2 = 1.7 nad područjem [0, 3π/2] × [0, 2π]<br />
prikazan je na slici ispod.<br />
z<br />
y<br />
x<br />
\begin{pspicture}(-3.2,-2.6)(3,4.2)<br />
\psset{Alpha=145,Beta=30}<br />
\pstThreeDCoor[<br />
xMax=3.75,zMax=3.5,<br />
linecolor=black!75,<br />
linewidth=0.8pt]<br />
\parametricplotThreeD[<br />
linecolor=MidnightBlue,<br />
plotstyle=curve,<br />
yPlotpoints=60,<br />
linewidth=.6pt](0,270)(0,360)<br />
{u cos 1.7 add t cos mul<br />
u cos 1.7 add t sin mul<br />
u sin}<br />
\end{pspicture}<br />
Evo primjera još jedne slične plohe.<br />
x<br />
z<br />
y<br />
\psset{unit=1.25}<br />
\begin{pspicture}(-2.8,-2.4)(3,3)<br />
\psset{Alpha=40,Beta=60}<br />
\pstThreeDCoor[<br />
xMax=3,yMax=3,zMax=5,<br />
linecolor=black!75,<br />
linewidth=0.8pt]<br />
\parametricplotThreeD[<br />
linecolor=thistle,<br />
plotstyle=curve,<br />
yPlotpoints=60,<br />
linewidth=.5pt](0,360)(0,360)<br />
{t sin t cos u sin add u cos}<br />
\end{pspicture}
5.2 Funkcije zadane parametarski 65<br />
Njene parametarske jednačine su:<br />
x(u,v) = sin u<br />
y(u,v) = cosu + sinv (u,v) ∈ [0, 2π] 2<br />
z(u,v) = cosv<br />
Helikoid<br />
Helikoid je, takod¯er, pravčasta ploha koja nastaje istovremenom rotacijom<br />
i translacijom neke dužine. Kraj te dužine se kreće po osi okomitoj na tu<br />
dužinu, a drugi kraj rotira oko te iste ose. Parametarske jednačine helikoida<br />
su:<br />
x(u,v) = sinhucos v<br />
y(u,v) = sinhusin v u ∈ R, v ∈ [0, 2π]<br />
z(u,v) = v<br />
z<br />
x<br />
y<br />
\psset{unit=0.85}<br />
\begin{pspicture}(-4,-7)(3,6.2)<br />
\psset{Beta=36}<br />
\pstThreeDCoor[<br />
xMin=-2,yMin=-2,zMin=-6,<br />
xMax=5,yMax=5,zMax=7,<br />
linecolor=black!80,<br />
linewidth=0.8pt]<br />
\parametricplotThreeD[<br />
linecolor=NiceRed,<br />
plotstyle=curve,<br />
yPlotpoints=300,<br />
linewidth=.5pt](-2,2)(-6,6)<br />
{2.71 t exp 2.71 -1 t mul exp<br />
sub 2 div u 57 mul cos mul<br />
2.71 t exp 2.71 -1 t mul exp<br />
sub 2 div u 57 mul sin mul<br />
u}<br />
\end{pspicture}
5.2 Funkcije zadane parametarski 66<br />
Hiperboloid<br />
Parametarske jednačine jednostranog hiperboloida su:<br />
a dvostranog:<br />
x(u,v) = coshucos v<br />
y(u,v) = coshusin v u ∈ R, v ∈ [0, 2π]<br />
z(u,v) = sinhu<br />
x(u,v) = sinhucos v<br />
y(u,v) = 1/2 sinh u sin v u ∈ R, v ∈ [0, 2π]<br />
z(u,v) = ± cosh u<br />
Na sljedećoj slici prikazan je dvostrani hiperboloid.<br />
x<br />
z<br />
y<br />
\psset{unit=0.85}<br />
\begin{pspicture}(-4,-6.8)(3,7.1)<br />
\pstThreeDCoor[<br />
xMin=-4,yMin=-4,zMin=-5.5,<br />
xMax=4,yMax=4,zMax=5.5,<br />
linecolor=black!80,<br />
linewidth=0.8pt]<br />
\psset{linecolor=MidnightBlue,<br />
plotstyle=curve,<br />
yPlotpoints=100,<br />
linewidth=.5pt}<br />
\parametricplotThreeD<br />
(-2.3,2.3)(0,360)<br />
{2.71 t exp 2.71 -1 t mul exp<br />
sub 2 div u cos mul<br />
2.71 t exp 2.71 -1 t mul exp<br />
sub 4 div u sin mul<br />
2.71 t exp 2.71 -1 t mul exp<br />
add 2 div}<br />
\parametricplotThreeD<br />
(-2.3,2.3)(-180,180)<br />
{2.71 t exp 2.71 -1 t mul exp<br />
sub 2 div u cos mul<br />
2.71 t exp 2.71 -1 t mul exp<br />
sub 4 div u sin mul<br />
2.71 t exp 2.71 -1 t mul exp<br />
add 2 div -1 mul}<br />
\end{pspicture}
5.2 Funkcije zadane parametarski 67<br />
Vivianijeva krivulja<br />
Viviani-jeva krivulja je kriva čije su parametarske jednačine:<br />
x(t) = 1 + cost<br />
y(t) = sint t ∈ [−2π, 2π]<br />
z(t) = 2 sin t 2<br />
Njen grafik prikazan je na sljedećoj slici.<br />
z<br />
y<br />
x<br />
\psset{xunit=1.5,yunit=1.4,<br />
Alpha=165,Beta=38}<br />
\begin{pspicture}(-2.2,-3)(3,3.4)<br />
\pstThreeDCoor[<br />
xMin=-2,yMin=-3,zMin=-3.25,<br />
xMax=2.5,yMax=2.5,zMax=3.5,<br />
linecolor=black!80,<br />
linewidth=.8pt]<br />
\psset{linecolor=DarkBlue,<br />
plotstyle=curve,<br />
linewidth=1.7pt}<br />
\parametricplotThreeD(-360,360)<br />
{t cos 1 add<br />
t sin<br />
t 2 div sin 2 mul}<br />
\end{pspicture}<br />
Interesantna je činjenica da je Vivianijeva krivulja prodorna kriva kugle<br />
sa centrom u koordinatnom početku i poluprečikom r = 2 i cilindra čija je<br />
dužina MN osa sa krajnjim tačkama M(1, 0, −2) i N(1, 0, 2), a poluprečnik<br />
osnovice r = 2.<br />
Parametarske jednačine opisanog cilindra su:<br />
x(u,v) = cosu + 1<br />
y(u,v) = sinu (u,v) ∈ [0, 2π] × [−2, 2]<br />
z(u,v) = v<br />
a grafik je predstavljen na slici zajedno sa Vivianijevom krivuljom.<br />
Takod¯er su prikazani kugla sa centrom u koordinatnom početku, poluprečnika<br />
2, cilindar i Vivianijeva krivulja na istoj slici.
5.2 Funkcije zadane parametarski 68<br />
z<br />
y<br />
x<br />
\psset{xunit=1.5,yunit=1.4,<br />
Alpha=165,Beta=38}<br />
\begin{pspicture}(-2.2,-3.25)(3,3.65)<br />
\pstThreeDCoor[<br />
xMin=-2,yMin=-3,zMin=-3.25,<br />
xMax=2.5,yMax=2.5,zMax=3.5,<br />
linecolor=black!80,<br />
linewidth=.8pt]<br />
\psset{linecolor=DarkOrchid!90,<br />
plotstyle=curve,<br />
yPlotpoints=30,<br />
linewidth=1.25pt}<br />
\parametricplotThreeD(0,360)(-2,2)<br />
{t cos 1 add t sin u}<br />
\psset{linecolor=DarkBlue,<br />
plotstyle=curve,<br />
linewidth=1.7pt}<br />
\parametricplotThreeD(-360,360)<br />
{t cos 1 add<br />
t sin<br />
t 2 div sin 2 mul}<br />
\end{pspicture}<br />
z<br />
y<br />
x<br />
\psset{xunit=1.5,yunit=1.4,<br />
Alpha=165,Beta=38}<br />
\begin{pspicture}(-2.4,-3.65)(3,4)<br />
\pstThreeDCoor[<br />
xMin=-2,yMin=-3,zMin=-3.25,<br />
xMax=2.5,yMax=2.5,zMax=3.5,<br />
linecolor=black!80,<br />
linewidth=.8pt]<br />
\psset{plotstyle=curve,<br />
linecolor=DarkOrchid!90}<br />
\parametricplotThreeD[<br />
yPlotpoints=70,<br />
linewidth=0.25pt](0,360)(0,360)<br />
{2 t cos mul u sin mul<br />
2 t cos mul u cos mul<br />
2 t sin mul}<br />
\parametricplotThreeD[<br />
yPlotpoints=30,<br />
linewidth=1.25pt](0,360)(-2,2)<br />
{t cos 1 add t sin u}<br />
\parametricplotThreeD[<br />
linecolor=DarkBlue,<br />
linewidth=1.7pt](-360,360)<br />
{t cos 1 add t sin t 2 div sin 2 mul}<br />
\end{pspicture}
Dodatak A<br />
Grafičko predstavljanje<br />
datoteka podataka<br />
Grafičko predstavljanje datoteka podataka koje podržavaju <strong>3D</strong> koordinate omogućava<br />
pst-3dplot paket, upotrebom naredbi, veoma sličnih odgovarajućim naredbama<br />
pst-plot paketa. U narednom odjeljku su, bez ozbiljnijeg pristupa,<br />
pomenute naredbe definisane.<br />
A.1 Naredbe<br />
Grafičko predstavljanje datoteka podataka koje podržavaju <strong>3D</strong> koordinate<br />
vrši se pomoću naredbi:<br />
⋆<br />
\fileplotThreeD[Opcije]{datoteka}<br />
\dataplotThreeD[Opcije]{datoteka}<br />
\listplotThreeD[Opcije]{datoteka}<br />
⋆<br />
Za njihovo korištenje potrebna je datoteka podataka, unutar koje podaci,<br />
po dogovoru, moraju biti predstavljeni nekim od sljedećih načina:<br />
0.0000 1.0000 0.0000<br />
-0.4207 0.9972 0.0191<br />
...<br />
0.0000, 1.0000, 0.0000<br />
-0.4207, 0.9972, 0.0191<br />
...<br />
( 0.0000,1.0000,0.0000)<br />
(-0.4207,0.9972,0.0191)<br />
...
A.1 Naredbe 70<br />
{ 0.0000,1.0000,0.0000}<br />
{-0.4207,0.9972,0.0191}<br />
...<br />
Kako će podaci biti grafički prikazani, zavisi od izbora opcije za parametar<br />
plotstyle, a moguće su sljedeće vrijednosti: dots, line, polygon, curve,<br />
ccurve, ecurve.<br />
Više o naredbama za grafičko predstavljanje datoteka podataka moguće je<br />
naći u djelu <strong>3D</strong> plots: PST-3dplot, A PSTricks package for drawing 3d objects,<br />
v1.83 – autor Herbert Voß.
Dodatak B<br />
Paket PST-light3d<br />
pst-light3d je pstricks paket koji omogućava dodavanje trodimenzionalnih<br />
efekata na tekstu i dvodimenzionalnim pstricks graficima. Trodimenzinalni<br />
efekti se postižu upotrebom dvije osnovne pst-ligh3d naredbe:<br />
⋆ \PstLightThreeDText<br />
⋆ \PstLightThreeDGraphic<br />
U narednim odjeljcima će, kroz brojne primjere, biti ilustrovan način <strong>rad</strong>a svake<br />
od njih, uz dodatnu upotrebu odred¯enih parametara.<br />
B.1 Naredba \PstLightThreeDText<br />
Naredba je definisana sa<br />
⋆ \PstLightThreeDText[Opcije]{Tekst} ⋆<br />
i bit će ilustrovana kroz naredne primjere.<br />
B.1.1<br />
Primjeri<br />
Parametar linestyle<br />
\DeclareFixedFont{\Bf}{T1}{ptm}{b}{n<br />
}{2.5cm}<br />
\PstLightThreeDText[fillstyle=solid,<br />
fillcolor=lavender]{\Bf Tekst<br />
}\\[0.5cm]<br />
\PstLightThreeDText[fillcolor=<br />
lavender,fillstyle=solid,linestyle<br />
=none]{\Bf Tekst}%
B.1 Naredba \PstLightThreeDText 72<br />
Parametar LightThreeDAngle<br />
\psset{linestyle=none,fillstyle=solid<br />
,fillcolor=DarkViolet}<br />
\DeclareFixedFont{\Bf}{T1}{ptm}{b}{n<br />
}{2.5cm}<br />
\PstLightThreeDText[LightThreeDAngle<br />
=0]{\Bf Tekst}\\[0.5cm]<br />
\PstLightThreeDText[LightThreeDAngle<br />
=90]{\Bf Tekst}<br />
Parametri LightThreeDXLength i LightThreeDYLength<br />
\psset{linestyle=none,fillstyle=solid<br />
,fillcolor=thistle}<br />
\DeclareFixedFont{\Bf}{T1}{ptm}{b}{n<br />
}{2.5cm}<br />
\PstLightThreeDText[<br />
LightThreeDXLength=0.5,<br />
LightThreeDYLength=-1]{\Bf Tekst<br />
}\\[1.2cm]<br />
\PstLightThreeDText[<br />
LightThreeDXLength=-0.5,<br />
LightThreeDYLength=0.5]{\Bf Tekst<br />
}%<br />
Parametar LightThreeDColorPsCommand<br />
\psset{linestyle=none,fillstyle=solid,<br />
fillcolor=thistle}<br />
\DeclareFixedFont{\Sf}{T1}{phv}{b}{n}{3<br />
cm}<br />
\PstLightThreeDText[<br />
LightThreeDColorPsCommand=1.2<br />
divsetgray]{\Sf 752}\\[0.5cm]<br />
\PstLightThreeDText[<br />
LightThreeDColorPsCommand=2.5 div<br />
setgray]{\Sf 752}%
B.2 Naredba \PstLightThreeDGraphic 73<br />
\psset{linestyle=none,fillstyle=solid}<br />
\DeclareFixedFont{\Rm}{T1}{ptm}{m}{n}{3<br />
cm}<br />
\PstLightThreeDText[fillcolor=my_violet,<br />
LightThreeDColorPsCommand=2.5<br />
div 0.7 exch 0.8 sethsbcolor]{\Rm<br />
687}\\[0.5cm]<br />
\PstLightThreeDText[fillcolor=DarkGreen,<br />
LightThreeDColorPsCommand=2<br />
div 0.5 exch 0.2 exch sethsbcolor]{\Rm<br />
687}<br />
\DeclareFixedFont{\Rmb}{T1}{ptm}{m}{n}{3.5cm}<br />
\PstLightThreeDText[linestyle=none,fillstyle=solid,fillcolor=MidnightBlue,<br />
LightThreeDColorPsCommand=1.6 div 0.55 exch 0.7 exch sethsbcolor]{\Rmb<br />
PSTricks}<br />
B.2 Naredba \PstLightThreeDGraphic<br />
Naredba je definisana sa<br />
⋆ \PstLightThreeDGraphic[Opcije]{pst-plot naredbe} ⋆<br />
gdje se u dijelu za opcije koriste svi već pomenuti parametri. Ova naredba<br />
je, takod¯er, ilustrovana kroz primjere.<br />
B.2.1<br />
Primjeri<br />
\psset{unit=0.5cm,linestyle=solid,<br />
fillstyle=none}<br />
\begin{pspicture}(-0.25,-4.5)(2.25,4)<br />
\PstLightThreeDGraphic[<br />
LightThreeDXLength=0.4,<br />
LightThreeDColorPsCommand=<br />
1.8 div 0.9 exch 0.4 exch sethsbcolor]<br />
{\pscurve(0,2)(1,-3)(2,2)(4,3)(7,0)}<br />
\end{pspicture}
B.2 Naredba \PstLightThreeDGraphic 74<br />
\psset{unit=0.5cm,linestyle=solid,<br />
fillstyle=none}<br />
\begin{pspicture}(-0.25,-4.5)(2.25,4)<br />
\PstLightThreeDGraphic[<br />
LightThreeDXLength=0.8,<br />
LightThreeDColorPsCommand=<br />
3 div 0.82 exch 0.9 exch sethsbcolor]<br />
{\pspolygon(0,2)(1,-3)(2,0)(4,1)(6,1)(7,3)}<br />
\end{pspicture}<br />
\psset{unit=0.5cm,linestyle=solid,<br />
fillstyle=none}<br />
\begin{pspicture}(-0.25,-4.5)(2.25,4)<br />
\PstLightThreeDGraphic[<br />
LightThreeDXLength=0.8,<br />
LightThreeDColorPsCommand=<br />
3 div 0.6 exch 0.9 exch sethsbcolor]<br />
{\psellipse(3,0)(1.5,3)}<br />
\end{pspicture}<br />
\SpecialCoor \def\PstCoordinates{}<br />
\Multido{\nDistance=0.00+0.02,\iAngle=0+20<br />
}{200}{\edef\PstCoordinates{<br />
\PstCoordinates(\nDistance;\iAngle)}}<br />
\psset{unit=0.5cm}<br />
\begin{pspicture}(-4,-4.8)(4.4,4.6)<br />
\PstLightThreeDGraphic[LightThreeDLength=0.2,<br />
LightThreeDColorPsCommand=<br />
2.8 div 0.8 exch 0.4 exch sethsbcolor]<br />
{\expandafter\pscurve\PstCoordinates}<br />
\end{pspicture}<br />
\SpecialCoor \def\PstCoordinates{}<br />
\Multido{\nDistance=0.00+0.02,\iAngle=0+20<br />
}{200}{\edef\PstCoordinates{<br />
\PstCoordinates(\nDistance;\iAngle)}}<br />
\psset{unit=0.5cm}<br />
\begin{pspicture}(-4,-5.45)(4.4,5.25)<br />
\PstLightThreeDGraphic[LightThreeDLength=0.2,<br />
LightThreeDColorPsCommand=<br />
/Counter Counter 0.0001 add def 2 mul Counter<br />
exch 0.8 exch sethsbcolor,<br />
LightThreeDAngle=30]{\pstVerb{/Counter 0 def}<br />
\expandafter\pscurve\PstCoordinates}<br />
\end{pspicture}
B.2 Naredba \PstLightThreeDGraphic 75<br />
sin 10x<br />
0.5 cos 30x<br />
1.2<br />
1.0<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0.0<br />
-0.2<br />
-0.4<br />
-0.6<br />
-0.8<br />
-1.0<br />
-1.2<br />
0 0.2 0.4 0.6 0.8 1.0<br />
x<br />
\psset{xunit=8cm,yunit=3cm}<br />
\begin{pspicture}(-0.45,-1.6)(1,1.4)<br />
\psaxes[Dx=0.2,Oy=-1.2,Dy=0.2,tickstyle=top,<br />
axesstyle=frame](0,-1.2)(1,1.2)<br />
\psset{plotpoints=500,LightThreeDXLength=0.3,<br />
LightThreeDYLength=-0.3}<br />
\PstLightThreeDGraphic[LightThreeDColorPsCommand=1 div 0.9 exch<br />
0.2 exch sethsbcolor]{\psplot{0}{0.95}{x 10 mul 57.296 mul sin}}<br />
\PstLightThreeDGraphic[LightThreeDColorPsCommand=1.6 div 0.55 exch<br />
0.7 exch sethsbcolor]{\psplot{0}{0.95}{x 30 mul 57.296 mul cos 2<br />
div}}<br />
\rput(-0.3,0.1){\thistle{$\sin 10x$}}<br />
\rput(-0.3,-0.1){\MidnightBlue{$0.5\cos 30x$}}<br />
\rput(0.5,-1.5){$x$}<br />
\end{pspicture}
Dodatak C<br />
Ostali PSTricks <strong>3D</strong> paketi<br />
Kao što je već na samom početku pomenuto, postoji nekoliko pstricks paketa<br />
za crtanje trodimenzionalnih grafičkih objekata. Ovdje će biti pomenuti neki<br />
od njih, dok se o ostalima više može naći na web adresi homepage stranice<br />
pstricks-a:<br />
⋆ http://tug.org/PSTricks/,<br />
ili konkretno za pakete:<br />
⋆ http://tug.org/PSTricks/main.cgi?file=packages.<br />
Na ovoj adresi moguće je vršiti download svih dostupnih paketa, kao i odgovarajuće<br />
dokumentacije koja sadrži sva potrebna uputstva za korištenje.<br />
C.1 pst-solides3d<br />
Paket je dostupan i na adresi<br />
⋆ http://syracuse.eu.org/syracuse/pstricks/pst-solides3d/.<br />
Pomoću ovog paketa moguće je grafičko predstavljanje definisanih geometrijskih<br />
tijela, kao i korištenje već postojećih (predefinisanih unutar samog<br />
paketa, koje se u dokument uključuju parametrom object=vrsta objekta).<br />
Geometrijska tijela mogu biti prikazana sa ili bez skrivenih ivica, čije boje<br />
mogu varirati sa efektima sjenčenja.<br />
Posebno je značajan za predstavlja-nje matematičkih funkcija. Pored¯enja<br />
<strong>rad</strong>i, pomoću pst-solides3d paketa moguće je nacrtati funkcije koje će<br />
izgledati kao da su nacrtane pomoću software paketa Mathematica.<br />
Ovaj paket omogućava i projekciju dvodimenzinalnog crteža/teksta na<br />
bilo koju ravan proizvoljog geometrijskog tijela.
C.2 pst-ob3d 77<br />
C.2 pst-ob3d<br />
Paket služi za predstavljanje osnovnih <strong>3D</strong> grafičkih objekata. Do sada postoje<br />
samo dvije definisane naredbe: \PstCube za crtanje kocke i \PstDie<br />
za crtanje kockice za kockanje. Ipak, postoje brojni dodatni parametri, čijim<br />
se maštovitim kombinacijama dobijaju zanimljivi oblici.<br />
C.3 pst-vue3d<br />
<strong>3D</strong> reprezentacija objekata je jedan od najinteresantnijih aspekata komjuterske<br />
znanosti i postoje razne oblasti industrije koje se koriste istim (dizajn automobila,<br />
aviona, video igrica . . . ). Ovaj paket omogućava, upravo za ovakve<br />
svrhe potrebnu, manipulaciju <strong>3D</strong> objektima, koja se postiže odgovarajućim<br />
izborom perspektive posmatranja objekta. Jedna od ovih manipulacija je i<br />
mogućnost predstavljanja unutrašnjosti <strong>3D</strong> objekata . . .<br />
C.4 pst-gr3d<br />
pst-gr3d je pstricks paket za crtanje trodimenzionalne mreže. Postoji<br />
samo jedna glavna naredba \PstGridThreeD i nekoliko parametara za specifikaciju<br />
karakteristika <strong>3D</strong> mreže.<br />
C.5 pst-fr3d<br />
Ovaj paket omogućava crtanje trodimenzionalnih okvira (framed boxes),<br />
korištenjem naredbe \PstFrameBoxThreeD. Ovo je posebno korisno za crtanje<br />
<strong>3D</strong> objekata, kao što su dugmad.<br />
C.6 pst-circ<br />
pst-circ je kolekcija grafičkih elemenata, baziranih na pstricks-u, koji se<br />
koriste za predstavljanje elemenata električnih kola. Tako je moguće, njihovim<br />
kombinovanjem, prikazati razna električna kola. Takod¯er je moguće<br />
strelicama naznačiti ogovarajuće smjerove proticanja struja, kao i razlike potencijala<br />
. . .
Bibliografija<br />
[1] Herbert Voß. <strong>3D</strong> plots: PST-3dplot - A PSTricks package for drawing 3d<br />
objects, v1.83; November 2008.<br />
[2] Denis Girou and Peter Kleiweg. The pst-light3d package version 0.11<br />
- A PSTricks package for three dimensional lighten effect on characters<br />
and PSTricks graphics; August 2007.<br />
[3] Dominique Rodriguez and Herbert Voß. pstricks-add - Additionals Macros<br />
for pstricks v.3.00; December 2007.<br />
[4] Timothy Van Zandt. PSTricks - PostScript macros for Generic TEX;<br />
March 2003.<br />
[5] PSTricks web site∼Packages<br />
http://tug.org/PSTricks/main.cgi?file=packages