Građevinski fakultet Sveučilišta u Zagrebu
Osnove inženjerske informatike II (Mathematica)
8. predavanje

3D grafika

Funkcija Graphics3D - 3DPrimitivi

Funkcija Graphics3D omogućava, između ostalog, crtanje 3D primitiva

●  Sintaksa za crtanje  primitiva je sljedeća:
Graphics3D[ 2Dprimitiv ]

●  Sintaksa  za crtanje više primitiva je sljedeća:
Graphics3D[ { 2Dprimitiv 1, 2Dprimitiv 2,..... } ]

●  Opcije za crtanje dodaju se na sljedeći način:
Graphics3D[ { opcija1,opcija2,....,2Dprimitiv } ]

3D primitivi

Point[{x,y,z}]

         Točka s koordinatama (x,y,z).

Line[{{08pred-novo_1.gif,08pred-novo_2.gif},08pred-novo_3.gif,..}]

    Pravac ili više pravaca koji su spojnice točaka  (08pred-novo_4.gif,08pred-novo_5.gif),08pred-novo_6.gif,..

Polygon[{{08pred-novo_7.gif,08pred-novo_8.gif,08pred-novo_9.gif},08pred-novo_10.gif,08pred-novo_11.gif,....}]

    Prostorni poligon čiji su vrhovi redom točke   (08pred-novo_12.gif,08pred-novo_13.gif),08pred-novo_14.gif,08pred-novo_15.gif,....

Cuboid[{08pred-novo_16.gif,08pred-novo_17.gif}]

    Jedinična kocka kojoj je točka  (08pred-novo_18.gif,08pred-novo_19.gif) jedan vrh.

Cuboid[{{08pred-novo_20.gif,08pred-novo_21.gif},08pred-novo_22.gif}]

    Kvadratska prizma  kojoj je spojnica točaka  (08pred-novo_23.gif,08pred-novo_24.gif)  i  08pred-novo_25.gif prostorna dijagonala.

Sphere[{x,y,z},r]

    Kugla sa sredistem u točki (x,y,z) i polumjera r.

Cylinder[{{08pred-novo_26.gif,08pred-novo_27.gif,08pred-novo_28.gif},08pred-novo_29.gif},r]

    Valjak  kojem je spojnica točaka  (08pred-novo_30.gif,08pred-novo_31.gif)  i  08pred-novo_32.gif os, a polumjer r.

Text[tekst,{x,y,z}]

    Ispisuje tekst koji je centriran u točku (x,y,z).

Primjeri

In[1]:=

08pred-novo_33.gif

Out[1]=

08pred-novo_34.gif

Uz dodatne opcije

In[2]:=

08pred-novo_35.gif

Out[2]=

08pred-novo_36.gif

Prodor dvaju valjaka

In[3]:=

08pred-novo_37.gif

Out[3]=

08pred-novo_38.gif

In[4]:=

08pred-novo_39.gif

Out[4]=

08pred-novo_40.gif

Prodor valjka i kugle

In[5]:=

08pred-novo_41.gif

Out[5]=

08pred-novo_42.gif

Funkcija Plot3D

Kao što smo već ranije spomenuli, Mathematica naredba koja omogućuje crtanje grafa realne funkcije dviju varijabli f : UR, U08pred-novo_43.gif,
tj. ploha zadanih eksplicitnim jednadžbama oblika z = f(x,y), je Plot3D.
Za crtanje jedne plohe sintaksa je
Plot3D [ f , {x,08pred-novo_44.gif,08pred-novo_45.gif}, {y,08pred-novo_46.gif,08pred-novo_47.gif} ],
a za crtanje više ploha
Plot3D [ 08pred-novo_48.gif, {x,08pred-novo_49.gif,08pred-novo_50.gif}, {y,08pred-novo_51.gif,08pred-novo_52.gif} ]

Primjer 1

Prikažite plohu zadanu jednadžbom  z = cos08pred-novo_53.gifcos y za  (x,y) 08pred-novo_54.gif

In[6]:=

08pred-novo_55.gif

Out[6]=

08pred-novo_56.gif

Opcije

In[7]:=

08pred-novo_57.gif

Out[7]=

08pred-novo_58.gif

Opcija BoxRatios

In[8]:=

08pred-novo_59.gif

08pred-novo_60.gif

Opcijom BoxRatios izražava se omjer stranica kocke u koju je ucrtana 3D slika.
BoxRatios→ {1,1,1}          prikazuje grafiku unutar kocke
BoxRatios→ Automatic    duljine osi odgovaraju stvarnim vrijednostima koordinata

In[9]:=

08pred-novo_61.gif

Out[9]=

08pred-novo_62.gif

In[10]:=

08pred-novo_63.gif

Out[10]=

08pred-novo_64.gif

Opcije Mesh i MeshStyle

In[11]:=

08pred-novo_65.gif

08pred-novo_66.gif

Opcijom Mesh definira se iscrtavanje mreže linija na plohi.

In[12]:=

08pred-novo_67.gif

Out[12]=

08pred-novo_68.gif

In[13]:=

08pred-novo_69.gif

Out[13]=

08pred-novo_70.gif

In[14]:=

08pred-novo_71.gif

Out[14]=

08pred-novo_72.gif

In[15]:=

08pred-novo_73.gif

Out[15]=

08pred-novo_74.gif

In[16]:=

08pred-novo_75.gif

Out[16]=

08pred-novo_76.gif

Opcija PlotPoints

In[17]:=

08pred-novo_77.gif

08pred-novo_78.gif

Opcijom PlotPoints definira se "finoća" grafike.

In[18]:=

08pred-novo_79.gif

Out[18]=

08pred-novo_80.gif

In[19]:=

08pred-novo_81.gif

Out[19]=

08pred-novo_82.gif

Opcija PlotRange

In[20]:=

08pred-novo_83.gif

08pred-novo_84.gif

Opcijom PlotRange definira dio prostora koji se prikazuje.
Ovu je opciju gotovo neophodno uportebljavati kod animacija.

In[21]:=

08pred-novo_85.gif

Out[21]=

08pred-novo_86.gif

Opcija Boxed  i  Axes

In[22]:=

08pred-novo_87.gif

08pred-novo_88.gif

In[23]:=

08pred-novo_89.gif

08pred-novo_90.gif

In[24]:=

08pred-novo_91.gif

Out[24]=

08pred-novo_92.gif

Opcija AxesLabel

In[25]:=

08pred-novo_93.gif

08pred-novo_94.gif

In[26]:=

08pred-novo_95.gif

Out[26]=

08pred-novo_96.gif

Opcija PlotStyle

In[27]:=

08pred-novo_97.gif

08pred-novo_98.gif

Pomoću ove opcije definiramo razne načine crtanja (boju, prozirnost, debljinu linija......), od kojih neke ovdje navodimo.

In[28]:=

08pred-novo_99.gif

Out[28]=

08pred-novo_100.gif

Opcija Opacity

In[29]:=

08pred-novo_101.gif

08pred-novo_102.gif


Opcijom Opacity definiramo prozirnost prikaza. Prozirnost određujemo brojem od 0 do 1, pri čemu 1 znači neprozirno.
Kod crtanja ploha uvijek ju pozivamo pomoću opcije PlotStyle.

In[30]:=

08pred-novo_103.gif

Out[30]=

08pred-novo_104.gif


Možemo joj pridodati i boju.

In[31]:=

08pred-novo_105.gif

Out[31]=

08pred-novo_106.gif

In[32]:=

08pred-novo_107.gif

Out[32]=

08pred-novo_108.gif

Opcija ColorFunction

In[33]:=

08pred-novo_109.gif

08pred-novo_110.gif


Opcijom ColorFunction određujemo koju će od svojih ugrađenih kolor funkcija Mathematika upotrijebiti za grafiku.
Lista tih funkcija nalazi se u paletama.

In[34]:=

08pred-novo_111.gif

Out[34]=

08pred-novo_112.gif

Primjer 2 - majmunsko sedlo

z = 08pred-novo_113.gif08pred-novo_114.gif  

In[35]:=

08pred-novo_115.gif

Out[35]=

08pred-novo_116.gif

In[36]:=

08pred-novo_117.gif

Out[36]=

08pred-novo_118.gif

In[37]:=

08pred-novo_119.gif

Out[37]=

08pred-novo_120.gif

Funkcija ParametricPlot3D

1. Prostorne krivulje

Parametarizacija prostorne krivulje

08pred-novo_121.gif


Mathematica
funkcija koja omogućuje crtanje parametarski zadanih prostornih krivulja je ParametricPlot3D.
Za crtanje prostorne krivulje zadane parametarskim jednadžbama
08pred-novo_122.gif = x(t)
08pred-novo_123.gif = y(t)
08pred-novo_124.gif = z(t),  t ε I ⊆ R
sintaksa je sljedeća:
ParametricPlot3D[{08pred-novo_125.gif,08pred-novo_126.gif,08pred-novo_127.gif}, {t,08pred-novo_128.gif,08pred-novo_129.gif}]
Za crtanje više parametarski zadanih krivulja na istom crtežu sintaksa je sljedeća:
ParametricPlot3D[{{08pred-novo_130.gif,08pred-novo_131.gif,08pred-novo_132.gif},{08pred-novo_133.gif,08pred-novo_134.gif,08pred-novo_135.gif},.....}, {t,08pred-novo_136.gif,08pred-novo_137.gif}]   

Primjer — zavojnica na valjku

Parametarske jednadžbe zavojnice na rotacijskom valjku kojem je os paralelna s osi z, a polumjer osnovice jednak r, su:
x = cost
y = sint
z = b·t,  t ∈ I ⊆ R.

In[38]:=

08pred-novo_138.gif

Out[38]=

08pred-novo_139.gif

In[39]:=

08pred-novo_140.gif

Out[39]=

08pred-novo_141.gif

In[40]:=

08pred-novo_142.gif

Out[40]=

08pred-novo_143.gif

2. Plohe

Parametarizacija plohe

08pred-novo_144.gif


Mathematica
funkcija koja omogućuje crtanje parametarski zadanih ploha je ParametricPlot3D.
Za crtanje plohe zadane parametarskim jednadžbama
08pred-novo_145.gif = x(u,v)
08pred-novo_146.gif = y(u,v)
08pred-novo_147.gif = z(u,v),    (u,v) ε U08pred-novo_148.gif
sintaksa je sljedeća:
ParametricPlot3D[{08pred-novo_149.gif,08pred-novo_150.gif,08pred-novo_151.gif}, {u,08pred-novo_152.gif,08pred-novo_153.gif},{v,08pred-novo_154.gif,08pred-novo_155.gif}]
Za crtanje više parametarski zadanih ploha na istom crtežu sintaksa je sljedeća:
ParametricPlot3D[{{08pred-novo_156.gif,08pred-novo_157.gif,08pred-novo_158.gif},{08pred-novo_159.gif,08pred-novo_160.gif,08pred-novo_161.gif},.....}, {u,08pred-novo_162.gif,08pred-novo_163.gif},{v,08pred-novo_164.gif,08pred-novo_165.gif}]  

Primjeri 1 — kugla i elipsoid

Parametarske jednadžbe kugle polumjera R, sa  središtem u točki (p,q,r) su:
    x = cossinv + p
    y = sinsinv + q
    z = cosv + r,             (u,v) ∈ [0 , 2π] × [0 , π].
Parametarske jednadžbe troosnog elipsoida  sa  središtem u točki (p,q,r) su:
    x = cossinv + p
    y = sinsinv + q
    z = cosv + r,             (u,v) ∈ [0 , 2π] × [0 , π].
    

Stoga je naredba za crtanje jedinične kugle sa središtem u ishodištu sljedeća:

In[41]:=

08pred-novo_166.gif

Out[41]=

08pred-novo_167.gif

In[42]:=

08pred-novo_168.gif

Out[42]=

08pred-novo_169.gif

In[43]:=

08pred-novo_170.gif

Out[43]=

08pred-novo_171.gif

In[44]:=

08pred-novo_172.gif

In[45]:=

08pred-novo_173.gif

Out[45]=

08pred-novo_174.gif

In[46]:=

08pred-novo_175.gif

Out[46]=

08pred-novo_176.gif

In[47]:=

08pred-novo_177.gif

Out[47]=

08pred-novo_178.gif

Primjer 2  — kružni valjak

In[48]:=

08pred-novo_179.gif

Out[48]=

08pred-novo_180.gif

In[49]:=

08pred-novo_181.gif

Out[49]=

08pred-novo_182.gif

Primjeri 3 — torus

Torus je ploha koja nastaje rotacijom kružnice polumjera a oko osi koja je od središta te kružnice udaljena za d.
Ako kružnica leži u ravnini xz i rotira oko osi z, parametarske jednadžbe torusa su:
    x = cosu (d + cosv )
    y = sinu (d + cosv )
    z = sinv,             (u,v) ∈ [0 , 2π] × [0 ,2 π].

In[50]:=

08pred-novo_183.gif

Stoga je naredba za crtanje jedinične kugle sa središtem u ishodištu sljedeća:

In[51]:=

08pred-novo_184.gif

Out[51]=

08pred-novo_185.gif

In[52]:=

08pred-novo_186.gif

Out[52]=

08pred-novo_187.gif

In[53]:=

08pred-novo_188.gif

Out[53]=

08pred-novo_189.gif

In[54]:=

08pred-novo_190.gif

Out[54]=

08pred-novo_191.gif

Primjer 4 — Steinerova ploha

Steinerova ploha je algebarska ploha 4. reda s 4 dvostruka pravca, koja se može parametrizirati na sljedeći način:
    x = sin2u ·08pred-novo_192.gif
    
y = sinu sin2v
    
z = cosu sin2v,             (u,v) ∈ [0 , π] × [0 , π].

In[55]:=

08pred-novo_193.gif

In[56]:=

08pred-novo_194.gif

Out[56]=

08pred-novo_195.gif

In[57]:=

08pred-novo_196.gif

Out[57]=

08pred-novo_197.gif

Funkcija ContourPlot3D

Funkcije ContourPlot3D omogućuju crtanje  nivo-ploha za funkcije od  tri varijable.
U okviru ovog kolegija mi ćemo ju koriprostornom Kartezijevom koordinatnom sustavu zadane implicitnim jednadžbama, tj. jednadžbama oblika:
f(x,y,z)=0.
Sintaksa je sljedeća:
ContourPlot3D[ jednadžba , {x,08pred-novo_198.gif,08pred-novo_199.gif},{y,08pred-novo_200.gif,08pred-novo_201.gif},{z,08pred-novo_202.gif,08pred-novo_203.gif}]
ContourPlot3D[
08pred-novo_204.gif,08pred-novo_205.gif,.......}, {x,08pred-novo_206.gif,08pred-novo_207.gif},{y,08pred-novo_208.gif,08pred-novo_209.gif},{z,08pred-novo_210.gif,08pred-novo_211.gif}]
Kod ove funkcije Mathematica će kao temeljnu opciju za prikaz uzimati BoxRatios -> {1,1,1}, tj. plohu će prikazivati unutar kocke. Želimo li da jedinice na osima budu jednake proporcije, a to nam je često potrebno, treba dopisatii  opciju  BoxRatios -> Automatic.

Primjer 1

ALGEBARSKE PLOHE 2. STUPNJA

KUGLA

In[58]:=

08pred-novo_212.gif

Out[58]=

08pred-novo_213.gif

In[59]:=

08pred-novo_214.gif

Out[59]=

08pred-novo_215.gif

In[60]:=

08pred-novo_216.gif

Out[60]=

08pred-novo_217.gif

In[61]:=

08pred-novo_218.gif

Out[61]=

08pred-novo_219.gif

ELIPSOID

In[62]:=

08pred-novo_220.gif

Out[62]=

08pred-novo_221.gif

JEDNODIJELNI HIPERBOLOID

In[63]:=

08pred-novo_222.gif

Out[63]=

08pred-novo_223.gif

DVODIJELNI HIPERBOLOID

In[64]:=

08pred-novo_224.gif

Out[64]=

08pred-novo_225.gif

PARABOLOID

In[65]:=

08pred-novo_226.gif

Out[65]=

08pred-novo_227.gif

HIPERBOLIČKI PARABOLOID

In[66]:=

08pred-novo_228.gif

Out[66]=

08pred-novo_229.gif

STOŽAC

In[67]:=

08pred-novo_230.gif

Out[67]=

08pred-novo_231.gif

VALJAK

In[68]:=

08pred-novo_232.gif

Out[68]=

08pred-novo_233.gif

Primjer 2

Algebarska ploha 3. reda zadana je jednadžbom:
08pred-novo_234.gif
Prikažite ju za  (x,y,z) 08pred-novo_235.gif    

In[69]:=

08pred-novo_236.gif

In[70]:=

08pred-novo_237.gif

Out[70]=

08pred-novo_238.gif

In[71]:=

08pred-novo_239.gif

Out[71]=

08pred-novo_240.gif

Primjer 3

Algebarska ploha 4. reda s 8 dvostrukih točaka zadana je jednadžbom:
08pred-novo_241.gif
Prikažite ju za  (x,y,z) 08pred-novo_242.gif    

In[72]:=

08pred-novo_243.gif

In[73]:=

08pred-novo_244.gif

Out[73]=

08pred-novo_245.gif

In[74]:=

08pred-novo_246.gif

Out[74]=

08pred-novo_247.gif

Funkcija RegionPlot3D

Za grafički prikaz rješenja nejednadžbi od 3 varijable koristimo funkciju   RegionPlot3D.
Sintaksa je sljedeća:
RegionPlot3D[ izraz, {x,08pred-novo_248.gif,08pred-novo_249.gif},{y,08pred-novo_250.gif,08pred-novo_251.gif},{z,08pred-novo_252.gif,08pred-novo_253.gif}]
Mathematica prikazuje dio prostora unutar kvadra (08pred-novo_254.gif,08pred-novo_255.gif(08pred-novo_256.gif,08pred-novo_257.gif)×(08pred-novo_258.gif,08pred-novo_259.gif) za koji vrijedi izraz.
izraz može biti bilo koja nejednadžba od tri varijable (x, y i z) ili logička kombinacija takvih nejednadžbi.

Primjeri

In[75]:=

08pred-novo_260.gif

Out[75]=

08pred-novo_261.gif

In[76]:=

08pred-novo_262.gif

Out[76]=

08pred-novo_263.gif

In[77]:=

08pred-novo_264.gif

Out[77]=

08pred-novo_265.gif

In[78]:=

08pred-novo_266.gif

Out[78]=

08pred-novo_267.gif

In[79]:=

08pred-novo_268.gif

Out[79]=

08pred-novo_269.gif

In[80]:=

08pred-novo_270.gif

Out[80]=

08pred-novo_271.gif



Notebook izradili: Sonja Gorjanc, Vladimir Benić

Spikey Created with Wolfram Mathematica 7.0