You are on page 1of 22

MPZI_vj04_s_izradom

September 23, 2020

1 Crtanje ploha
1.1 Crtanje eksplicitno zadanih ploha
1. zadatak
sin( x2 + y2 )
Nacrtajte plohu zadanu jednadžbom f ( x, y) = p za ( x, y) ∈ [−3, 3]2 .
x2 + y2 + 0.001

[6]: var ('y')


f (x, y) = sin(x^2 + y^2) / sqrt(x^2 + y^2 + 0.001)
plot3d (f, (x, -3, 3), (y, -3, 3), viewer='threejs')

[6]: Graphics3d Object

[1]: var ('y')


f (x, y) = ln(cos(y) / cos(x))
plot3d (f, (x, -1, 1), (y, -1, 1), viewer='threejs')

[1]: Graphics3d Object

[ ]:

2. zadatak
Nacrtajte istu plohu kao i u 1. zadatku tako da je svaka točka obojana bojom proporcionalnoj
svojoj visini, to jest vrijednosti svoje z–koordinate (opcija adaptive = True).
Neka budu prikazane i koordinatne osi duljine 4 i radijusa 2. Za kvalitetan prikaz osi treba
naredbom from sage.plot.plot3d.plot3d import axes omogućiti pristup funkciji axes() koja
omogućava definiranje duljine i debljine osi.
Ta funkcija ima oblik axes(scale=1, radius=None) pri čemu su: - scale - duljine osi (sve tri osi
su iste duljine); - radius - radijusi osi.
Za crtanje plohe s osima koordinatmog sustava treba: 1. definirati varijablu koja sadrži sliku osi,
npr. p1 = axes(scale=3, radius=1, color="red"), 2. definirati varijablu koja sadrži sliku plohe,
npr. p2 = plot3d(...), 3. prikazati zajedničku sliku naredbom p1 + p2 ili show( ).
Funkciji show( ) dodajte još dvije opcije: 1. nije prikazan okvir (kvadrat) u kojem se ploha nalazi
(opcija frame = False), 2. duljine jediničnih dužina na osima neka se odnose u omjeru 2 : 2 : 1.5

1
(opcija aspect_ratio = (2, 2, 1.5)).

[2]: var ('y')


from sage.plot.plot3d.plot3d import axes
p1 = axes (scale = 4, radius = 2)
p2 = plot3d (f, (x, -3, 3), (y, -3, 3), adaptive = True, viewer="tachyon")
show (p1 + p2, aspect_ratio = (2, 2, 1.5), frame = False)

Može se zadati lista boja koje će biti upotrijebljene za bojanje, od najnižih točaka do najviših
(posljednja boja u listi se ne upotrebljava):

[9]: p2 = plot3d (f, (x, -3, 3), (y, -3, 3), adaptive = True, color = ['purple',␣
,→'darkorchid', 'blueviolet', 'indigo', 'midnightblue',

2
'mediumblue',␣
'blue', 'dodgerblue', 'skyblue', 'lightblue', 'aliceblue', 'azure', 'red'] )
,→

show (p2, aspect_ratio = [2, 2, 1.5], frame = False, viewer="tachyon")

Ako lista sadrži samo dvije boje, točke se ne bojaju proporcionalno visini:

[ ]: p2 = plot3d (f, (x, -3, 3), (y, -3, 3), adaptive = True, color = ['blueviolet',␣
,→'indigo'])

show (p2, aspect_ratio = [2, 2, 1.5], frame = False, viewer="tachyon")

3. zadatak
Na istoj slici, nad područjem [−1, 1]2 , nacrtajte kružni i hiperbolički paraboloid (njihove su jed-
nadžbe z = x2 + y2 i z = x2 − y2 ).

3
Pomoću odgovarajućih opcija učinite da: 1. kružni paraboloid bude crven, a hiberbolički zelen
(opcija color ="red" ili "green"), 2. prikazi ploha imaju 30% prozirnosti (opcija opacity = 0.7),
3. jedinice na osima budu jednake duljine (opcija aspect_ratio = (1, 1, 1)), 4. kvaliteta crteža
bude povećana povećanjem upotrijebljenih točaka pri crtanju na 200 u svakom od smjerova (opcija
plot_points = 200 ili plot_points = [200, 200]).
[10]: var ('y')
p1 = plot3d (x^2 + y^2, (x,-1,1), (y,-1,1), opacity = 0.7, color = 'red',␣
,→plot_points = 200, aspect_ratio = (1,1,1), viewer="tachyon")

p2 = plot3d (x^2 - y^2, (x,-1,1), (y,-1,1), opacity = 0.7, color = 'green',␣


,→plot_points = 200, aspect_ratio = (1,1,1))

p1 + p2
[10]:

4
1. zadatak za zadaću
Na istoj slici nad područjem [0, 4π ]2 , prikažite plohe zadane eksplicitnim
jednadžbama z = cos x · cos y i z = sin x · sin y. Prvu obojite žutom (yellow), a drugu
narančastom (orange) bojom.
[ ]:

1.2 Crtanje ploha zadanih parametarskim jednadžbama


4. zadatak
Nacrtajte plohu kojoj su parametarske jednadžbe
x (u, v) = sin u y(u, v) = cos u + sin v z(u, v) = cos v
za (u, v) ∈ [0, 2π ]2 .
Plohu prikažite sa 40% prozirnošću.
[1]: var ('u v')
parametric_plot3d ([sin(u), cos(u)+sin(v), cos(v)], (u, 0, 2*pi), (v, 0, 2*pi),␣
,→opacity = 0.6, viewer = "tachyon")

[1]:

5
5. zadatak
Torus je ploha koja nastaje rotacijom kružnice polumjera r1 oko osi koja je od
njezinoga središta udaljena za r2 .
Ako je kružnica koja rotira okomita na ravninu ( x, y) i ako rotira oko osi z,
parametarske su jednadžbe torusa
x (u, v) = (r2 + r1 cos v) cos u y(u, v) = (r2 + r1 cos v) sin u z(u, v) = r1 sin v za (u, v) ∈
[0, 2π ]2 .
1. Definirajte funkciju torus koja ovisi o vrijednostima r1 i r2 i ima vrijednost
koja je lista navedenih parametarskih jednadžbi [ x (u, v), y(u, v), z(u,v)].

2. Za r1 = 3 nacrtajte tri takve plohe (r2 = 5, 3, 1) za (u, v) ∈ 0, × [0, 2π ] i
2

6
za (u, v) ∈ [0, π ] × [π, 2π ]. Upotrijebite opciju aspect_ratio = (1, 1, 1).
• Definicija torusa.
[18]: var ('r1 r2 u v')
torus (r1,r2) = [(r2 + r1*cos(v))*cos(u), (r2 + r1*cos(v))*sin(u), r1*sin(v)]
show (torus)

(r1, r2) |--> ((r1*cos(v) + r2)*cos(u), (r1*cos(v) + r2)*sin(u), r1*sin(v))

• Slika za r1 = 3, r2 = 5.
Međusobni položaj kružnice koja rotira i osi rotacije:
[12]: var ('t')
r1 = 3
r2 = 5
p1 = parametric_plot ([0, t], (t, -4, 4))
p2 = parametric_plot ([r2 + r1*cos(t), r1*sin(t)], (t, 0, 2*pi))
line1 = line2d ([(0, 0), (r2, 0)], linestyle = ':')
line2 = line2d ([(r2, 0), (r2 + r1*cos(pi/4), r1*sin(pi/4))], linestyle = '-.')
t1 = text ("r2 = " + str (r2), (r2/2 + 0.5, 0.2))
t2 = text ("r1 = " + str (r1), (r2 + (r1/2)*cos(pi/4+0.2), (r1/2)*sin(pi/4+0.2)))
t3 = text ("Os rotacije", (0.7, 4.3))
t4 = text ("Kruznica koja rotira", (r2, 3.3))
show (p1 + p2 + line1 + line2 + t1 + t2 + t3 + t4, axes = false, figsize = 5)

7
[19]: parametric_plot3d ((torus.subs(r1=3)).subs(r2=5), (u, 0, 3*pi/2), (v, 0, 2*pi),␣
,→aspect_ratio = (1, 1, 1), viewer="tachyon")

[19]:

[20]: parametric_plot3d (torus (3, 5), (u, 0, pi), (v, pi, 2*pi), aspect_ratio = (1,␣
,→1, 1), viewer="tachyon")

[20]:

8
• Slika za r1 = 3, r2 = 3:
Međusobni položaj kružnice koja rotira i osi rotacije:
[21]: var ('t')
r1 = 3
r2 = 3
p1 = parametric_plot ([0, t], (t, -4, 4))
p2 = parametric_plot ([r2 + r1*cos(t), r1*sin(t)], (t, 0, 2*pi))
line1 = line2d ([(0, 0), (r2, 0)], linestyle = ':')
line2 = line2d ([(r2, 0), (r2 + r1*cos(pi/4), r1*sin(pi/4))], linestyle = '-.')
t1 = text ("r2 = " + str(r2), (r2/2, 0.2))
t2 = text ("r1 = " + str(r1), (r2 + (r1/2)*cos(pi/4+0.2), (r1/2)*sin(pi/4+0.2)))
t3 = text ("Os rotacije", (0.7, 4.3))

9
t4 = text ("Kruznica koja rotira", (r2, 3.3))
show (p1 + p2 + line1 + line2 + t1 + t2 + t3 + t4, axes = false, figsize = 5)

[22]: parametric_plot3d (torus (3, 3), (u, 0, 3*pi/2), (v, 0, 2*pi), aspect_ratio =␣
,→(1, 1, 1), viewer="tachyon")

[22]:

10
[23]: parametric_plot3d (torus (3, 3), (u, 0, pi), (v, pi, 2*pi), aspect_ratio = (1,␣
,→1, 1), viewer="tachyon")

[23]:

11
• Slika za r1 = 3, r2 = 1:
Međusobni položaj kružnice koja rotira i osi rotacije:
[24]: var ('t')
r1 = 3
r2 = 1
p1 = parametric_plot ([0, t], (t, -4, 4))
p2 = parametric_plot ([r2 + r1*cos(t), r1*sin(t)], (t, 0, 2*pi))
line1 = line2d ([(0, 0), (r2, 0)], linestyle = ':')
line2 = line2d ([(r2, 0), (r2 + r1*cos(pi/4), r1*sin(pi/4))], linestyle = '-.')
t1 = text ("r2 = " + str(r2), (r2/2 + 0.1, -0.25))
t2 = text ("r1 = " + str(r1), (r2 + (r1/2)*cos(pi/4+0.2), (r1/2)*sin(pi/4+0.2)))
t3 = text ("Os rotacije", (0.7, 4.3))

12
t4 = text ("Kruznica koja rotira", (r2 + 1.2, 3.3))
show (p1 + p2 + line1 + line2 + t1 + t2 + t3 + t4, axes = false, figsize = 5)

[25]: parametric_plot3d (torus (3, 1), (u, 0, 3*pi/2), (v, 0, 2*pi), aspect_ratio =␣
,→(1, 1, 1), viewer="tachyon")

[25]:

13
[26]: parametric_plot3d (torus (3, 1), (u, 0, pi), (v, pi, 2*pi), aspect_ratio = (1,␣
,→1, 1), viewer="tachyon")

[26]:

14
2. zadatak za zadaću
Plückerovi konoidi su zadani parametarskim jednadžbama
x (u, v) = vcos(u)
y(u, v) = vsin(u)
u(u, v) = sin(ku)
za (u, v) ∈ [0, 2π ]2 .
Nacrtajte Plückerove konoide za k = 2, k = 3 i k = 6. Povećajte broj
upotrijebljenih točaka opcijom plot_points = 200, a omjer duljina jediničnih dužina
na osima zadajte opcijom aspect_ratio = (1, 1, 3).

15
[ ]:

1.3 Crtanje implicitno zadanih ploha


6. zadatak
Nacrtajte plohu zadanu implicitnom jednadžbom x2 + y2 − z2 = 1 za ( x, y) ∈ [−3, 3]2 i z ∈
[−2, 2] te za x ∈ [−3, 3], y ∈ [0, 3] i z ∈ [−2, 2].
[27]: var ('x y z')
f (x, y, z) = x^2 + y^2 - z^2
implicit_plot3d (f (x, y, z) == 1, (x, -3, 3), (y, -3, 3), (z, -2, 2),␣
,→aspect_ratio = (1, 1, 1), viewer="tachyon")

[27]:

16
[28]: implicit_plot3d (f == 1, (x, -3, 3), (y, 0, 3), (z, -2, 2), aspect_ratio = (1,␣
,→1, 1), viewer="tachyon")

[28]:

7. zadatak
Nacrtajte plohu zadani implicitnom jednadžbom x4 − x2 + y4 − y2 + z4 − z2 + 0.5 =
0 za ( x, y, z) ∈ [−1, 1]3 . Nemojte prikazivati okvir (opcija frame = False), a plohu
obojite grimiznom bojom (opcija color = crimson).
[29]: var ('x y z')
implicit_plot3d (x^4 - x^2 + y^4 - y^2 + z^4 - z^2 + 0.5 == 0, (x, -1, 1), (y,␣
,→-1, 1), (z, -1, 1), frame = False, color = 'crimson', viewer = "tachyon")

[29]:

17
3. zadatak za zadaću
Nacrtajte plohu zadanu implicitnom jednadžbom x2 + y2 − z2 = 0 za ( x, y, z) ∈ [−1, 1]3 .

[ ]:

4. zadatak za zadaću
Ploha je zadana implicitnom jednadžbom 16x3 − 48x2 y + 24x2 z − 48xy2 + 16y3 + 24y2 z −
31z3 − 93, 5307z2 − 72z = 0.
Prikažite je za ( x, y, z) ∈ [−5, 4] × [−5, 4] × [−4, 7]. Nemojte crtati okvir.

[ ]:

18
1.4 Crtanje nivo-krivulja
8. zadatak
1. Nacrtajte plohu zadanu eksplicitnom jednadžbom z = x4 − 2x2 y + 2y3 za
( x, y) ∈ [−1, 1]2 . Neka su točke različite visine različito obojane (opcija
adaptive = True).
2. Nacrtajte nivo–krivulje ove plohe. Crtež linija umjesto obojenih područja
možete dobiti opcijom fill = False.
3. Nacrtajte novi prikaz nivo-krivulja primjenom opcije cmap = "rainbow".
Ako želite prikaz slike nekim drugim bojama, a ne nijansama sive, upotrijebite
opciju cmap, kao npr. cmap = "rainbow". Popis svih mogućih paleta za cmap možete
dobiti naredbom sorted(colormaps).
• crtanje plohe:
[30]: var ('x y')
f (x, y) = x^4 - 2*x^2*y + 2*y^3
plot3d (f, (x,-1,1), (y,-1, 1), adaptive = True, viewer = "tachyon")
[30]:

19
• crtanje nivo-krivulja:
[ ]: contour_plot (f, (x,-1,1), (y,-1, 1), fill = False)

[ ]: contour_plot (f, (x,-1,1), (y,-1, 1))

• crtanje nivo-krivulja uporabom boja:


[31]: contour_plot (f, (x,-1,1), (y,-1, 1), cmap = 'rainbow', fill = False)
[31]:

20
[32]: contour_plot (f, (x,-1,1), (y,-1, 1), cmap = 'rainbow')
[32]:

21
5. zadatak za zadaću
1. Nacrtajte plohu koja je zadana jednadžbom $z = (xˆ2 - 3ˆ2)(x - 3)ˆ2 + (yˆ2 -
32) 2 $ za ( x, y) ∈ [−3, 3] × [−5, 5]. Neka su točke različite visine različito
obojane (opcija adaptive = True).
2. Nacrtajte njezinih 12 nivo–krivulja (opcija contours = 12, podrazumijevani
broj je oko 5).
3. Na novoj slici nivo-krivulje prikažite u boji primjenom opcije cmap = "Set1".
[ ]:

Rješenje 1. zadatka za zadaću


Na istoj slici nad područjem [0, 4π ]2 , prikažite plohe zadane eksplicitnim
jednadžbama z = cos x · cos y i z = sin x · sin y. Prvu obojite žutom (yellow), a drugu

22

You might also like