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

3D grafika

Graphics 3D

Zadatak 1.

Nacrtajte sljedeće crteže

crtez1=Graphics3D[
{Yellow,Cuboid[{0,0,0}],
Cyan,Cuboid[{{1,0,0},{2,1,2}}],
Magenta,Cuboid[{{2,0,0},{3,1,3}}]},
Boxed->False]

crtez2=Graphics3D[{
Green,Sphere[{0,0,0},1],Cylinder[{{0,0,0},{1.5,0,0}},1],
Red,Cylinder[{{1.5,0,0},{3,0,0}},1],Sphere[{3,0,0},1]
},
Boxed->False]

GraphicsRow[{crtez1,crtez2}]

Plot3D

Zadatak 1

1.  Nacrtajte graf funkcije f(x,y)= –cosh(x·y) nad područjem (([–1,1])^2).

Plot3D[-Cosh[x*y],{x,-1,1},{y,-1,1}]

2. Pomoću opcija PlotRange i BoxRatios prikažite isti graf u okviru (–1,1)×(–1,1)×(–1.55,–1), s odnosom bridova 1:1:1.

Plot3D[-Cosh[x*y],{x,-1,1},{y,-1,1},
BoxRatios->{1,1,1},
PlotRange->{{-1,1},{-1,1},{-1.55,-1}}]

3. Nacrtajte sljedeći crtež.


Uputa: Koristite opciju Filling -> Bottom.
Na žalost, to opciju ne podržavaju sve ostale funkcije za 3D grafiku.

Plot3D[-Cosh[x*y],{x,-1,1},{y,-1,1},
BoxRatios->{1,1,1},
PlotRange->{{-1,1},{-1,1},{-1.55,-1}},
PlotPoints->30,
Mesh->None,PlotStyle->Green,
Filling->Bottom,
Axes->False,Boxed->False]

Zadaci za vježbu

Zadatak 1.

Na istoj slici, nad područjem (([–1,1])^2), nacrtajte kružni i hiperbolički paraboloid.
Jednadžbe z = (x^2)+(y^2)  i  z = (x^2)–(y^2).

Plot3D[{x^2+y^2,x^2-y^2},{x,-1,1},{y,-1,1}]

Iste plohe prikažite tako da kružni paraboloid bude crven, a hiperbolički zelen. 
Neka prikazi ploha imaju 30% prozirnosti, a jedinice na osima neka budu jednake.

Plot3D[{x^2+y^2,x^2-y^2},{x,-1,1},{y,-1,1},
PlotStyle->{{Opacity[0.7],Red},{Opacity[0.7],Green}},Mesh->None,BoxRatios->Automatic]

Zadatak 2.

Na istoj slici, nad područjem (([0,4π])^2), prikažite plohe zadane eksplicitnim jednadžbama
z = cosx cosy  i  z = sinx siny .
Obojite ih različitim bojama, a jedinice na osima neka budu jednake.

Plot3D[{Cos[x]*Cos[y],Sin[x]*Sin[y]},{x,0,4Pi},{y,0,4Pi},
PlotStyle->{Magenta,Cyan},Mesh->None,BoxRatios->Automatic]

ParametricPlot3D

Zadatak 1.

a) Nacrtajte plohu kojoj su parametarske jednadžbe
	x(u,v) = sinu,
	y(u,v) = cosu+sinv,
	z(u,v) = cosv,	(u,v) ϵ (([0,2π])^2).

ParametricPlot3D[{Sin[u],Cos[u]+Sin[v],Cos[v]},{u,0,2Pi},{v,0,2Pi}]

b) Istu plohu prikažite tako da je na njoj iscrtan samo jedan sistem njezinih parametarskih krivulja te da je prozirnost prikaza 30%.

ParametricPlot3D[{Sin[u],Cos[u]+Sin[v],Cos[v]},{u,0,2Pi},{v,0,2Pi},PlotStyle->Opacity[0.7],Mesh->{0,20}]

Zadatak 2.

a) Pomoću parametarskih jednadžbi nacrtajte kuglu sa središtem u ishodištu i polumjera 2.
Neka Mathematica pri tom ne iscrtava parametarske krivulje.
Pridružite taj crtež varijabli kugla.

kugla=ParametricPlot3D[2{Cos[u]*Sin[v],Sin[u]*Sin[v],Cos[v]},{u,0,2Pi},{v,0,Pi},Mesh->None]

b) Nacrtajte plašt valjka kojem je dužina MN [M(1,0,-2),N(1,0,2] os, a polumjer osnovice r = 2.
Neka Mathematica pri tom ne iscrtava parametarske linije na plaštu.
Pridružite taj crtež varijabli valjak.

Uputa: Parametarske jednadžbe tog plašta su
	x = cosu +1,
	y = sinu,
	z = z,	(u,z) ϵ [0,2π]×[-2, 2].

valjak=ParametricPlot3D[{Cos[u]+1,Sin[u],z},{u,0,2Pi},{z,-2,2},Mesh->None]

c) Nacrtajte krivulju kojoj su parametarske jednadžbe
	x(t) = 1+cost,
	y(t) = sint,
	z(t) = 2sin(t/2),	tϵ[–2π,2π].
Obojite ju crveno i podebljajte.
Pridružite taj crtež varijabli viviani (tu krivulju nazivamo Vivianijevom).

viviani=ParametricPlot3D[{1+Cos[t],Sin[t],2Sin[t/2]},{t,-2Pi,2Pi},PlotStyle->{Red,AbsoluteThickness[2]}]

d) Pomoću fukcije Show pokažite da je Vivianijeva krivulja prodorna krivulja gornjih ploha, tj. prikažite crteže kugla, valjak i viviani na istoj slici.

Show[kugla,valjak,viviani]

Zadatak 3.

a) Definirajte funkciju jastuk[i_] kao listu sljedećih parametarski jednadžbi:
	x(u,v) = sinu,
	y(u,v) = sinv,
	z(u,v) = i cosu cosv.

jastuk[i_]:={Sin[u],Sin[v],i*Cos[u]Cos[v]}

b) Pomoću funkcije Manipulate prikažite kako se za područje (u,v) ϵ (([0,2π])^2)mijenja gornja ploha, ako parametar i poprima vrijednosti na intervalu  [-1, 1].
Neka je "finoća" plohe određena opcijom PlotPoints->40, a PlotRange->{{-1,1},{-1,1},{-1,1}}.

Manipulate[ParametricPlot3D[jastuk[i],{u,0,2Pi},{v,0,2Pi},
PlotPoints->40,PlotRange->{{-1,1},{-1,1},{-1,1}}],
{i,-1,1}]

Zadaci za vježbu

Zadatak 1.

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

a)  Definirajte funkciju torus1, koja ovisi o vrijednostima (Subscript[r, 1]) i (Subscript[r, 2]), a jednaka je listi gornjih funkcija {x(u,v), y(u,v), z(u,v)}.

torus1[r1_,r2_]:={(r2+r1*Cos[v])Cos[u],(r2+r1*Cos[v])Sin[u],r1*Sin[v]}

b)  Za (Subscript[r, 1]) = 3 nacrtajte 3 takve plohe ((Subscript[r, 2]) = 5, 3, 1) nad područjem [0,((3π)/2)]×[0,2π].

ParametricPlot3D[torus1[3,5],{u,0,3Pi/2},{v,0,2Pi}]

ParametricPlot3D[torus1[3,3],{u,0,3Pi/2},{v,0,2Pi}]

ParametricPlot3D[torus1[3,1],{u,0,3Pi/2},{v,0,2Pi}]

Table[
ParametricPlot3D[torus1[3,i],{u,0,3Pi/2},{v,0,2Pi}],
{i,5,1,-2}]

Zadatak 2.

Plückerovi konoidi su pravčaste plohe (jedan sistem parametarsih krivulje tih su pravci) koje zadovoljavaju sljedeće parametarske jednadžbe:
	x(u,v) = v cosu,
	y(u,v) = v sinu,
	z(u,v) = 3 sin kv,	k ∈ N,    (u,v) ∈  (([0,2π])^2).

a)  Definirajte funkciju plucker, koja ovisi o prirodnom broju k, a jednaka je listi gornjih funkcija {x(u,v), y(u,v), z(u,v)}.

plucker[k_]:={v*Cos[u],v*Sin[u],3Sin[k*u]}

b)  Nacrtajte 4 Plückerova konoida za k = 2, 3, 4 i 5.

Table[
ParametricPlot3D[plucker[i],{u,0,2Pi},{v,0,2Pi}],{i,2,5,1}]

c)  Nacrtajte Plückerov konoid, za k = 3, i neka Mathematica  iscrta samo one njegove parametarske krivulje koje su pravci.

ParametricPlot3D[plucker[3],{u,0,2Pi+Pi/50},{v,0,2Pi},Mesh->{100,0}]

Zadatak 3.

Ako u parametarskim jednadžbama torusa iz zadatka 1 izvršimo zamjenu  z↔y ( z↔x ) dobit ćemo parametarske jednažbe torusa kojem  se rotacijska os podudara s osi y (x).

a) Definirajte funkcije torus2 i torus3, koje su jednake listama parametarskih jednadžbi torusa s osima rotacije y, odnosno x.

torus2[r1_,r2_]:={(r2+r1*Cos[v])Cos[u],r1*Sin[v],(r2+r1*Cos[v])Sin[u]}

torus3[r1_,r2_]:={r1*Sin[v],(r2+r1*Cos[v])Sin[u],(r2+r1*Cos[v])Cos[u]}

b) Pomoću funkcija torus1, torus2 i torus3, nacrtajte sljedeće crteže.

ParametricPlot3D[
{torus2[1,5],torus1[1,5]+{7,0,0},torus3[1,5]+{0,0,7}},{u,0,2Pi},{v,0,2Pi},
Mesh->None,
AxesLabel->{x,y,z},
PlotStyle->{{Red,Specularity[White,10]},{Green,Specularity[White,10]},
{Blue,Specularity[White,10]}}]

ParametricPlot3D[
{torus2[1,5],torus1[1,5]+{4,0,0},torus3[1,5]+{0,0,4}},{u,0,2Pi},{v,0,2Pi},
Mesh->None,
PlotPoints->40,
AxesLabel->{x,y,z},
PlotStyle->{{Red,Specularity[White,10]},{Green,Specularity[White,10]},
{Blue,Specularity[White,10]}}]

ContourPlot3D

Zadatak 1.

Nacrtajte elipsoide zadane jednadžbama 
	((x^2)/4) + (y^2) + (z^2) = 1,  
	(x^2) + ((y^2)/4) + (z^2) = 1 
	(x^2) + (y^2) + ((z^2)/4) = 1,
obojite ih redom crveno, zeleno i žuto, a zatim ih, pomoću funkcije Show, prikažite na istoj slici.

Uputa: Upotrijebite opciju BoxRatios->Automatic. Zašto je to potrebno?

ContourPlot3D[x^2/4+y^2+z^2==1,{x,-2,2},{y,-1,1},{z,-1,1},ContourStyle->Red,BoxRatios->Automatic]

ContourPlot3D[x^2+y^2+z^2/4==1,{x,-1,1},{y,-1,1},{z,-2,2},
ContourStyle->Green,BoxRatios->Automatic]

ContourPlot3D[x^2+y^2/4+z^2==1,{x,-1,1},{y,-2,2},{z,-1,1},ContourStyle->Yellow,BoxRatios->Automatic]

Show[%,%%,%%%]

Show[%,PlotRange->{{-2,2},{-2,2},{-2,2}}]

Zadatak 2.

a) Prikažite plohu zadanu jednadžbom (x^2)(y^2) + (x^2)(z^2) + (y^2)(z^2) = 1, unutar kocke (([–2,2])^3).

ContourPlot3D[
x^2*y^2+x^2*z^2+y^2*z^2==1,
{x,-2,2},{y,-2,2},{z,-2,2}]

b) Istu plohu prikažite unutar kocke (([–3,3])^3), obojite ju narandžasto, te na njoj iscrtajte presjeke plohe s koordinatnim ravninama. Pomoću opcije PlotPoints generirajte finiji prikaz nego u slučaju a).

ContourPlot3D[
x^2*y^2+x^2*z^2+y^2*z^2==1,
{x,-3,3},{y,-3,3},{z,-3,3},
ContourStyle->{Orange},Mesh->{1,1,1},PlotPoints->33]

c) S prikaza b) uklonite presjeke s koordinatnim ravninama te pomoću funkcije Specularity osvijetlite plohu s bijelim svjetlom.

ContourPlot3D[
x^2*y^2+x^2*z^2+y^2*z^2==1,
{x,-3,3},{y,-3,3},{z,-3,3},
Mesh->None,ContourStyle->{Orange,Specularity[White,10]},PlotPoints->33]

Zadatak za vježbu

Zadatak 1.

Unutar kvadra [-3,3]×[-4,4]×[-4.5,4.5], nacrtajte jednodijelni  i  dvodijelni hiperbolid. 
(jednadžbe:   (x^2) + (y^2) – ((z^2)/2) = 1  i   –(x^2) – (y^2) + ((z^2)/2) = 1)
Neka jedinice na osima budu jednake.

ContourPlot3D[{-x^2+y^2+z^2/2==1,-x^2-y^2+z^2/2==1},{x,-3,3},{y,-4,4},{z,-4.5,4.5},BoxRatios->Automatic]

Iste plohe obojite crveno i zeleno, pridružite im 30% prozirnosti te uklonite koordinatne krivulje.
Opciji PlotPoints pridružite vrijednost 20.

ContourPlot3D[{-x^2+y^2+z^2/2==1,-x^2-y^2+z^2/2==1},{x,-3,3},{y,-4,4},{z,-4.5,4.5},BoxRatios->Automatic,ContourStyle->{Opacity[0.7,Red],Opacity[0.7,Green]},Mesh->None,PlotPoints->20]

RegionPlot3D

Zadatak 1.

Prikažite dio prostora, unutar kocke (([–1,1])^3), za koji vrijedi  (x^2)+(y^2)+(z^2)>1.5.

RegionPlot3D[
x^2+y^2+z^2>1.5,
{x,-1,1},{y,-1,1},{z,-1,1}]

Granice gornjeg trodimenzionalnog područja prikažite s prozirnošću od 30%, obojite ih narandžasto te s njih uklonite linije.

RegionPlot3D[
x^2+y^2+z^2>1.5,
{x,-1,1},{y,-1,1},{z,-1,1},
PlotStyle->Opacity[0.6,Orange],Mesh->None]

Zadatak 2.

Prikažite trodimenzionalno područje, unutar prizme (([–2.5,2.5])^2)×[-2,2], za koji vrijedi 
(x^2)+(y^2)-(z^2) < 1   i   (x^2)+(y^2)-(z^2) > -1.
Granice  područja prikažite s prozirnošću od 30%, obojite ih ljubičasto te s njih uklonite linije.
Upotrijebite opciju PlotPoints->20.

RegionPlot3D[x^2+y^2-z^2<1&&x^2+y^2-z^2>-1,{x,-2.5,2.5},{y,-2.5,2.5},{z,-2,2},
PlotPoints->20,Mesh->None,PlotStyle->Opacity[0.6,Purple]]

Zadaci za vježbu

Zadatak 1.

Prikažite trodimenzionalno područje, unutar kocke (([-1,1])^3), za koji vrijedi 
 x^2+y^2<z^2+1.
Uklonite linije s granice područja.

RegionPlot3D[x^2+y^2<z^2+1,{x,-1,1},{y,-1,1},{z,-1,1},
Mesh->None]

Zadatak 2.

Prikažite trodimenzionalno područje, unutar kocke (([-2,2])^3), za koji vrijedi 
 (x^2)(y^2)+(x^2)(z^2)+ (y^2)(z^2) >1.
 Granice  područja prikažite s prozirnošću od 30% te s njih uklonite linije. 
 Upotrijebite opciju PlotPoints->30.

RegionPlot3D[(x^2)(y^2)+(x^2)(z^2)+ (y^2)(z^2) >1,{x,-2,2},{y,-2,2},{z,-2,2},
Mesh->None,PlotPoints->30,PlotStyle->Opacity[0.6]]

Zadatak 3.

Prikažite trodimenzionalno područje, unutar kocke (([-2,2])^3), za koji vrijedi 
(x^2)+(y^2)+(z^2) < 4   i   (x^2)+(y^2)-(z^2) < 1.

RegionPlot3D[x^2+y^2+z^2<4&&x^2+y^2-z^2<1,{x,-2,2},{y,-2,2},{z,-2,2}]

Notebook izradili: Vladimir Benić i Sonja Gorjanc