— oo dostáváme
^ , a^Vl + ln2a
as =---.
y ln a
Jde tedy o konstantní násobek průvodiče.
Maple.
> restart:with(VectorCalculus, ArcLength) :
> interface(showassumed=0):assume(a>l):
> logspiral:=phi->:
> ArcLength(logspiral,phi=phi[1],phi [2]);
125
-^/aVM{hi{a)2 + 1)(cos(0;l)2 +sin(01)2) ^ a^) (ln(a)2 + l)(cos(02)2 + sin(02)2) ln(a) ln(a)
Protože Maple počítá nad komplexními čísly, nezjednodušil výrazy v a2^1, Va2^2. Proto je nutné příkazem assume Maplu sdělit, že proměnné (fi,(f2 jsou reálná čísla:
> assume(phi[1]::real,phi[2]::real);
> ArcLength(logspiral,phi=phi[1]..phi[2]):simplify(%);
Vln(a)2 + l(-a4'1 +afe) In (a)
Jak vidíme, procedura ArcLength vypočítala délku i na obecném intervalu. V limitním případě (pi —> —oo dostáváme:
> limit(%,phi[1]=-infinity);
a?2 Vln(a)2 + ! In (a)
2.6 Příklad.
Určete délku oblouku hyperbolické spirály f(t) = (a cosh i, asinhi, at), a > 0 mezi body t = 0 a t = 1.
Délka oblouku prostorové křivky f(t) = (fi(t),f2(t),f^(t)) je určena obdobně jako u rovinných křivek:
(7) s = ŕ n/'(í)iidí = ŕ v//í2(í)+/2/2(í)+/í(í)dí
V případě hyperbolické spirály máme
/'(ŕ) = (asinhi, a cosh i, a)
Tedy
ds = a\Jcosh2 i + (sinh2 í + l) dí = ay/cosh2 í + cosh2 t dt = a\/2coshidi
f1 /e1-e"1 s = a\/2 j cosh t dt = a\/2(sinh 1 — sinh 0) = a\Í2 í--0
h V 2
= a— (e-e )
126
Maple. Pro výpočet délky prostorové křivky můžeme využít stejně jako u rovinných křivek proceduru ArcLength z knihovny vectorCalculus.
> restart:with(VectorCalculus, ArcLength) :
> interface(showassumed=0):assume(a>0):
> hypspiral:=t->:
> ArcLength(hypspiral,t=0..1) :simplify (%);
^vW"1' (-1 + e2)
2.7 Příklad.
Určete délku oblouku křivky f(t) = (a(í — siní), a(l — cosi), 4acos |) mezi dvěma následnými průsečíky s rovinou (x,z).
Řešení.
Pro průsečík s rovinou (x, z) musí platit y = 0, neboli
a(l — cosi) = 0 cos í = 1
í = 2/ctt, keZ
Budeme uvažovat průsečíky íi = 0 a t2 = 2ir. Délku křivky na intervalu [0,2ir] spočítáme podle vzorce (7):
f'(t) = a (1 — cosi,siní, —2sin-
r2-w
s = a
r2-w
1 - 2 cos í + cos2 í + sin2 í + 4 sin2 - dí
2 1- cos2 - + 2sin2 - + 4sin2 - dí
í íz7t t
8sin2 -dí = 2\/2a / sin -dí = 2\Í2 a(2 + 2) = 8\/2 a
2 Jo 2
127
Maple. Nejdříve určíme interval, na kterém budeme délku zjišťovat. Před řešením příslušné rovnice y = 0 nastavíme proměnnou _EnvAiisoiutions na hodnotu true pro vypsání všech kořenů.
> restart:with(VectorCalculus,Arclength):_EnvAllSolutions:=true:
> interface(showassumed=0):assume(a>0):
> f:=t->:
> solve (f (t) [2]=0,t);
{ŽTT.Zl}
Zvolíme interval [0, 2ir] a na takto zvoleném intervalu spočítáme s použitím procedury ArcLength délku zadané křivky:
> ArcLength(f,t=0..2*Pi);
8a s/2
128
3 Oskulační kružnice a křivost rovinné křivky
3.1 Příklad.
Určete poloměr oskulační kružnice logaritmické spirály
/(?) = (cľ cos (p, df sin p).
Řešení.
Pro poloměr r oskulační kružnice křivky (/i, f2) platí:
,2 _ (/í2
(8)
fit
Pro dané parametrické vyjádření logaritmické spirály máme
f'( restart:
> interface(showassumed=0):
> logspir:=t->[a"t*cos (t),a~t*sin (t) ] :
> df:=diff(logspir (t),t) :
> ddf:=diff(logspir (t),t$2) :
> dfdf:=df[1]"2+df[2]"2:
> dfddf:=df[1]*ddf[2]-df[2]*ddf[1]:
> sqrt(dfdf"3/dfddf"2) :simplify (%) assuming a>0,t:
f 12 12 '
: real;
ď-y/l + ln(a)2
Uvedený výpočet poloměru r oskulační kružnice "zapouzdříme" do jediné procedury, kterou navíc obohatíme o výpočet středu oskulační kružnice S. Výstupem procedury ose je uspořádaná dvojice [ S, r ] :
> ose:=proc(f,t)
local tt,df,ddf,dfddf,dfdf,r,S; assume(tt::real); df:=diff(f(tt),tt); ddf:=diff (f (tt),tt$2); dfdf:=df[1]*df[1]+df[2]*df[2]; dfddf:=df[1]*ddf[2]-df[2]*ddf[1]; r:=simplify(sqrt(dfdf"3/dfddf"2)); S:=simplify(
[f (tt) [1]-df[2]*dfdf/dfddf,f(tt) [2]+df[1]*dfdf/dfddf]); simplify(subs(tt=t,[S, r] ) ) ; end:
Odzkoušíme proceduru pro zadanou logaritmickou spirálu. Spočítáme střed a pak poloměr oskulační kružnice:
> ose(logspir,t)[1];
[—a ln(a) sin(í), a ln(a) cos(í)]
> ose(logspir,t)[2]:simplify(%) assuming a>0,t::real;
oVl + ln(a)2
Následující kód vede k vykreslení posloupnosti oskulačních kružnic logaritmické spirály a k animaci. Detailní prozkoumání příkazů je ponecháno na čtenáři.
130
> with(plots) :setoptions(scaling=constrained) :
> logspir2:=t->[1.8~t*cos(t),1.8"t*sin(t)]:
> L0GSPIR2:=plot([logspir2 (t) [1],logspir2 (t) [2],t = 0.-Pi],
color=black,thickness=2) :
> S2:=osc(logspir2,t)[1]:r2:=osc(logspir2,t)[2]:
> 0SC2:=seq(plot([S2[1]+r2*cos(s),S2[2]+r2*sin(s) , s = 0. .2*Pi] ) ,
t=seq(i*Pi/2 4,i=0..18)):
> display(L0GSPIR2,0SC2,axes=none);
> logspir3:=t-> [1.08"t*cos(t),1.08"t*sin(t)]:
> L0GSPIR3:=plot([logspir3 (t) [1],logspir3(t) [2],t = 0..8*Pi],
color=black,thickness=3):
> S3:=osc(logspir3,t)[l]:r3:=osc(logspir3,t)[2]:
> 0SC3 —display(seq(plot([S3[1]+r3*cos (s),S3[2]+r3*sin (s),
s = 0..2*Pi]) ,t = seq(i*Pi/12,i=0..96)),insequence=true) :
> R3—display(seq(plot([S3[1]+s*(logspir3(t)-S3)[1],
S3[2]+s* (logspir3 (t)-S3) [2],s = 0 . .1]), t=seq(i*Pi/12,i=0..96)) , insequence=true) :
> display(LOGSPIR3,0SC3,R3,axes=none);
3.2 Příklad.
Určete množinu středů oskulačních kružnic elipsy f(t) = (a cos t, b sin t). Řešení.
Střed oskulační kružnice křivky (fi, f2) leží na přímce dané bodem (fi, f2) a jednotkovým směrovým vektorem — -(—f2, /{). Ze vzorce pro poloměr
V fl + f2
kružnice (8) dostáváme vztah pro souřadnice středu oskulační kružnice:
f2 (/f
fl f n fl f n J1J2 J2J1
m
fi (fi2
fifí-íkfí
131
V případě elipsy máme:
f'(t) = (—a siní, b cos í) f"(t) = (—a cosi, —b siní) /ÍW/^W " /2 (*)/('(*) = (-a)(-6) siní siní - (-a)6cosí cosi = a6
Protože /'(í) a /"(í) nejsou kolineární, nemá elipsa inflexní body a tedy v každém jejím bodě existuje (právě jedna) oskulační kružnice.
x = a cos í
b cos í [a2 sin2 í + b2 cos2 í ab
o b2 o a2 - b2 o
= a cos t — a cos í sin í--cos í = -cos í
a a
- a sin í f a2 sin2 t + b2 cos2 í) y = b sin í H--
ab
2 . •? 62 - a2 . o o sin í — o sin í cos í--— sin í = -■-sin í
Množinou středů oskulačních kružnic elipsy je asteroida po afinní transformaci (viz srovnání s parametrizací asteroidy v příkladě 1.9):
Maple. Využijeme procedury ose ze strany 130 a spočítáme střed oskulační kružnice:
> interface(showassumed=0):assume(a>0,b>0):
> ellipse:=t->[a*cos(t),b*sin(t)]:
> ose(ellipse,t)[1];
cos(í)3(a2 - b2) sin(í)3(a2 - b2)'
Nyní uvažujme elipsu pro a = 3, b = 2 a vykresleme několik jejích oskulačních kružnic včetně středů:
132
> with(plots) :setoptions(scaling=constrained) :
> ellipse2:=t->[3*cos (t),2*sin (t) ] :
> ELLIPSE2:=plot([ellipse2 (t) [1],ellipse2 (t) [2],t = 0..Pi],
color=black,thickness=2) :
> S2:=osc(ellipse2,t)[1]:r2:=osc(ellipse2,t)[2]:
> 0SC2:=seq(plot([S2[1]+r2*cos(s),S2[2]+r2*sin(s) , s = 0. .2*Pi] ) ,
t=seq(i*Pi/9,i=0..5)):
> CENTERS2:=pointplot({seq(S2,t=seq(i*Pi/9,i=0..5))},
color=black,symbol=cross,thickness=2):
> display(ELLIPSE2,0SC2,CENTERS2,axes=none);
Středy oskulačních kružnic podél celé elipsy:
> pointplot({seq(S2,t=seq(i*Pi/36,i=0..72))},
color=black,symbol=cross,thickness=2);
Kód pro animaci:
> ELLIPSE2b:=plot([ellipse2 (t) [1],ellipse2 (t) [2],t = 0..2*Pi],
thickness=3,color=black) :
> 0SC2b:=display(seq(plot([S2[l]+r2*cos (s),S2[2]+r2*sin (s),
s=0..2*Pi]),t=seq(i*Pi/36,i=0..72)),insequence=true):
> R2:=display(seq(plot([S2[1]+s*(ellipse2(t)-S2)[1],
S2[2]+s*(ellipse2 (t)-S2) [2],s = 0 . .1]), t=seq(i*Pi/36,i=0..72)),insequence=true):
> display(ELLIPSE2b,0SC2b,R2,axes=none);
3.3 Příklad.
Spočtěte křivost elipsy f(t) = (a cos t, b sin í) a dokažte, že ve vrcholech je tato křivost maximální, resp. minimální.
Řešení.
Křivost x křivky / = (fi, f2) je dána vztahem
1
x = -, r
133
kde r je poloměr oskulační kružnice (viz (8)).Tudíž platí:
I cl cil cl rlll
/Q\ „ J2J1 I
(9) x = -—
Využijme dílčích výsledků předchozího příkladu 3.2 a okamžitě dostáváme
/ \ ob
=-:-š-
(a2 sin2 t + b2 cos2 í)2
Křivost ve vrcholech elipsy:
, x ob a ab b
*(0) = = -3 = ^ x(f) = X(*L) = _ = _
Označme g(ť) = a2 sin2 í + b2 cos2 í. Pak platí x'(í) = 0, právě když ^'(í) = 0. Přitom
g (t) = 2a2 siní cosi — 262 siní cos í = 2 (a2 — 62) siní cosi.
Protože a ^ b, tak musí platit siní = 0 nebo cosi = 0. Neboli stacionární body funkce g(t) dostáváme pro í = 0, t = tv, t = ^ at = V těchto bodech mění derivace >c'(ť) znaménko, jedná se tedy o lokální extrémy.
Maple. Proceduru Curvature pro výpočet křivosti dané křivky najdeme v knihovně
VectorCalcuius.
> restart:with(VectorCalculus,Curvature):
> interface(showassumed=0):assume(b>0,a>b,t::real):
> ellipse:=:
> simplify(Curvature(ellipse,t));kappa:=unapply(%, t) :
ab
(a2 sin(i)2 + a2 — a2 cos(i)2)
Ve kterých bodech je křivost elipsy maximální či minimální zjistíme pomocí příkazu ExtremePoints Z knihovny Student [Calculusl] :
> with(Student[Calculusl],ExtremePoints):
> ExtremePoints(kappa (t),t = 0 . . 2*Pi);
n n 37r o
0, — , 7T, -, ZIT
'2 2
Tudíž křivost elipsy má lokální extrémy ve vrcholech elipsy. Spočítejme v nich hodnotu křivosti:
134
> simplify([kappa(0),kappa(Pi/2),kappa (Pi),kappa(3*Pi/2) ]);
Je tedy zřejmé, že v protějších vrcholech jsou křivosti stejné, v případě hlavního vrcholu maximální, v případě vedlejších vrcholů minimální. Podívejme se ještě na průběh křivosti elipsy v konkrétním případě:
> simplify(Curvature(ellipse,t)) :subs(a=3, b=2 , %) ;
6
a b a b
b2' a2' b2' a2
> plot(%,t = 0..2*Pi) ;
0.5
0 2 4 6
3.4 Příklad.
Spočtěte křivost hyperboly f(t) = (a cosh i, frsinhi).
Řešení.
K výpočtu opět použijeme vzorec (9):
/'(ŕ) = (asinhi, 6 cosh i) f"(t) = (acosht,6sinhť)
/í(*)/2 (*) " /2(*)/('(*) = abs™h2 t - ab cosh2 t
= —ab
ab
(a2 sinh2 t + b2 cosh2 í)2
Ve vrcholu hyperboly je x(0) = 70- = t-t.
135
Maple.
> restart:with(VectorCalculus,Curvature):
> interface(showassumed=0):assume(a>0,b>0,t::real):
> hyperbola:=:
> simplify(Curvature(hyperbola,t));
ab
(b2 cosh(i)2 -a2 + a2 cosh(i)2) Křivost ve vrcholu t = 0:
> simplify(eval(%,t=0));
a
h2
3.5 Příklad.
Spočtěte křivost paraboly y = —x2.
2p
Řešení.
Nejprve vyjádříme vzorec pro výpočet křivosti (9) pro obecnou křivku danou explicitně y = f (x), tedy s parametrickým vyjádřením 7(2;) = (x, f (x)).
7 =(!,/), 7 = (0,/ ),7i72 - 727i = / \f"\
(10) x
(1 + f2)2
Pro f (x) = —x2 máme f (x) = —x, f "(x) = —, tedy 2p p p
{(x)
1
P
1
2xí
P
. . 1
Ve vrcholu paraboly je x(0) = -.
Maple. V případě explicitního vyjádření křivky použijeme jednoduchý převod na vyjádření parametrické, se kterým umí pracovat procedura Curvature:
> restart:with(VectorCalculus,Curvature):
> interface(showassumed=0):assume(p>0,x::real):
> parabola:=:
> simplify(Curvature(parabola,x));
136
p2
(p2 + x2)
Křivost ve vrcholu paraboly:
> simplify(eval (%,x=0));
3.6 Příklad.
7t
Stanovte poloměr r oskulační kružnice křivky y = sin a; pro x = —. Řešení.
Podle vzorce (10) v předchozím příkladu 3.5 máme
I - sin f I
2 (1+cos2 f) 2
Maple. Využijeme již definované procedury ose ze strany 130:
> sinusoid:=t->[t,sin (t)] :
> S:=osc(sinusoid,Pi/2) [1] :
i:-[|.0]
> r:=osc(sinusoid,Pi/2)[2];
r := 1
Obrázek oskulační kružnice sinusoidy y = sin x pro x = ^:
> with(plots) :setoptions(scaling=constrained) :
> SINUSOID:=plot([sinusoid (t) [1],sinusoid(t) [2],t = 0. . 2*Pi]) :
> OSC:=plot([S[1]+r*cos(s),S[2]+r*sin (s),s = 0..2*Pi]) :
> display(SINUSOID,OSC);
Lze vytvořit animaci obdobně jako v příkladech 3.1a 3.2. Musíme ji však omezit pouze na interval neinflexních bodů!
137
4 Obálka soustavy rovinných křivek
4.1 Příklad.
Stanovte obálku soustavy kružnic F(x, y, t) = {x — ť)2 + y2 — ^ = 0, přičemž t E (-oo,0) U (0,oo).
Řešení.
OF . . t 3 4
-= -2(x -t)--= -2x + -t = 0 t= -x
dt v ' 2 2 3
4.V . ..2 (I*)* / , ,.2
-Fix, y,t) = [ x--a; + y , , . ,
v ; v 3 / y 4 V 3/ " 9
= ~\x2+y2 = 0
\/3
Obálkou dané soustavy jsou přímky y = ±-x.
3
Maple. Rovnice soustavy kružnic, její parciální derivace podle parametru soustavy a charakteristická množina:
> restart:
> F:= (x-t) "2+y"2-t"2/4 = 0:
> dF:=diff(F,t):
> sol:=allvalues(solve({F,dF},{x,y}));
sol .- |x = _ j, = _| , |x = _ j, = __|
Máme dvě řešení, která přiřadíme pomocí příkazu as sign do proměnných ei a e2. Vždy je následně nutné použít příkaz unassign pro uvolnění přiřazených proměnných! Vykreslení obálky zahrnuje proměnná env:
> with(plots):setoptions(scaling=constrained):
> assign(sol[l]):envl:=unapply ( [x,y],t) :
> unassign('x','y') :
> assign(sol[2]):env2:=unapply ( [x,y],t) :
> unassign('x','y'):
> env:=plot({ [envl(t) [1],envl (t) [2],t=-9..9],
[env2(t)[1],env2(t)[2],t=-9..9]},thickness=3,color=red):
Vykreslíme obálku společně s několika kružnicemi zadané soustavy. V Maplu je
příhodnější zobrazovat krivky určené parametrickými rovnicemi a ne implicitně.
Proto v jednodušších případech převedeme implicitní zadání na parametrické a
pak teprve objekt vykreslíme. Soustava kružnic parametricky:
138
> f:=(s,t)->[t+t/2*cos(s),t/2*sin(s)]:
> SYS:=seq(plot ( [f (s,t/6) [1],f (s,t/6) [2],s = 0..2*Pi],color=grey),
t=-30 . .30)
> display(SYS,ENV);
4.2 Příklad.
Nalezněte obálku soustavy přímek, které vzniknou pohybem dané úsečky délky k, jejíž krajní body se pohybují po souřadných osách.
Řešení.
[0,b] k
[a,0]
úsekový tvar rovnice přímky: 0
a = k cos t.b = k siní
x y
- + f-1
a b
Uvažujeme jednoparametrickou soustavu přímek:
F(x,y,t) = -^—+ -2—-1 = 0 k cos í k sin í
Nyní už můžeme určit charakteristickou množinu:
F(x, y,ť) = x siní + y cos í — k cos í siní = 0
dF ,2,2 —— = x cos t — y sin í + k sin t — k cos í = 0 dt y
x sin í + y cos t = k cos í sin í
x cos í — y sin í = k (cos í — sin í)
139
Soustavu o neznámých x, y bude výhodné řešit pomocí Cramerova pravidla:
D
Dx D
y
sin í cos í cos í — sin í
cos í sin t
• 2 2
sin t — cos t
cos2 t — sin2 t
cos t — siní
siní
cos í sin í
cos í cos2 í — sin2 í
-/ccos í
- k sin3 t
Vypočítané hodnoty x = ——- = k cosó t,y= = k sin í odpovídají parametrizaci asteroidy (Příklad 1.9).
Maple. Rovnice soustavy přímek, její parciální derivace podle parametru soustavy a charakteristická množina:
> restart:
> F:=x/(k*cos(t))+y/(k*sin (t))-1 = 0:
> dF:=diff(F,t) :
> sol:=simplify(solve({F,dF},{x,y}));
sol := {x = kcos(í)3,y = fcsin(í)3}
Uvažujme velikost úsečky k = 1:
> k:=l:
Řešení přiřadíme pomocí příkazu assign do proměnné env a následně příkazem unassign přiřazení zrušíme. Vykreslení obálky uložíme do proměnné env:
> with(plots) :setoptions(scaling=constrained) :
> assign(sol):env:=unapply([x,y],t):unassign('x','y'):
> env:=
plot([env(t)[1],env(t)[2],t=0..Pi/2],thickness=3,color=red):
Vykreslíme obálku společně s několika přímkami zadané soustavy. Stejně jako v předchozím příkladu si přímky soustavy vyjádříme parametricky:
> f:=(s,t)->[s*k*cos(t),k*sin(t)-s*k*sin (t) ] :
> SYS:=seq(plot ( [f (s,t*Pi/36) [ 1],f (s,t*Pi/36) [2],s = 0..1],
color=grey),t=0..18):
> display(SYS,env);
140
4.3 Příklad.
Nalezněte obálku přímek v 1. kvadrantu, které na osách vytínají trojúhelník s konstantní plochou S.
Řešení.
Využijeme úsekový tvar rovnice přímky:
x y
S
ab
1 = 0
a, b > 0
ab = k = konst. => b = —
a
(11)
(12)
F(x,y,a)
dF da
x ay a k
1 = 0
x y x ay
(lľ)
_, > aii aii k
F(x,y,a) = -£ + -±-1 = 0 ^2/=^
Dosazením za y do rovnice (12) obdržíme x = —. Obálku vyjádříme ve tvaru
a k k
soucmu xy =--= —. Jedna se o jednu větev hyperboly.
2 2a 4
Maple. Uvažujme obsah trojúhelníku S = ^ = ^, neboli k = ab.
Rovnice soustavy přímek, její parciální derivace podle parametru soustavy a charakteristická množina:
141
> restart:
> F:=x/a+a*y/k-l=0:
> dF:=diff(F, a) :
> sol:=solve({F,dF},{x,y});
sol := \v = —, x = —} xy 2a 2s
Uvažujme soustavu, kde
> k:=5:
Řešení přiřadíme pomocí příkazu assign do proměnné env a následně příkazem unassign přiřazení zrušíme. Vykreslení obálky uložíme do proměnné env:
> with(plots):
> assign(sol):env:=unapply([x, y] , a) :unassign('x','y') :
> env:=
plot ( [env(t) [1],env(t) [2 ] ,t = 0.05..2],thickness=3, color=red) :
Vykreslíme obálku společně s několika přímkami zadané soustavy. Stejně jako v předchozím příkladu si přímky soustavy vyjádříme parametricky:
> f:=(s,t)->[t-t*s,k/t*s] :
> SYS:=seq (plot ( [f (s,t/10) [1],f (s,t/10) [2],s=0..1],
color=grey),t=l..10):
> display(SYS,env);
4.4 Příklad.
Vnitřní strana kružnice je osvětlena svazkem rovnoběžných paprsků. Nalezněte obálku odražených paprsků.
Řešení.
142
Obrázek znázorňuje geometrickou situaci pro odražený paprsek směru u v závislosti na parame-
likosti úhlu a = ir + 2t odpovídá vektor u vektoru
truí e (-|, |). Vzhledem k ve-
(cos(7r + 2í), sin(7r + 2í)) = (— cos 2t, — sin 2ť).
Normálovým směrem přímky odpovídající odraženému paprsku je tudíž směr
(sin 2t, — cos 2ť).
Uvažujeme-li jednotkovou kružnici, pak místo bodu odrazu je určeno souřadnicemi (cos í, sin i) a přímka je dána vztahem
sin 2t(x — cos í) — cos 2t(y — siní) = 0
Charakteristická množina odražených paprsků:
F(x,y,ť) =x sin 2í — y cos 2t — (sin 2t cos t — cos 2t sin í) =x sin 2t — y cos 2t — sin í = 0
dF
——- =2x cos 2í + 2y sin 2í — cos í = 0 dt y
x sin 2t — y cos 2í = sin í 2x cos 2í + 2y sin 2í = cos í
Soustavu o neznámých x, y budeme řešit pomocí Cramerova pravidla:
D
sin 2í — cos 2í 2 cos 2í 2 sin 2í
= 2 sin2 2í + 2 cos2 2í = 2
D.
X
sin í — cos 2í cos í 2 sin 2í
= 2 sin í sin 2í + cos í cos 2í
D.
y
sin 2í sin í 2 cos 2í cos í
= sin 2í cos í — 2 sin í cos 2í
143
Obálka odražených paprsků má parametrizaci
Dx 1 x = — = sin t sin 2t H— cos t cos 2t, D 2
Dv 1
y = —r = — sin 2t cos t — siní cos 2t, D 2
t e
7t 7t
'2' 2
Pro í = 0 dostáváme bod vratu; stačí ověřit, že x'(0) = y'(0) = 0.
Maple. Rovnice soustavy odražených paprsků, její parciální derivace podle parametru soustavy a charakteristická množina:
> restart:
> F:=x*sin(2*t)-y*cos(2*t)-sin(t)=0:
> dF:=diff(F,t):
> sol:=simplify(solve({F,dF},{x,y}));
sol := {y = sm(í)3,x = —i(2cos(í)2 — 3) cos(í)}
Řešení přiřadíme pomocí příkazu assign do proměnné env a následně příkazem unassign přiřazení zrušíme. Vykreslení obálky uložíme do proměnné env:
> with(plots):setoptions(scaling=constrained):
> assign(sol):env:=unapply([x,y],t):unassign('x','y'):
> ENV:=plot
([env(t)[1],env(t)[2],t=-Pi/2..Pi/2],thickness=3,color=red):
Do jednoho obrázku vykreslíme soustavu odražených paprsků společně s paprsky původními, obálku i osvětlovanou část kružnice. Kvůli hledání příhodné délky zobrazovaných parametrů bude tentokrát výhodnější pracovat s implicitním vyjádřením paprsků:
> CIRCLE_PLOT:=plot ( [cos (s) ,sin (s) ,s=-Pi/2 . .Pi/2],
color=black,thickness=2) :
> RAYS:=seq(implicitplot(y=sin(t),x=0..1,y=-l.2..1.2,
color=grey),t=seq(i*Pi/40,i=-19..19)) :
> SYS:=seq(implicitplot (F,x=0..1,y=-l.2..1.2,
color=grey),t=seq(i*Pi/40,i=-19. .19)) :
> display(CIRCLE_PLOT,RAYS,SYS,ENV,view=[0. .1,-1.2..1.2]);
144
4.5 Příklad.
Určete evolutu cykloidy f(t) = (r(t — siní), r(l — cosi)). Řešení.
Evolutu cykloidy spočítáme jako obálku soustavy jejích normál.
f'(t) = (r(l - cosi), r siní)
Protože je důležitý pouze směr f'(t), v dalších výpočtech r vykrátíme. Normála
v bodě /(i) je dána rovnicí (z — f(t), —f'(t)) = 0, kde z = (x,y). Vyjádříme
r
soustavu normál:
F(x, y,ť) = (x — rt + r siní)(l — cos í) + (y — r + r cos í) siní = x(l — cos í) + y sin í + rt (cos í — 1) = 0
dF
--—■ = a; siní + ycosí + r(cosí — 1) — rt siní = 0
x(l — cos í) + y sin í = rt (1 — cos í) a;siní + ycosí = r(l — cosi) + rt siní
Soustavu o neznámých x, y vyřešíme Cramerovým pravidlem:
1 — cos í sin í sin í cos í
D
Dx D
cos í — cos2 í — sin2 í = cos í — 1
y
rt(l — cos í) siní r(l — cosi) + rt siní cosi
1 — cos í rt(l — cos i)
siní r(l — cosi) + rísiní
r(cosí — l)(í + siní) r(l — cosi)2
145
Obálka normál má parametrizaci
D.
x
r (sin í + t)
x
D
y
Dy
D
r (cos t — 1).
Proveďme reparametrizaci t = r + tt:
x = r(sin(r + tt) + r + tt) = r(r — sinr) + 7rr,
y = r (cos(r + tt) — 1) = r(l — 1 — cos r — 1) = r (1 — cos r) — 2r.
Evolutou cykloidy je tedy cykloida posunutá o vektor {[irr, —2r). Na obrázku je evoluta vykreslena čárou větší tlouštky:
Maple. Výpočet evoluty v Maplu nebudeme implementovat jakožto hledání obálky normál, ale jako určení množiny středů oskulačních kružnic. Následující procedura evolute má za vstupní parametr křivku. Lokální proměnná r_osc reprezentuje spojnici středu oskulační kružnice s bodem dotyku, lokální proměnné df, ddf, dfdf, dfddf mají stejný význam jako v proceduře ose (str. 130):
> restart:
> evolute:=proc(f)
local df,ddf,dfdf,dfddf,r_osc; df:=diff(f(t),t); ddf:=diff (f (t),t$2); dfdf:=df[1]*df[1]+df[2]*df[2]; dfddf:=df[1]*ddf[2]-df[2]*ddf[1]; r_osc:=t->[-df[2]*dfdf/dfddf,df[1]*dfdf/dfddf]; simplify(evalm(f(t)+r_osc(t))); end:
Evoluta cykloidy:
> cycloid:=t->[r*(t-sin(t)),r* (1-cos (t))] :
> evolute(cycloid);
! irr
146
[(sin(í) + t)r,r(-l + cos(í))]
N ásleduj í cí kód implementuj e proceduru plot _e volutě zobrazuj í cí normály křivky. Obálkou těchto normál je hledaná evoluta, která je patrná i bez jejího vlastního znázornění. Procedura má za vstupní parametry křivku f, interval vykreslení (tl,t2) a číslo k udávající počet vykreslovaných normál n_piot:
> with(plots):setoptions(scaling=constrained):
> plot_evolute:=proc(f,tl,t2,k)
local df, ddf, dfdf, dfddf,r_osc,n_par,N_PLOT,F_PLOT;
df:=diff(f(t),t);
ddf:=diff (f (t),t$2);
dfdf:=df[1]*df[1]+df[2]*df[2];
dfddf:=df[1]*ddf[2]-df[2]*ddf[1];
r_osc:=t->[-df[2]*dfdf/dfddf,df[1]*dfdf/dfddf];
n_par:=evalm(f(t)+s*r_osc(t)) ;
N_PLOT:=seq(plot([n_par[1],n_par[2],s=-l..1],color=blue),
t=seq(tl+(t2-tl)*i/k,i=0..k)): F_PLOT:=plot([f(t) [1],f (t) [2],t=tl..t2],thickness=3,color=red) : display(N_PLOT,F_PLOT); end:
Obálka normál cykloidy:
> r:=l:
> plot_evolute(cycloid,0.1,8*Pi,60);
4.6 Příklad.
Nalezněte obálku normál elipsy f (t) = (a cos í, b sin t). Řešení.
Budeme postupovat obdobným způsobem jako v předchozím příkladu 4.5.
f'(t) = (—a sin t, b cos t) Normála v bodě f (t) je dána rovnicí (z — f (t), f (t)) = 0, kde z = (x,y).
147
Vyjádříme soustavu normál:
F(x,y,ť) ={x — a cosi) (—a siní) + (y — 6siní)6cosí
9 9
= — xasmt + ybcost + a siní cosi — b siní cosi = — xa sin i + yb cos í + (a2 — 62) sin i cos i = 0
í„2
OF
- = —a;acosí — wosmí
dt
b2) f cos2 i - sin2í)
/ 9 9 \
a;a sin t — yb cos i = (a — 6 ) sin i cos i
a2 - 62) í cos2 i - sin2 i)
a;acosí + ybsint Soustavu o neznámých x, y vyřešíme Cramerovým pravidlem:
D
a siní —b cosi a cos í b sin í
ab sin2 í + ab cos2 t = ab
Dx = b(a2- b2) = b(a2- b2)
Dy = a (a2 - b2)
sin í cos í
cos í
cos2 í — sin2 í sin í
(sin2 í cos í + cos3 í — sin2 í cos í) = b (a2 — 62) cos3 í
siní
sin í cos í
cos í cos2 í — sin2 í
(sin í cos2 í — sin3 í — sin í cos2 í) = a (b2 — a2) sin3 í
Obálka normál má parametrizaci
Dx _ a2
Dy = b2_
D
■ cos í,
■ snr í.
Dostáváme asteroidu po afinní transformaci. Tento výsledek odpovídá výsledku při hledání středů oskulačních kružnic (viz Příklad 3.2).
Maple. Použijeme stejných procedur jako v předešlém příkladě:
> ellipse:=t->[a*cos(t),b*sin (t)] :
> evolute(ellipse);
"cos(ž)3(-62 + a2) sin(ž)3(-62 + a2)' a ' b
148
> a:=5:b:=3:plot_evolute(ellipse,0,2*Pi,32);
Uvedené procedury můžeme vyzkoušet např. také při hledání obálky normál paraboly, traktrix, srdcovky nebo logaritmické spirály:
4.7 Příklad.
Evolventu E(p) orientované křivky C určenou bodem p G C dostaneme tak, že na tečnu v bodě g G C naneseme (orientovanou) délku oblouku mezi p a q. Z mechanického hlediska jde tedy jako by o odvíjení nitě namotané na dané křivce (vždy ve směru tečny). Dokažte, že křivka C je evolutou každé své evolventy E(p).
149
Řešení.
Na následujících obrázcích je znázorněn mechanický popis evolventy kružnice:
Uvažujme křivku danou parametrizací obloukem /(s) a příslušné jednotkové vektory ei(s) = a e2(s) || ^jj. Potom pro parametrické vyjádření g(s) evolventy E(p) v bodě p platí:
ff(s) = /(s) - sei(s) Hledáme evolutu křivky E(p), proto si nejdříve najdeme rovnici soustavy normál E(p) a potom určíme jejich obálku:
"T" = ei(s) - ei(s) - SK(s)e2(s) => ^ || e2(s) as as
Charakteristická množina normál evolventy (pro z = (x,y))\
F(x,y,s) = (e2(s),z - /(s) +sei(s)) = (e2(s),z - /(s)) + (e2(s), sei(s)) = (e2(s),z-/(S))=0
<9F
— = (-/í(s)ei(s),z as
(s)) + (e2(s), -ei(s)) = (-/c(s)ei(S), z - /(s)) = 0
Odtud plyne, že z — /(s) musí být kolmé na ei(s) i e2(s). Tudíž z — /(s) = o, neboli z = /(s). Obálkou normál (evolutou) evolventy dané křivky je tedy křivka sama.
Maple. Pro jednoduchost uvažujme pouze křivky parametrizované obloukem. Procedura pro výpočet evolventy křivky /(s) v bodě /(c):
> restart:
> involute:=proc(f,c)
local s,df; df:=s->diff(f(s),s); s->evalm(f(s) + (c-s)*df (s)); end:
150
Mějme kružnici parametrizovanou obloukem a vykresleme několik jejích evolvent:
> circle:=s->[r*cos(s/r),r*sin (s/r) ] :
> inv:=involute (circle,c) :inv (s);
> with (plots) :setoptions(scaling=constrained) :
> r:=2:
> CIRCLE_PLOT:=plot ( [circle (s) [ 1],circle (s) [2],s=0..2*Pi*r],
thickness=2,color=red):
> INVOLUTE:=seq(plot([involute (circle,c) (s) [1],
involute(circle,c)(s)[2],s=c..c+5*r],
color=blue),c=seq(j*Pi*r/3,j=0..6)):
> display(CIRCLE_PLOT,INVOLUTE);
151
5 Prostorové křivky
5.1 Příklad.
Napište parametrické vyjádření trajektorie bodu P, který se pohybuje rovnoměrným otáčivým pohybem kolem osy rotační válcové plochy a zároveň
a) konstantní rychlostí,
b) rychlostí úměrnou proběhnuté dráze, po tvořící přímce této rotační válcové plochy. Řešení.
Uvažujme rotační válcovou plochu, jejíž podstavou je kružnice se středem v počátku souřadné soustavy a poloměrem a. Tudíž pro souřadnice (x,y, z) hledané křivky platí, že x = a cos í a y = a sin í.
a) Vztah pro souřadnici z:
dz
— = b, kde b = konst. dt
dz = bdt z = bt + c
Výsledná parametrizace má tedy tvar
f(t) = (a cos í, a siní, bt). Tato křivka se nazývá šroubovice.
b) Vztah pro souřadnici z:
dz
— = kz, kde k = konst. dt
dz , ,
— = kát
z
ln z = kt + ln b
z = bekt
Výsledná parametrizace má tedy tvar
f(t) = (acost, a siní, bekt Tato křivka se nazývá válcová spirála.
152
Maple. Podívejme se, jak parametr b ovlivňuje tvar šroubovice
f(ť) = (a cos í, a siní, bť).
Nejdříve si vykreslovanou křivku nadefinujeme:
> restart:with(plots):setoptions3d(scaling=constrained):
> helix:=t->[a*cos(t),a*sin(t),b*t]:
V Maplu slouží pro znázorňování prostorových křivek příkaz spacecurve z knihovny plots. Zobrazíme jednu ze šroubovic samostatně a poté obě do jediného obrázku. Proměnné hi, h2 představují křivky, přesněji jejich vykreslení, pro různé hodnoty a a b. Volba numpoints v příkazu spacecurve zjemňuje znázornění křivek:
> HI:=spacecurve(subs(a=7,b=l,helix(t)),t = 0..4*Pi,thickness=2,
color=blue,numpoints=500):
> H2:=spacecurve(subs(a=5,b=2,helix (t)),t = 0..4*Pi,thickness=2,
color=red,numpoints=500):
> display(Hl,axes = frame) ;
> display(Hl,H2,axes=frame);
Slabší čárou je zobrazena křivka pro a = 7, b = 1 a silnější čárou je zobrazena křivka pro a = 5, b = 2. Význam hodnoty a jakožto poloměru podstavy válce šroubovice je evidentní. Hodnota b udává, jakou rychlostí se bod křivky pohybuje podél tvořící přímky válce, tj. „jak rychle se otáčí" kolem jeho osy. V případě válcové spirály
už není „rychlost otáčení" konstantní, ale s rostoucím í se zmenšuje. Vykreslíme si příklad válcové spirály pro a = 15, 6 = 1 afc = 0.1:
> cylindrical_spiral:=t->[a*cos(t),a*sin(t),b*exp(k*t)]:
> spacecurve(subs(a=15,b=l,k=0.1,cylindrical_spiral(t)),
t=0..12*Pi,thickness=2,color=blue,numpoints=5 0 0,axes=normal);
153
5.2 Příklad.
Napište parametrické vyjádření trajektorie bodu P, který se pohybuje rovnoměrným otáčivým pohybem kolem osy rotační kuželové plochy a zároveň
a) konstantní rychlostí,
b) rychlostí úměrnou proběhnuté dráze, po tvořící přímce této rotační kuželové plochy.
a) a = ct, p = at, z = bt, přičemž b2 = c2 — a2. Křivka má tedy parametrizaci
Nazývá se kuželová šroubovice.
b) a = cekt,p = aekt,z = bekt, přičemž b2 = c2 — a2. Křivka má tedy parametrizaci
Nazývá se kuželová spirála. Maple. Znázorníme si obě kuželové křivky obdobně jako v příkladu 5.1:
Řešení.
Uvažujme rotační kuželovou plochu s vrcholem v počátku souřadné soustavy. Velikost a můžeme odvodit stejně, jako jsme v předchozím příkladě .1 odvodili vztah pro souřadnici z. Z podobnosti trojúhelníků můžeme tedy psát:
f(ť) = (at cos í, at siní, bt).
154
> restart:with(plots):setoptions3d(scaling=constrained):
> conic_helix:=t->[a*t*cos(t),a*t*sin(t),b*t]:
> conic_spiral:=t->
[a*exp(k*t)*cos(t),a*exp(k*t)*sin(t),b*exp (k*t)];
> CH:=spacecurve(subs(a=l,b=l.5,conic_helix(t)) ,
t=-4*Pi..8*Pi, numpoints=500,thickness=2,color=blue) :
> CS:=spacecurve(subs(a=l,b=l.5,k=0.1,conic_spiral(t)) ,
t=-4*Pi..8*Pi,numpoints=500,thickness=2,color=blue):
> display(CH,axes=normal);
> display(CS,axes=normal);
Projekcí těchto prostorových křivek do roviny (x,y) dostáváme Archimedovu a logaritmickou spirálu. Znázornění projekce v Maplu realizujeme procedurou pro ject z balíku piottools. Tato procedura má jako vstupní parametr zobrazovaný objekt a dalším parametrem je seznam bodů projekční přímky nebo roviny:
> with(piottools,project) :
> PROJ_CH:=project(CH, [[0,0,0], [1,0,0], [0,1,0]]) :
> PROJ_CS:=project (CS, [[0,0,0], [1,0,0], [0,1,0]]) :
> display(CH,PROJ_CH,axes=normal);
> display(CS, PROJ_CS,axes=normal);
5.3 Příklad.
Bicylindrická křivka je průnikem dvou rotačních válcových ploch o různých poloměrech a a b, jejichž osy se kolmo protínají. Napište parametrické vyjádření této křivky.
155
Řešení.
Zvolme válcové plochy tak, že jejich osami jsou souřadnicové osy xaya mějme a < b. Tudíž válcové plochy jsou určeny rovnicemi
(13) y2+z2 = b2
(14) x2 + z2 = a2
Válcovou plochu (14) o menším poloměru a promítneme do roviny (x,z). Výsledná kružnice má parametrické rovnice x = a cos t,z = a sin t, které dosadíme do rovnice válcové plochy (13):
y2 + a2 sin2 t = b2
y = ±Vb2 — a2 sin2 t Výsledná parametrizace zahrnuje obě části bicylindrické křivky:
/(í) = (a cosi, ±V b2 — a2 sin2 í, a siní
Maple. Bicylindrická křivka vzniká jako průnik dvou rotačních válcových ploch jistých vlastností:
> restart:with(plots):setoptions3d(scaling=constrained):
> cylinderl:=[x=a*cos(t),y=y,z=a*sin(t)]:
> cylinder2:=y"2+z"2=b"2:
> subs(cylinderl,cylinder2):
> solve(%,y);
V-a2 sin(í)2 + b2, - V-a2 sin(í)2 + b2
Nyní už můžeme zapsat parametrické vyjádření bicylindrické křivky. Křivka je rozdělena na dvě části, které parametrizujeme zvlášť. Množinové závorky nám umožní nadefinovat obě části do jedné proměnné bicylinder. Křivku vykreslíme spolu s válcovými plochami CYLiNDERia, CYLiNDERib, jejichž průnikem je křivka definována. Pro zobrazení válcových ploch daných parametricky použijeme příkaz piot3d spolu s volbou styie=wiref rame a grid= [50, 2 ]. První volba umožní zobrazit válcové plochy jako síť parametrických křivek, druhá volba udává hustotu této sítě.
> bicylinder:=t->{ [a*cos(t),sqrt(b"2-a"2*sin(t) "2) ,a*sin(t)] ,
[a*cos(t),-sqrt (b"2-a"2*sin (t) "2),a*sin (t) ] }:
> CYLINDERla:=plot3d(subs(a=2,[a*cos(u),v,a*sin(u)]),u=0..2*Pi,
v=-7..7 , style=wireframe,grid=[5 0,2],color=green) :
> CYLINDERlb:=plot3d(subs(b=3, [v,b*cos(u),b*sin(u) ]),u=0. . 2*Pi,
v=-6..6, style=wireframe,grid=[50,2],color=gray) :
> BICYLINDER1:=spacecurve(subs (a=2,b=3,bicylinder(t)),t = 0..2*Pi,
thickness=3,color=brown):
> display(CYLiNDERia,CYLiNDERib,BICYLINDER1);
156
V případě a = b se křivka mění v protínající se elipsy ležící v rovinách x = y a
x = -y:
> CYLINDER2a:=plot3d(subs(a=2,[a*cos(u),v,a*sin(u)]),u=0..2*Pi,
v=-6..6,grid=[7 5,2],style=wireframe,color=green) :
> CYLINDER2b:=plot3d(subs(b=2,[v,b*cos(u),b*sin(u)]),u=0..2*Pi,
v=-6..6, grid=[75, 2] , style=wireframe,color=gray) :
> BICYLINDER2:=spacecurve(subs (a=2,b=2,bicylinder(t)),t = 0..2*Pi,
thickness=3,color=brown):
> display(CYLINDER2a,CYLINDER2b,BICYLINDER2);
5.4 Příklad.
Vivianiho křivka (viz str. 32) je průnikem sféry a rotační válcové plochy o polovičním poloměru, přičemž jedna z tvořících přímek válcové plochy prochází středem sféry. Napište parametrické vyjádření této křivky.
Řešení.
157
Dále uvažujme parametrizaci sféry (viz sférické souřadnice)
x = r cos u cos v,y = r cos u sin v, z = r sin u,
kde u G
7t 7t
'2' 2
,w G [0,2tt].
Teď už stačí dosadit parametrické rovnice sféry do rovnice válcové plochy:
r2 (cos2 u cos2 v — cos u cos v + cos2 u sin2 v)
0
cos u(cos u — cos v) = 0
Pokud cos u 7^ 0, pak musí platit cos u = cos v => u = ±v. Tedy parametrické rovnice Vivianiho křivky jsou
f(v) = (r cos2 v, r cos v sin v, ±r s
Vzhledem k průběhu funkcí sin a cos lze Vivianiho křivku vyjádřit jednoduššeji:
f(v) = (r cos2 v, r cos v sin v, r sinw) , v G [0, 27r] .
" 7t 7t"
) ,ve -- —
- 2' 21
Maple. Budeme postupovat obdobně jako v případě bicylindrické křivky. Vyjádříme si v parametrických souřadnicích sféru a implicitní rovnicí válcovou plochu tak, aby situace odpovídala předchozímu popisu Vivianiho křivky.
> restart:with(plots):setoptions3d(scaling=constrained):
> sphere: = [x=r*cos(u)*cos(v),y=r*cos (u)*sin(v),z=r*sin(u) ] :
> cylinder:=(x-r/2)"2+y"2=(r/2)"2:
> subs(sphere,cylinder):
> solve(%,u);
7T
7T> v
Nyní už můžeme zapsat parametrické vyjádření Vivianiho křivky a stejně jako v předchozím příkladu 5.3 ji znázornit jako průnik dvou ploch:
> viviani:=v->[r*cos(v)"2,r*sin(v)*cos(v),r*sin(v)]:
> SPHERE:=plot3d([cos(u)*cos(v),cos(u)*sin(v),sin(u)],
u=-Pi/2..Pi/2 , v=0..2*Pi,style=patchnogrid,color=gray) :
> CYLINDER:=plot3d([1/2 + 1/2*cos (v) ,1/2*sin(v) ,u],
u=-5/4..5/4, v=0..2 *Pi,style=wireframe,color=green) :
> VIVIANI:=spacecurve(subs(r=l,viviani(t)),t=0..2*Pi,
thickness=3,color=brown):
> display(SPHERE,CYLINDER,VIVIANI);
158
Projekcí Vivianiho křivky do souřadných rovin dostáváme kružnici, část paraboly a "osmičku" . Následující kód vykreslí projekci Vivianiho křivky do všech souřadných rovin:
> with(plottools,project) :
> PROJÍ:=project(VIVIANI, [[0,0,0], [1,0,0], [0,1,0]]) :
> display(VIVIANI,PROJÍ,axes=frame);
> PROJ2:=project(VIVIANI, [[0,0,0], [1,0,0], [0,0,1]]) :
> display(VIVIANI,PROJ2,axes=frame);
> PROJ3:=project(VIVIANI, [[0,0,0], [0,1,0], [0,0,1]]) :
> display(VIVIANI,PROJ3,axes=frame);
3Křivka má v rovině parametrizaci [siní, siní cosi] a tvarem připomíná číslici 8. Její český název není ustálen, ale v angličtině se často používá označení figure eight.
159
6 Frenetův repér prostorové křivky
6.1 Příklad.
Popište Frenetův repér šroubovice f(t) = (a cos í, a sin t,bť). Řešení.
f'(ť) = (—a siní, a cosi, b) f"(t) = (—acosi, —asiní, 0) /'(ŕ) X f" (t) = a(bsmt,-b cos t, a) (/'(*) x f" (t)) x /'(í) = a(a2 + 62)(- cost, -siní, 0)
Pro tečný vektor t, binormálový vektor b a vektor hlavní normály n tedy platí:
t b n
fit) 1
ll/'(í)ll
r(t) x ni) i
II/'(Í)X/"(Í)|| 7^52
(f(t) x /"(í)) x /'(í)
||(/'(Í)X/"(Í))X/'
(—a siní, a cos í, b)
(b sin í, —b cost, a) (— cos í, — siní, 0)
Tečny křivky tedy svírají s každou rovinou kolmou k ose šroubovice konstantní úhel (tzv. úhel stoupání šroubovice), konstantní úhel s touto rovinou svírají i binormály. Hlavní normály jsou kolmé na osu šroubovice.
Normálová rovina v prostorové křivky je určena hlavní normálou a binormálou, tj. je kolmá na tečnu. Pro body X = {x, y, z) normálové roviny šroubovice tedy platí
v : (X — f(t),t) = —asmt(x — acost) + acosí(y — asiní) + b (z — bt) = 0
—ax sin t + ay cos t + bz — b2t = 0.
Oskulační rovina tu prostorové křivky je určena tečnou a hlavní normálou, tj. je kolmá na binormálu, pro body X = {x, y, z) oskulační roviny šroubovice tedy platí
tu : {X — f(t), b) = bs'mt(x — acost) — bcost(y — asiní) + a(z — bt) = 0
bx sin t — by cos t + az — abt = 0.
160
Rektifikační rovina p prostorové křivky je určena tečnou a binormálou, tj. je kolmá na hlavní normálu, pro body X = (x, y, z) rektifikační roviny šroubovice tedy platí
p : (X — f (t), n) = — cost{[x — acost) — sini(y — a siní) + 0(z — bt) = 0
—x cos t — y sin t + a = 0.
Rektifikační rovina je tečnou rovinou válcové plochy, na které šroubovice leží.
Maple. Nadefinujeme šroubovici, přičemž pro konstanty a, b musí platit určitá omezení, která vymezíme příkazem assume (další podrobnosti na straně 122).
> restart:with(VectorCalculus):
> with (plots) :setoptions3d(scaling=constrained) :
> interface(showassumed=0):assume(a>0,b::real):
> helix:=:
Vypočítáme Frenetův repér (tečný vektor, vektor hlavní normály, binormálový vektor) pomocí procedury TNBFrame z knihovny VectorCalculus. Tato procedura vrací jednotkové vektory v uvedeném pořadí. Zápis pomocí bázových vektorů není moc přehledný, proto si ještě výsledek upravíme pomocí příkazu evalm:
> evalm(TNBFrame(helix,t)[1]);
> evalm(TNBFrame(helix,t) [2]);
> evalm(TNBFrame(helix,t) [3]) :simplify (%);
asin(í) a cos (í) b y/b2 + a2 ' y/b2 + a2 ' "^T^2.
[— cos(í), — sin(í), 0] 6sin(í) 6cos(í) a _Vb2 + a2'' Vb2 + a2 ' ^b2 + a2_
Vektor binormály šroubovice pro t = ir:
> subs(t=Pi,simplify(evalm(TNBFrame (helix,t) [3] ))) :
> simplify(%);
. ' s/b2 + a2 ' s/b2 + a2 _
Znázornění vektorů Frenetova repéru pro konkrétní šroubovici helix (a = 5, b = 1) na intervalu [0,6ir]:
> hel:=subs(a=5,b=l,helix):
> helix:=spacecurve(evalm(hel),t=0..6*Pi,
thickness=3,color=black,numpoints=200):
> tangent_line:=evalm(
evalm(hel)+u*(TNBFrame (hel,t) assuming t::real) [1]) :
161
> principal_normal_line:=evalm(
evalm(hel)+u*(TNBFrame(hel,t) assuming t::real) [2]) :
> binormal_line:=evalm(
evalm(hel)+u*(TNBFrame (hel,t) assuming t::real) [3]) :
> frames:=64:tl:=0:t2:=6*Pi:
> T:=seq(spacecurve(tangent_line,u=-7..7,color=blue),
t=seq(tl+(t2-tl)*i/(frames+1),i=l..frames)):
> PN:=seq (spacecurve(principal_normal_line,u=-3..3, color=green) ,
t=seq(tl+(t2-tl)*i/(frames+1),i=l..frames)):
> B:=seq(spacecurve(binormal_line,u=-2..2,color=red),
t=seq(tl+(t2-tl)*i/(frames+1),i=l..frames)):
t, pn, b představují posloupnosti tečen, hlavních normál a binormál. Proměnná frames určuje, kolik takových přímek se v daném intervalu vykreslí. Čím vyšší číslo, tím pomalejší bude výpočet (v závislosti na výkonu počítače).
> display(T,HELIX);
> display(PN,HELIX);
> display(B,HELIX);
Spuštěním následujícího kódu dostáváme animaci pro tečny, hlavní normály, bi-normály i kompletní Frenetův repér:
> T_ANIM:=display(T,insequence=true):
> display(HELIX,T_ANIM);
> PN_ANIM:=display(PN,insequence=true) :
> display(HELIX,PN_ANIM);
> B_ANIM:=display(B,insequence=true):
> display(HELIX,B_ANIM);
> display(HELIX,T_ANIM,PN_ANIM,B_ANIM);
6.2 Příklad.
Určete směrové vektory tečny, hlavní normály a binormály v libovolném bodě křivky f(t) = (t,t2,t + 1).
162
Řešení.
Použijeme stejný postup jako v příkladu 6.1, jen už nemusíme vektory normovat, zjišťujeme pouze směr.
směr tečny: f'(t) = (1, 2í, 1)
f"{t) = (0,2,0)
směr binormály: /'(í) x f"(t) = (-2,0,2)
směr hlavní normály: (/'(í) x f" (t)) x f (t) = (-4í, 4,-4í)
Směr binormály je konstantní, křivka tudíž leží v rovině. Normálový vektor této roviny má směr /' x /".V obecné rovnici roviny — x + z + c = 0 dopočítáme c tak, že dosadíme do rovnice bod křivky /(í):
-í + (í + 1) + c = 0 c = -1
Křivka /(í) leží v rovině x — z + 1 = 0.
Maple. Pro zjednodušení výpočtů nám v mnohém případě stačí uvažovat pouze směry vektorů Frenetova repéru, které získáme pomocí procedur knihovny
VectorCalculus:
> restart:with(VectorCalculus) :
> f :=:
> evalm(simplify(TangentVector (f,t)));
> evalm(simplify(PrincipalNormal(f,t) ) ) ;
> evalm(simplify(Binormal(f,t)));
[1, 2í, 1]
2t 2 2t
(1 + 2í2) V2 + 4í2 ' (1 + 2í2) V2 + 4í2 ' (1 + 2*2)^2 + 4í2
1 + 2í2 ' ' 1 + 2í2
Jedná se opravdu o rovinnou křivku ležící v rovině x — z + 1 = 0:
> with (plots) :setoptions3d(scaling=constrained) :
> F:=spacecurve(evalm(f),t=-2..2,color=black, thickness=2 ) :
> PLANE:=implicitplot3d(x-z + l = 0,x=-2. .2,y=0 . .4,z=-l. .3,
style=wireframe):
> display(F,PLANE,axes=frame);
163
6.3 Příklad.
Najděte tečnu ke křivce f(t) = (t2,t, e*) rovnoběžnou s rovinou x — 2y — 5 = 0. Řešení.
Směr tečného vektoru křivky je f'(t) = (2t, 1, e*), normálový směr zadané roviny odpovídá n = (1,-2,0). Má-li tečný vektor ležet v zaměření dané roviny, musí platit (/'(í), n) = 2t - 2 = 0, tj. í = 1. V bodě /(l) = (1,1, e) má tedy tečný vektor směr /'(l) = (2,1, e) a tečna má parametrické vyjádření
(1 + 2s, 1 + s, e + es).
Maple. Skalární součin určíme příkazem DotProductz knihovny vectorCalculus Směr tečného vektoru vypočítáme voláním procedury Tangentvector a příkazem solve zjistíme, kdy je tento vektor kolmý na normálový vektor (1, —2,0) zadané roviny:
> restart:with(VectorCalculus):
> f:=:
> solve(DotProduct(Tangentvector(f,t),<1,-2,0>)=0,t);
1
Daný předpoklad je splněn pouze pro t = 1. Tudíž parametrické vyjádření (pro parametr u) hledané tečny má tvar:
> subs(t=l, evalm(f+u*Tangentvector(f,t)));
[1 + 2u, 1 + u, e + ue]
6.4 Příklad.
Dokažte: Jestliže na binormály šroubovice f(t) = (a cos í, a siní, bť) nanášíme úsečku konstantní délky /, dostaneme opět šroubovici.
164
Řešení.
Spočítáme směrový vektor binormály f'(t) x f "(t):
f'(t) = (—a sin t, a cos t, b) f" (t) = (—a cos t, —a siní, 0) /'(í) X f" (t) = a(b sin í,-b cos í, a)
Potom pro hledanou krivku platí
(15) g(í) = (acosí + kbs'mt, asiní — kbcost, bt + ka),
kdek= \\r(t)xnt)\\l-
A B Pro libovolné přípustné A, B a cos w = — , tj. sinw
V A2 + B2 ' V A2 + B2 '
lze psát:
A . B
A sin í + B cos í = + B2 í , sin t H--, cos t
\VA2+B2 V A2 + B2
= \/A2 + B2 (cos w sin t + sin to cos t) = \J A2 + B2 sm(t
A cos t — B sin t = \/A2 + B2 ( = cos t-- : sin t
\VA2+B2 V A2 + B2
= y/A2 + B2(cos w cos t — sin w sin t) = V'A2 + B2 cos(í
Dosadíme A = a a B = —kb do parametrického vyjádření (15) hledané křivky:
g (t) = (Vo^-Kfc2^2 cos(í + w), \/a2 + k2b2 sin(í + w),bt + ka)
Provedeme reparametrizaci t + w = r. Pak bt + ka = br — bw + ka. Výsledná parametrizace hledané krivky
g (t) = (\/ a2 + k2b2 cos r, \/ a2 + k2b2 sin r, br + konst.) je opět šroubovice (viz obrázek na str. 162).
6.5 Příklad.
Dokažte, že všechny normálové roviny křivky f(t) = (a sin2 í, a sin í cos í, a cos t) procházejí počátkem souřadnic.
165
Řešení.
f'(t) = (2a sin í cosi, a(cos2 í — sin2 í), —a sin í)
Normálovou rovinu křivky vypočítáme stejně jako v příkladu 6.1. Pro body normálové roviny X = (x, y, z) platí, že (X — f(ť),f'(ť)) = 0. Po dosazení:
2a siní cosi (a; — a sin2 í) + a(cos2 í — sin2 t)(y — a siní cosi) — a siní (z — a cos í) = 2ax sin í cos í + a(cos2 í — sin2 ť)y — az sin í
+ (—2a2 sin3 í cos í — a2 sin í cos3 í + a2 sin3 í cos í + a2 sin í cos í) = 2aa; siní cos í+a(cos2 í—sin2 ť)y—az siní+a2(— sin2 í—cos2 í+1) siní cosi
= 2ax sin í cos í + a(cos2 í — sin2 ť)y — az sin í = 0
Absolutní člen rovnice je nulový, tudíž každá normálová rovina prochází počátkem souřadnic.
Maple. V následujícím kódu budeme potřebovat příkaz coliect, který uspořádá sčítance prvního vstupního parametru tak, jak předepisuje druhý vstupní parametr. Zadaná křivka a rovnice její normálové roviny (kolmé na tečný směr):
> restart:with(VectorCalculus):
> viviani:=;
> evalm (DotProduct(-viviani,TangentVector(viviani, t))) ;
> normal_plane:=unapply (coliect (%, [x,y,z])=0,t) :
> normal_plane (t);
2a sin(í) cos(t)x + a(2 cos(í)2 — l)y — asin(í)z
— 2a2 sin(í)3 cos(í) — a2 sin(í) cos(í)(2 cos(í)2 — 1) + a2 sin(í) cos(í) = 0
Ověříme, že každá taková rovina prochází bodem [0,0, 0]:
> subs(x=0,y=0,z=0,%);simplify (%);
—2a2 sin(í)3 cos(í) — a2 sin(í) cos(í)(2cos(í)2 — 1) + a2 sin(í) cos(í) = 0
0 = 0
Následující kód, který znázorňuje animaci normálových rovin, je ponechán čtenáři k samostatnému prozkoumání:
166
> with (plots) :setoptions3d(scaling=constrained) :
> a:=2:
> VIVIANI:=spacecurve(evalm(viviani),t = 0..2 *Pi,
color=black,thickness=3,numpoints=200):
> frames:=7 2:tt:=i->i*2*Pi/frames:
> NORMAL_PLANE:=seq(implicitplot3d(normal_plane(tt(i)),x=-l..3,
y=-2..2 , z=-3..3, style=wireframe,color=grey),i = 0..frames) :
> NORMAL_PLANE_ANIM:=display(NORMAL_PLANE, insequence=true) :
> P:=seq(pointplot3d(subs(t=tt(i),viviani),color=red,
symbol=circle,symbolsize=25),i=0..frames):
> P_ANIM:=display(P,insequence=true):
> display(VIVIANI,NORMAL_PLANE_ANIM,P_ANIM,axes=normal);
6.6 Příklad.
Dokažte, že oskulační rovina křivky f(t) = (i,i2,i3) obsahuje přímku, která prochází bodem křivky, je rovnoběžná s rovinou (x, y) a protíná osu z.
Řešení.
Oskulační rovinu tu křivky f(t) můžeme spočítat obdobně jako v příkladu 6 tak, že nejdříve zjistíme směr binormály. Pokud ovšem není součástí příkladu určit směr binormály, je jednodušší výpočet bodů X = (x,y,z) oskulační roviny provést přímo:
[X-f(t),f'(t),f"(t)} = 0 Protože f'(t) = (1, 2í, 3t2) a f"(t) = (0, 2,6í), dostáváme rovnici
x — t y - t2 z - t3
2í 2
3í2 6í
0,
neboli oj : 3t2x - 3ty + z - t3 = 0.
Spočítáme průnik oskulační roviny tu a osy z (x = 0, y = 0):
3í2 ■ 0 - 3í ■ 0 + z - t3
0.
Bodem hledané přímky tedy musí být bod (0,0, í3). Protože přímka obsahuje také příslušný bod křivky, je určena bodem (í, í2, í3). Směrový vektor přímky je tedy (í, í2, í3) — (0, 0, í3) = í(l, í, 0), což je směr patřící do zaměření roviny (x, y).
Maple. Pomocí procedury Binormal vypočítáme binormálový vektor, z něhož určíme rovnici oskulační roviny. Obdobně jsme v předchozím příkladu počítali rovnici normálové roviny.
167
> restart:with(VectorCalculus):
> f:=:
> simplify(evalm(DotProduct(-f,Binormal(f, t)))) :
> oscul_plane:=unapply(collect(%,[x,y,z]),t)=0:
> oscul_plane(t);
6t2x 6ty 2z 2t3 _
1 + 4í2 + 9í4 ~ 1 + 4í2 + 9í4 + 1 + 4í2 + 9í4 ~ 1 + 4í2 + 9í4 ~~
Průsečík s osou z:
> subs(x=0, y=0,oscul_plane(t));solve (%,z);
2z___2t3 _
1 + 4í2 + 9í4 ~ 1 + 4í2 + 9í4 _
Hledaná přímka je tedy určena body f(t) a [0,0, í3]. Ještě ověříme, že je kolmá na směr (0,0,1):
> evalm(DotProduct(f-[0,0,t~3],<0,0,1>));
0
6.7 Příklad.
Dokažte, že křivka f(t) = (e* cos í, e* sin í, 2í) leží na ploše F : x2 +y2 — ez = 0 a že její oskulační rovina v každém bodě splývá s tečnou rovinou plochy.
Řešení.
Dosadíme parametrické rovnice křivky x = e*cosi,y = e*siní,z = 2t do rovnice plochy F:
(e* cos t)2 + (e* siní)2 - e2í = e2í (cos2 í + sin2 í - 1) = 0.
Křivka teda opravdu leží na zadané ploše.
Další část úlohy bude výpočetně nejsnažší řešit tak, že určíme zaměření oskulační roviny, tj. spočítáme f'(t), f"(t), a ověříme, že se jedná o směry kolmé na normálový vektor plochy d F o f:
dF: (2x,2y,-ez), dF o f: (2e* cos í, 2e* siní,-e2í)
/' (í) = (e* (cos í - sin í), e* (sin í + cos í), 2) f"(t) = (eí(-2siní),eí(2cosí),0) (dF,f'(t)) = 2e2í cosí(cosí - siní) + 2 e2í siní (siní + cosi) - 2e2í = 0 (dF,f"(t)) = -4e2í sin í cos í + 4e2ísiní cosi+ 0 = 0
168
Maple. Spočítáme rovnici oskulační roviny zcela analogicky příkladu 6.6:
> restart:with(VectorCalculus):
> f:=:
> simplify(evalm(DotProduct(-f,Binormal(f, t)))) :
> oscul_plane:=unapply(collect(%,[x,y,z]),t)=0:
> oscul_plane(t);
2etcos(t)x 2eÉ sin(í)j/ (e')2z et(2et - 2eH) _ 2 + e(2ť> 2 + e(2t) + 2 + e(2t) H 2 + e(2ť>
Nyní ověříme, že křivka leží na zadané ploše F a spočítáme směr normálového vektoru n plochy podél křivky f(t):
> F:=x"2+y"2-exp(z):
> subs(x=f[1],y=f[2],z=f[3],F);simplify(%);
(eÉ)2cos(í)2 + (e'fsm^)2 - e(2t) 0
> n:=subs(x=f[1],y=f[2],z = f[3], [diff(F,x),diff(F, y) , diff(F, z) ] ) : Teď už jen ověříme, že směr n je kolmý na zaměření oskulační roviny:
> simplify(evalm(DotProduct(n,TangentVector (f,t))));
0
> simplify(evalm(DotProduct(n,PrincipalNormal(f,t))));
0
169
7 Křivost a torze prostorové křivky
7.1 Příklad.
Určete křivost a torzi křivky f(t) = (t, t2, i3)
Řešení.
Pro křivost x a torzi r křivky / platí:
(16) ;
(17)
V našem případě máme:
II/' x f"\
ll/'ll3
/ rll fllľ\
II/' X
f" II2
/'(í) = (1, 2í, 3í2) , /"(í) = (0, 2, 6í), /"'(í) = (0,0,6) ||/'(í)|| = Vl + 4í2 + 9í4, /'x/"=(6í2,-6í,2)
1 2t 3t2 0 2 6í = 12 0 0 6
[/'(i),/"(i),/'"(i)]
Tedy
r(í)
2\/9í4 + 9í2 + 1
3 ' 2
(9í4 + 4í2 + 1)
12 _ 3
4 (9í4 + 9í2 + 1) ~ 9í4 + 9í2 + 1
Protože je křivost, resp. torze nenulová, nemůže na křivce existovat inflexní, resp. planární bod.
Maple. V knihovně vectorCalculus se nachází procedura Torsion pro výpočet torze, ale je definována jakožto kladná hodnota, což je pro naše účely nevýhodné. Ukážeme si, že si lze vytvořit vlastní proceduru přesně dle naší definice. V rámci jednotnosti vytvoříme i proceduru pro výpočet křivosti prostorové křivky kappa. Procedury pro výpočet křivosti kappa a torze tau vytvoříme podle vzorců (16) a (17). V proceduře tau použijeme příkaz de t z knihovny linaig počítající determinant.
> restart:with(linaig):
170
> kappa:=proc(f, t)
local df,ddf,dfdf,dfddf,cross_dfddf; df:=diff(f(t),t); ddf:=diff (f (t),t$2);
dfdf:=simplify(sqrt(dotprod(df,df,orthogonal)));
cross_dfddf—simplify([df[2]*ddf[3]-df[3]*ddf[2] ,
df[3]*ddf[1]-df[1]*ddf[3], df[1]*ddf[2]-df[2]*ddf[1]]);
dfddf:=simplify(
sqrt(dotprod(cross_dfddf,cross_dfddf,orthogonal))); unapply(simplify(dfddf/dfdf"3),t); end:
> tau:=proc(f, t)
local df,ddf,dddf,dfddf,dfdddf,cross_dfddf; df:=diff(f(t),t); ddf:=diff (f (t),t$2); dddf:=diff(f (t),t$3);
dfdddf:=simplify(det([df,ddf,dddf]));
cross_dfddf—simplify([df[2]*ddf[3]-df[3]*ddf[2] ,
df[3]*ddf[1]-df[1]*ddf[3], df[1]*ddf[2]-df[2]*ddf[1]]);
dfddf:=simplify(
sqrt(dotprod(cross_dfddf,cross_dfddf,orthogonal))), unapply(simplify(dfdddf/dfddf"2),t); end:
> f:=t->[t,t"2,t"3] :
> kappal:=kappa (f,t);
2V9Í4 + 9t2 + 1 k1 := t —> -
(1 + 4Í2 +9i4)V2
> taul:=tau (f,t);
rl := í —>
9i4 + 9t2 + l
Zadanou prostorovou křivku a její křivost a torzi si vykreslíme:
> with(plots):
> setoptions(scaling=constrained) :
> setoptions3d(scaling=constrained):
> tubeplot(f(t),t=-l.2..1.2,radius=0.2,axes=boxed):
> plot ( [kappal (t),taul (t)],t=-l.2..1.2,
color=black,thickness=[3,2]);
171
Pokud při vykreslování více objektů do jednoho obrázku použijeme místo složených závorek závorky hranaté, potom můžeme pomocí těchto závorek přesně určit např. barvu jednotlivých objektů nebo tlouštku vykreslované čáry.
7.2 Příklad.
Určete křivost a torzi křivky f(t) = (a cosh t, a sinh t, ať), kde a > 0. Řešení.
f'(ť) = (a sinh t, a cosh t, a) f"(t) = (a cosh t, a sinh í, 0) f"'(ť) = (a sinh í, a cosh í, 0)
ll/'(í)ll fit) x f"(t)
ll/'(í)x/"(í)ll
a V7sinh2 í + cosh2 í + 1 = a V2 cosh2 í = a\/2coshí a2 (— sinh í, cosh í, — 1)
a2 V sinh2 í + cosh2 í + 1 = a2\/2coshí
[f(t),f'(t),f"(t)]
sinh í cosh í 1 a3 cosh i sinh i 0 = a3
sinh í cosh í 0
Tedy podle (16) a (17)
a2\/2coshi 1
a3 2\/2cosh3 í 2acosh2 í
r(í)
2a4 cosh2 í 2a cosh2 í
172
Vidíme, že platí x = r.
Maple. Overíme naše výpočty užitím procedur kappa a tau definovaných v chozím příkladu:
> interface(showassumed=0):assume(a>0):
> f:=t->[a*cosh(t),a*sinh(t),a*t]:
> kappa(f,t);tau(f,t);
7.3 Příklad.
Určete křivost a torzi křivky f(ť) = (r cos í, r sin í, í2), kde r > 0.
f'(ť) = (-r siní, r cosi, 2í) f"(t) = (-r cos í, -r sin t, 2) f" (ť) = (r siní, —r cos í, 0)
||/'(í)|| = Vr2 sin2 í + r2 cos2 í + 4í2 = /r2 + 4í2 /'(í) x f" (t) = r (2(cosí + ísiní),2(siní - í cos í), r)
||f (í) x/"(í)H =^4 +4í2+7-2
1 1
2 acosh(í)2
1 1
2 acosh(í)2
Řešení.
[ľ {t), f" {t), r (t)\
r
.2
— sin í cos í
— cos í — sin í sin í — cos í
2í
2 = 2ír2 0
Tedy podle ( ) a ( )
jV4 + 4í2 + r2
r(/.)
(r2 +4i2)2 2ír2
2í
r2 (4 + 4í2 + r2)
4 + 4í2 + r2
Maple. Využijeme procedur kappa a tau (str. 171):
173
> interface(showassumed=0):assume(r>0):
> f:=t->[r*cos (t),r*sin (t),t "2] :
> kappa(f,t);tau(f,t);
r\/4t2 + 4 + r2 ~* (r2+4í2)(§) 2t
~^ 4í2 + 4 + r2
Křivost je na intervalu kladných čísel klesající, na intervalu záporných čísel rostoucí (její průběh můžeme vykreslit podobně jako v příkladu 7.1), čemuž odpovídá i tvar křivky:
> with(plots):setoptions3d(scaling=constrained):
> tubeplot(subs(r=16,f(t)),t=-10..10,radius=3,axes=frame,
thickness=2,numpoints=100);
7.4 Příklad.
Určete křivost a torzi křivky f(t) = (cos31, sin31, cos 2í). Řešení.
f'(ť) = (—3 cos2 í sin í, 3 sin2 í cos t, —2 sin 2í) = sin 2t ( — — cos í, — sin í, —2
f"(i) = sin2í -siní,-cosí,0 +2cos2í —cosi, - siní,-2 V 2 2 J V 2 2
'"(í) = 2cos2t ( — siní, — cosí,0 ) + sin2í ( — cosi, ——siní,0
+2cos 2í ( - siní, — cosí, 0 — 4sin2í ( — cosi, - siní, —2 V2 '2 ' J \ 2 '2
/3 3 \ f 15 15 \ = 4 cos 2í - sin í, — cos í, 0 + sin 2í — cos í,--sin í, 8
174
9 9 5
||/'(í)|| = |sin2í|^/-cos2í + - sin2í + 4 = -|sin2í|
/'(ŕ) x f"(t) = sin22í (3cos i,-3sini,
16
15
||/'(í) x /"(í)|| = 3sin2 2ía/cos2 i + sin2 í H--= — sin2 2í
[/'(i),/"(i),/'"(i)]
sin 2t
2 cos 2í
i cosi, i siní,
i cosi, i siní,
sin2í (# siní, # cosi, 0)
4cos2í (f siní, f cosi, 0) + sin2í cosi, siní, 8)
sin2í (—|cosí, |siní, —2 2 cos 2í (- f cos í, f sin i, -4cos 2t (f siní, f cosi, 0)
sin2í (-§ cosi, fsiní, -2) 2 cos 2t (-§ cos í, f siní, -2 sin2í cosi,siní, 8)
sin2í (-| cosi, | siní, -2 sin2í (|siní, |cosí,0) 4cos2í (| siní, | cosi, 0)
sin 2í
cosi, 4 siní, —2)
sin2í (J siní, | cosi, Oj sin2í (^cosí, siní, 8)
Tedy podle (16) a (17)
^ sin2 2í
■ siná 2í
ip|sin2í|3 25|sin2í|
- cos í sin i — 1 sin i cos í 0 cos í — sin i 0
t(í)
■ sin° í
; sind 2í
^sin42í 25sin2í
Maple. Pomocí námi nadefinovaných procedur kappa a tau (str. 171) jednoduše určíme křivost a torzi.
> f:=t->[cos (t) "3,sin (t)"3,cos (2*t) ] :
> kappa1:=kappa(f,t);taul:=tau(f,t);
_ 3 ^/sin(í)4cos(í)4
K 25sin(í)2Cos(í)Vsm(í)2cos(í)2
4 1 Tl — t _>__
25 cos(í) sin(í)
175
Výsledný tvar funkce yc\ není ideální. Ovšem hledat vhodnou transformaci je zbytečně komplikované, základní znalost trigonometrických funkcí postačí k ověření, že výsledky jsou identické s předchozím výpočtem. Projekcí křivky do roviny (x,y) dostáváme asteroidu, což bude patrné i po vykreslení křivky. Stejně tak můžeme z obrázku nebo také výpočtem najít singulární body (pro í = k^,k G Z). V těchto bodech není křivost ani torze definována:
> with(plots):
> setoptions(scaling=constrained) :
> setoptions3d(scaling=constrained):
> spacecurve(f(t),t=0..2*Pi,color=black,axes=boxed);
> plot (kappal (t),t = 0..2*Pi,y=-2..2,discont=true) ;
> plot (taul(t),t=0..2*Pi,y=-2..2, discont=true) ;
Pro správné vykreslení průběhu křivosti a torze jsme v příkazu plot uvedli volbu discont=true, která umožňuje zobrazení nespojitých funkcí. Je ovšem třeba omezit hodnoty na ose y, aby nedocházelo ke zkreslení.
7.5 Příklad.
Nalezněte funkci g(t) tak, aby křivka f(t) = (acosí,asiní,g(í)), kde a > 0, byla rovinná.
Řešení.
Na rovinné křivce je každý bod planární, tj. torze křivky jev každém bodě nulová. Vzhledem ke vzorci (17) musí tedy platit [/', /", /'"] = 0.
f'(t) = (—a siní, a cosi, (í)) /"(ŕ) = (-acosi, -asiní, g"(i)) f"'(t) = (asmt,-acost,g"'(t))
o = [f\t),nt),r(t)]
— a siní a cosi g'(ť) -a cos t —a siní g"(t) a sin i —a cosi g"'(t)
a2 (gi"(t)+g'{t))
176
Dostáváme diferenciální rovnici třetího řádu, konkrétně homogenní lineární rovnici s konstantními koeficienty:
Příslušná charakteristická rovnice má tvar A3 + A = A(A — i)(A + i) = 0, tedy fundamentální systém rovnice je dán funkcemi
gi = e° = 1, g2 = e0'* cos(l ■ í) = cos í, g% = e0'* sin(l ■ í) = siní.
Obecným řešením je tedy funkce g(t) = c\ + c2 cosi + C3 siní.
Maple. Torzi křivky snadno spočítáme voláním procedury t au (str. 171):
> f:=t->[a*cos(t),a*sin(t),g(t)]:
> torsion:=tau (f,t) :torsion (t);
g"'(t)+g'(t)=0
Výslednou diferenciální rovnici r = 0 vyřešíme příkazem dsoive, který právě k řešení diferenciálních rovnic slouží:
> dsoive(torsion(t)=0,g (t));
g{ť) = .Cl + .Cžsin(í) + .CScos(í)
177
8 Parametrické vyjádření plochy
8.1 Příklad.
Helikoicľ může být definován jakožto plocha hlavních normál šroubovice
g(u) = (cosu,smu,u), u E (—00,00).
Určete parametrické vyjádření této přímkové plochy a ukažte, že tečná rovina plochy se podél tvořící přímky mění.
Řešení. ,
g (u) = (— sin u, cos u, 1)
g" (u) = (— cosu, — siníi, 0)
g' X (g' X g") = (2 cos u, 2 sin u, 0)
Hlavní normála šroubovice má tedy směrový vektor (cos u, sinu, 0) a pro i G R jsou její parametrické rovnice
n g (u) = g (u) + t ■ (cos u, srnu , 0) = (cos u + t cos u, sin u + t srnu, u)
= ((1 + t) cos u, (1 + t) sin u, u)
Použijeme-li transformaci (1 + t) <-> v, dostáváme obvyklou parametrizaci heli-koidu
f (u, v) = (v cos u, v srnu, u),
kde u, v E (—00,00).
Z předchozího je zřejmé, že parametrickými krivkami je pro uq = konst. přímka a pro vq = konst. šroubovice. Vypočítáme normálový vektor plochy:
fl = —— = (—v srnu, v cos u, 1), fi = 77- = (cosíí, sinw, 0) au av
fl x h = {-smu,cosu,-v), ||/i x /2|| = Vl +
2
n f = — (— siníi, cos u, —v)
Normálový vektor
nf(uo) = 1 1 0(-sin^0,cos^o,-^) V 1 + vz
podél tvořící přímky u = uq mění svůj směr v závislosti na v, tudíž se tečná rovina podél tvořící přímky mění.
4Kinematicky tato plocha vzniká šroubovým pohybem přímky, která kolmo protíná osu šroubového pohybu.
178
Maple. Nakresleme si nejdříve danou plochu (viz také obrázek na str. 162):
> restart:with (plots) :with(linalg) :
> setoptions3d(scaling=constrained,axes=frame):
> helicoid:=(u,v)->[v*cos(u),v*sin(u),u]:
> plot3d(helicoid(u,v),u=-5..5,v=-3..3,
grid=[50,10]);
Volba grid nám určuje počet zobrazovaných parametrických w-křivek a w-křivek.
Pro v = konst. máme šroubovici a pro u = konst. dostáváme přímku (odpovídající právě směru hlavní normály šroubovice:
> HELICOID:=plot3d(helicoid(u,v),u=-5..5,v=-3..3,,style=wireframe,
grid=[50,10],color=grey):
> U_CURVE:=spacecurve(helicoid(u,2),u=-5..5,thickness=3,
numpoints=100,color=blue):
> V_CURVE:=spacecurve(helicoid(2,v),v=-3..3,thickness=3,
color=red):
> display(HELICOID,U_CURVE);
> display(HELICOID,V_CURVE);
Lze si vyzkoušet také příslušné animace:
> for i from -30 to 30 do
U_CUR[i]:=spacecurve(helicoid(u,i/10),u=-5..5,,numpoints=10 0
thickness=3,color=blue):
end do:
> ANIM1:=display([seq(U_CUR[i], i=-30..30)],insequence=true):
> display(HELICOID,ANIM1);
> for i from -50 to 50 do
V_CUR[i]:=spacecurve(helicoid(i/10,v),v=-3..3,thickness=3,
color=red):
end do:
> ANIM2:=display([seq(V_CUR[i], i=-50..50) ],insequence=true) :
> display(HELICOID,ANIM2);
179
Spočítáme ještě jednotkový vektor normály n a určíme rovnici tečné roviny:
> f1:=diff(helicoid(u,v),u):
> f2:=diff(helicoid(u,v),u):
> flf2:=simplify(crossprod(fl,f2)):
> n:=evalm(flf2/simplify(sqrt(dotprod(flf2,flf2,orthogonal))));
sin(ií) cos(íí) v
n'~ rv^TT' v^TT^v^TT.
> simplify(dotprod([x,y,z]-helicoid(u,v),flf2,orthogonal))=0;
— sin(it)x + cos(íí)j/ + uv — vz = 0
8.2 Příklad.
Obecná kuželová plocha je dána pevným bodem a proměnným vektorem. Určete její parametrické vyjádření a dokažte, že tečná rovina se podél tvořící přímky nemění.
Řešení.
Uvažujme pevný bod P a proměnný vektor b(u). Potom parametrické vyjádření přímky se směrovým vektorem b(u) a procházející bodem P je vzhledem k parametru v tvaru
f(u,v) = P + v b(u).
Tím jsme také obdrželi dvouparametrické vyjádření obecné kuželové plochy. Vypočítáme směrový vektor normály této plochy:
fl(u,v) = v ■ b'(u), h(u,v) = b(u), (/i X h)(u,v) = v ■ b'(u) X b(u)
Směrové vektory normál
v ■ b'(uo) x b(uo)
jsou podél tvořící přímky u = uq kolineární v závislosti na v, tudíž se tečná rovina podél tvořící přímky nemění.
Maple. Zvolme si j ako pevný bod [0, 0,0] a proměnný vektor (u cos u, u sinu, 25):
> restart:with (plots) :with(linalg) :
> setoptions3d(scaling=constrained,axes=frame):
> cone:=(u,v)->[v*u*cos(u),v*u*sin(u),v*25]:
> plot3d(cone(u,v),u=0..6*Pi,v=-0.7..1,
grid=[90,20]);
Pro v = konst. dostáváme Archimedovu spirálu a pro u = konst. dostáváme přímku (tzv. tvořící přímku obecné kuželové plochy).
180
Zobrazme si takovou tvořící přímku pro u = 5tt a také její animaci:
> CONE:=plot3d(cone(u,v),u=0..6*Pi,v=-0.7.. 1,
grid=[90, 2 0],color=grey,style=wirefráme]
> V_CURVE:=spacecurve(cone(5*Pi,v) ,
v=-0.7.. 1,thickness=3,color=blue)
> display(CONE,V_CURVE);
> for i from 0 to 40 do
V_CUR[i]:=spacecurve(cone(i/20*3*Pi,v),v=-0.7..1,thickness=3,
color=blue):
end do:
> ANIM:=display([seq(V_CUR[i],i=0..40) ],insequence=true) :
> display(CONE,ANIM);
Další zajímavou animací může být
> animate3d(cone(u*t/100,v),u=0..6*Pi,v=-0.7..1,t=0..100,
frames=25,grid=[90,20],style=wireframe,thickness=2) ;
Spočítáme ještě směr normály dané kuželové plochy
> f1:=diff(cone(u,v),u):f2:=diff(cone(u,v),v):
> simplify(crossprod(f1,f2));
[25u(sin(it) + ucos(u)), 25u(— cos(it) + u sin(it)), —u2v\ Pro pevné u a libovolné v se směr normály nemění.
8.3 Příklad.
Obecná válcová plocha je určena křivkou a pevným směrem. Určete její parametrické vyjádření a ukažte, že tečná rovina se podél tvořící přímky nemění.
Řešení.
Uvažujme pevný směr g a rovnici křivky ~f(u). Potom parametrické vyjádření přímky se směrovým vektorem q a procházející bodem křivky ~f(u) je vzhledem k parametru v tvaru
f(u,v) = 7(ií) + v-q.
Tím jsme také obdrželi dvouparametrické vyjádření obecné válcové plochy. Vypočítáme směrový vektor normály této plochy:
fl(u,v) = 7'(it), f2(u,v) = q, (/i X f2){u,v) = 7'(it) X q
181
Směrové vektory normály
7(^o) x g
podél tvořící přímky u = uq nezávisí na v, tudíž se tečná rovina podél tvořící přímky nemění.
Maple. Zvolme si jako pevnou křivku Archimedovu spirálu (u cos u, u sin u, 0) a pevný vektor (^, — ^, l):
> restart:with (plots) :with(linalg) :
> setoptions3d(scaling=constrained,axes=frame):
> cylinder:=
(u,v)->[u*cos(u)+v/2,u*sin(u)-v/2,v]:
> plot3d(cylinder(u,v),u=0..6*Pi,v=-10..20,
grid=[80,10]);
Pro v = konst. dostáváme Archimedovu spirálu a pro u = konst. dostáváme přímku (tzv. tvořící přímku obecné válcové plochy).
Zobrazme si na dané válcové ploše tvořící přímku pro u = bir:
> CYLINDER:=plot3d(cylinder(u,v),u=0..6*Pi,v=-10..20,grid=[80,10],
style=wireframe,color=grey):
> V_CURVE:=spacecurve(cylinder(5*Pi,v),v=-10..20,thickness=3,
color=blue):
> display(CYLINDER,V_CURVE);
Animace tvořících přímek:
> for i from 0 to 40 do
V_CUR[i]:=spacecurve(cylinder(i/20*3*Pi,v),v=-10..20,
thickness=3,color=blue):
end do:
> ANIM:=display([seq(V_CUR[i],i=0..40) ],insequence=true) :
> display(CYLINDER,ANIM);
Další zajímavou animací může být
> animate3d(cylinder(u*t/2 0 0,v),u=0..6*Pi,v=-10..2 0,t=0..200,
frames=25,grid=[80,10],style=wireframe,thickness=2) ;
Spočítáme ještě směr normály dané válcové plochy
> f1:=diff(cylinder(u,v),u):f2:=diff(cylinder(u,v),v):
> crossprod(f1,f2);
sin(it) + ucos(u), — cos(it) + itsin(it), — i cos(it) + ^usm(u) — i sin(it) — ^ucos(u)
Je zřejmé, že směr normály je pro pevné u zcela nezávislý na parametru v. Tečná rovina se podél tvořící přímky nemění.
182
8.4 Příklad.
a) Určete parametrické vyjádření rotační plochy, která je dána rotací křivky x = g (u) > 0, y = 0, z = h(u),u G / kolem osy z. Kdy rotací dané krivky dostáváme opravdu plochu?
b) Co vznikne rotací polokružnice x = r cos u, y = 0, z = r sin u, u G
2' 2
kolem osy z?
c) Napište rovnici plochy určené rotací křivky A(x, z) = 0 kolem osy ž. Křivka A leží v polorovině (x, ž), x > 0.
Rešení. a)
(g(u), 0, h(u))
X
y
Uvažujme parametr v G (0,27r). Potom rotační plocha je dána dvouparamet-rickým vyjádřením:
(18) f(u,v)= (^g(u) cos v, g(u)sm v, h (u)}
Aby uvedená parametrizace odpovídala parametrizaci plochy, musí platit
fl = (g'(u) ■ cos v, g'(u) ■ sin v, h'(u)) h = ( - g(u) -sinv, g(u) - cos v, 0) fl x Í2 = g{u) ( - h'(u) ■ cos v, -h'(u) ■ sin v, g'{u))
Protože g(u) > 0, je pro existenci rotační plochy postačující podmínka:
(19) ( — h'(u) cos v, —h'(u) sin v, g'{u)) ^ 6
Velikost tohoto vektoru je rovna ^Jh'2{u) + g'2(u) ^ 0, neboť (g(u), h(u)) je parametrizací rovinné křivky. Proto se pro každé přípustné u G / jedná o parametrizaci plochy.
183
b)
Výslednou parametrizací bude parametrizace sféry bez pólů:
x = r cos u cos v y = r cos u sin v z = r sin u
c) Pro implicitní vyjádření rotační plochy stačí provést dosazení a; <—> \J x2 + y2:
y
) x
Rotační plocha má rovnici
F(x, y, z) = A(v/x2 + y2, z) = 0.
Určitě se jedná o implicitní vyjádření plochy, neboť platí:
' d A dx /—z-t d A dx
OF dF \dF\\
dx dx d A x
\/ x2 + y
dx dy dA y
\/ x2 + ;
j dA
' dž
dA
, dx J \dž J
Maple. Zavedeme si proceduru surf rev pro parametrizaci rotační plochy určené křivkou a(u) = (g(u),0,h(u)),g(u) > 0:
> restart:with (plots) :with(linalg) :
> setoptions3d(scaling=constrained):
> surfrev:=proc(alpha,u,v)
[cos(v)*alpha(u) [1] , sin(v)*alpha (u) [1],alpha (u) [3]] end:
> alpha:=u->[g(u),0,h (u)] :
> surfrev(alpha,u,v);
[cos(v)g(u),sm(v)g(u),h(u)]
Existence plochy závisí na vektoru j\ x /2:
> f1:=diff(surfrev(alphal,u,v),u):
> f2:=diff(surfrev(alphal,u,v),v):
> simplify(crossprod(f1,f2));
184
du
h(u) ) cos(v)g(u)
du
h(u) sm{v)g{u), — g{u) g(u
du
Protože g(u) ^ 0, dostáváme podmínku (19). Sféra vzniká rotací půlkružnice:
> circle:=u->[cos(u),0,sin (u) ] :
> sphere:=(u,v)->surfrev(circle,u,v):
> SPHERE:=plot3d(sphere(u,v),u=-Pi/2..Pi/2,v=0..2*Pi,grid=[20, 40] ,
style=wireframe,color=grey):
> U_CURVE:=spacecurve(sphere(u,0),u=-Pi/2..Pi/2,thickness=3,
color=blue):
> display(SPHERE, U_CURVE,axes = frame);
> plot3d(sphere(u,v),u=-Pi/2..Pi/2,v=0..2*Pi,grid=[20,40],
axes=frame);
Animace k vyzkoušení:
> for i from 0 to 40 do
U_CUR[i]:=spacecurve(sphere(u,i*Pi/20),u=-Pi/2..Pi/2,
thickness=3,color=blue):
end do:
> ANIM:=display([seq(U_CUR[i],i=0..40) ],insequence=true) :
> display(SPHERE, ANIM,axes=normal,view=[-2..2,-2..2,-2..2]);
> animate3d(sphere(u,v*t/100),u=-Pi/2..Pi/2,v=0..2*Pi,t=0..100,
frames = 5 0,grid=[20, 40],axes = frame,style=wireframe,thickness=2) ;
8.5 Příklad.
Určete parametrické vyjádření a rovnici anuloidu, který vznikne rotací kružnice
x = a + b cos u, y = 0, z = b sin u,u G [0, 2ir) ,a > b kolem osy z.
185
Řešení.
z
0 l a j X
Podle předchozího příkladu dostáváme parametrické vyjádření
(20) f(u,v) = ((a + frcosíi) cosv, (a + bcosu) sin v, 6 sin it)
Implicitní vyjádření kružnice v rovině (x, z) je dáno rovnicí (x — a)2 + z2 = b2. Tento tvar ještě upravíme:
x2 + z2 + a2 - b2 = 2ax
(x2 + z2 + Q2 _ b2ý = 4a
2^2
Ted už můžeme použít dosazení x <—> yj'x2 + y2:
(a;2 + y2 + z2 + a2 _ b2ý = 4a2 ^2 + y2^
Výsledná rovnice plochy 4. stupně je rovnicí anuloidu.
Maple. Použijeme proceduru surf rev z předchozího příkladu:
> circle:=u->[5+2*cos(u),0,2*sin(u) ] :
> torus:=(u, v)->surfrev(circle,u,v) :
> TORUS:=plot3d(torus(u,v),u=0..2*Pi,v=0..2*Pi,,grid=[20,40],
style=wireframe,color=grey)
> U_CURVE:=spacecurve (torus (u,0),u=0..2*Pi,thickness=3,
color=blue)
> display(TORUS,U_CURVE,axes=frame);
> plot3d(torus(u, v),u=0..2*Pi,v=0..2*Pi,grid=[2 0, 40],axes = frame);
Animace k vyzkoušení:
> for i from 0 to 40 do
U_CUR[i]:=spacecurve(torus(u,i*Pi/20),u=0..2*Pi,thickness=3,
color=blue)
end do:
> anim:=display([seq(U_CUR[i],i=0..40)],insequence=true):
> display(TORUS,ANIM,axes=normal,view=[-8..8,-8..8,-5..5]);
186
> animate3d(torus(u,v*t/100),u=0..2*Pi,v=0..2*Pi,t=0..100,
frames=5 0,grid=[20,40],axes=frame,style=wireframe,thickness=2);
8.6 Příklad.
u
Rotací řetězovky x = a cosh —, y = 0, z = u kolem osy z vzniká plocha nazývaná
a
katenoid (a > 0). Napište parametrické vyjádření této plochy. Řešení.
Z parametrického vyjádření obecné rotační plochy (viz (18)) dostáváme rovnice:
x = a cosh — cos v a
y = a cosh — sin v a
z = u
Tečnou rovinou katenoidu v bodě [a, 0,0] je rovina x = a rovnoběžná s rovinou y z.
Maple. Použijeme proceduru surf rev z příkladu 8.4:
> catenary:=u->[cosh(u),0,u];
> catenoid:=(u, v)->surfrev(catenary,u,v) :
> CATENOID:=plot3d(catenoid(u,v),u=-2..2,v=0..2*Pi, grid=[30, 30] ,
style=wireframe,color=grey):
> U_CURVE:=spacecurve(catenoid(u,0),u=-2..2,thickness=3,
color=blue):
> display(CATENOID,U_CURVE,axes=frame);
> plot3d(catenoid(u,v),u=-2..2,v=0..2*Pi,grid=[30, 30],axes=frame);
Animace k vyzkoušení:
187
> for i from 0 to 40 do
U_CUR[i]:=spacecurve(catenoid(u,i/20*Pi),u=-2..2,thickness=3,
color=blue):
end do:
> ANIM:=display([seq(U_CUR[i],i=0..40) ],insequence=true) :
> display(CATENOID,ANIM,axes=normal);
> animate3d(catenoid(u,v*t/100),u=-2..2,v=0..2*Pi,t=0..100,
frames = 5 0,grid=[30,30],axes = frame,style=wireframe, thickness=2) ;
8.7 Příklad.
Křivka x = a sinu, y = 0,z
\ í u\ ■
a ln tg - + COS u , u
_ V 6 2/
,u e (o,f) u (f,7r)
a > 0 se nazývá traktrix . Její rotací kolem osy z vzniká plocha zvanápseudosféra. Napište její parametrické vyjádření.
Řešení.
5Pro u = — platí x = a, z = 0,
dx dz du' du
Osa z je pro u —> 0+ asymptotou, neboť
lim x = 0, lim z = —co
u^0 +
-0+
Uvažujme interval (0, — j. Funkce x = a sin u je evidentně rostoucí funkce. Pro z(u) platí:
z (u) = a
tg 2 7T
1 1
_ ,, •--sin it
> 0
Funkce z je tedy na (0, — j také rostoucí. Křivka traktrix je symetrická podle osy x:
x =g(u) = cismií
o(7T — u) = asin(7r — u) = asin(ií) = g(it)
z =
/i(it) = a \\a h(n — u) = a
tg
+ cos u
, s1h I TT ~77
ln 1 -^-^
ln
+ c0s(7T — U)
ln
tg
-a |ln ^tg ^ + cos itj = —h(u)
188
Z parametrického vyjádření obecné rotační plochy (viz (18)) dostáváme rovnice:
x
y
a srnu cos v a srnu sin v
', í u\
z = a ln tg - + COS u
_ V B 2
Maple. Použijeme proceduru surf rev z příkladu 8.4:
> traktrix:=u->[sin(u),0,log(tan(u/2))+cos(u)]:
> pseudosphere: = (u,v)->surfrev(traktrix, u, v) :
> PSEUDOSPHERE:=plot3d(pseudosphere(u,v),u=Pi/18..17*Pi/18,
v=0..2 *Pi,style=wireframe,color=grey)
> U_CURVE:=spacecurve(pseudosphere(u,0),u=Pi/18..17*Pi/18,
thickness=3,color=blue)
> display(PSEUDOSPHERE,U_CURVE,axes=frame);
> plot3d(pseudosphere(u,v),u=0.-Pi,v=0..3*Pi/2,axes=frame);
/
Animace k vyzkoušení:
> for i from 0 to 40 do
U_CUR[i] :=spacecurve(pseudosphere (u,i/2 0*Pi),u=Pi/18 . .17*Pi/18,
thickness=3,color=blue):
end do:
> ANIM:=display([seq(U_CUR[i],i=0..40)],insequence=true):
> display(PSEUDOSPHERE,ANIM,axes=normal);
> animate3d(pseudosphere(u,v*t/10 0),u=Pi/18..17*Pi/18,v=0..2*Pi, t=0..100,frames=50,style=wireframe,axes=normal,
tickmarks=[0,0,0]);
189
8.8 Příklad.
Napište rovnici plochy dané parametricky
x = xq + a cos u cos v, y = yo + b cos u sin v, z = zq + c sin u Řešení.
x — xq
y - yo . z - zq
cosíícosw, -= cos it smi;, -= srnu
(x - xq)2 (y - yo)2 (z - zq)'
b2
cos2 u cos2 v + cos2 u sin2 v + sin2 u
2 i 2 , ■ 2 \ , ■ 2 i
= cos íí(cos v + sin v) + sin u = 1 Jedná se o elipsoid se středem [xq, yo, zq], jehož poloosy mají velikosti a, bac.
Maple. Při grafickém znázorňování ploch v Maplu téměř vždy upřednostňujeme parametrické vyjádření před implicitním. Nakreslíme si elipsoid se středem v počátku soustavy souřadné a s velikostmi poloos a = 5, b = A a c = 3.
> restart:with(plots):
> setoptions3d(scaling=constrained,axes=frame):
> plot3d([5*cos(u)*cos(v),4*sin(u)*cos(v),3*sin(v) ] ,
u=0..2*Pi,v=-Pi/2..Pi/2,grid=[40,20]);
Můžeme si zobrazit i další kvadriky:
Jednodílný hyperboloid (a cos u cosh v, b sin u cosh v, c sinh v):
> plot3d([5*cos(u)*cosh(v),4*sin(u)*cosh(v),3*sinh(v)],
u=0..2*Pi,v=-2..2) ,
Dvoudílný hyperboloid (±a cosh u cosh v, b sinh u cosh v, c sinh v):
> plot3d({[3*cosh(u)*cosh(v),4*sinh(u)*cosh(v),5*sinh(v)],
[-3*cosh(u)*cosh(v),4*sinh(u)*cosh(v),5*sinh(v)]},
u=-l..1,v=-l..1) ,
190
Kuželová plocha {av cos u, bv sin u, cv):
> plot3d([5*v*cos(u),4*v*sin(u),3*v],u=0..2*Pi,v=-3..3); Eliptická válcová plocha (acosu, bsinu,v):
> plot3d([5*cos(u),5*sin(u),v],u=0..2*Pi,v=-3..3) ;
191
Hyperbolická válcová plocha (±a cosh u, b sinh u, v):
> plot3d({ [3*cosh(u),4*sinh(u),v], [-3*cosh (u),4*sinh(u),v] },
u=-l..l,v=-3..3);
Parabolická válcová plocha (2au, au2, v):
> plot3d([u,l/2*u"2,v],u=-3..3,v=-2..2);
192
9 První základní forma plochy
9.1 Příklad.
Ukažte, že při vhodné volbě parametru u má první základní forma rotační plochy (18) tvar du2 + g2(u)dv2.
Řešení.
fl= (g (u) cos v, g'(u) sin v, h'(u)), f2= ( - g{u) sin v, g(u) cos v, 0) gil = {hJl)=g'\u)+h'2{u)
Sl2 = (/l,/2) = 0
922 = {h,h)= 92(u)
Pro rotační plochu vždy platí gi2 = 0, můžeme tedy pro první kvadratickou formu plochy psát:
1: gndu2 + 2(7i2dí/xÍ7j + <722di>2 = gndu2 + g22dv2. gn = 1 pro křivku C parametrizovanou obloukem.
Maple. Napíšeme si proceduru g pro výpočet koeficientů první základní formy plochy, která vrací jejich uspořádanou trojici. Prvním vstupním parametrem procedury je samotná plocha, druhým a třetím vstupním parametrem jsou jména parametrů plochy nebo jejich konkrétní hodnoty:
> restart: with(linalg):
> g:=proc(surf,u,v)
local f1,f2,gll,gl2,g22;
fl:=(u,v)->subs(uu=u,diff(surf(uu,v),uu)); f 2 : = (u, v) ->subs (w=v, di f f (surf (u, vv) , vv) ) ; gll:=simplify(dotprod(fl(u,v) , fl(u, v) , orthogonal) ) ; gl2:=simplify(dotprod(fl(u,v),f2(u,v),orthogonal)) ; g2 2:=simplify(dotprod(f2(u,v),f2(u,v),orthogonal)); [gll,gl2,g22]; end:
Vypočítáme koeficienty první základní formy plochy:
> rev:=(u,v)->[g(u)*cos(v),g(u)*sin(v),h(u)]:
> g (rev, u, v) ;
193
(£^))a+(£Ä(u))a»o»^)a
Z výsledku je zřejmé, že první koeficient gn = 1, pokud křivka (g(u), 0, /i(it)) je parametrizována obloukem.
9.2 Příklad.
Určete délku křivky u(t) = í, v(t) = 2í, í G [0, ^] na ploše, která má první základní formu plochy
$1: du2 H— cosvdv2. 4
Pro délku s oblouku křivky na ploše mezi body o parametrech t\, í2 platí
Í2
/ díi
díi dv
( dv
\dt íi '
V našem případě tedy dostáváme
9ii -rr +2^12——+ff22 -Í7 dí •
dí dí
V dí
s = / Vl + cos 2í dí = \/2 / cosídí = \/2
siní
Maple. Sestavíme proceduru curve_iength pro výpočet délky křivky curve na ploše pro interval [íi, í2]. Prvním vstupním parametrem _g je uspořádaný seznam koeficientů první základní formy plochy.
> restart:
> curve_length:=proc(_g,curve,tl,t2)
> local cl,c2,g;
> cl:=diff(curve(t) [1] , t);c2:=diff(curve(t) [2] , t) ;
> g:=subs(u=curve(t)[1],v=curve(t)[2],_g):
> int(sqrt(g[1]*cl"2 + 2*g[2]*cl*c2+g[3]*c2 " 2) ,t=tl. -t2) ;
> end:
Pro zadanou křivku a plochu dostáváme
> g:=[1,0,l/4*cos(v)]:curve:=t->[t,2*t]:
> curve_length(g,curve,0,Pi/2);
6Tento seznam můžeme získat také voláním procedury g nadefinované v předchozím příkladu.
194
9.3 Příklad.
Najděte ve společných bodech odchylku křivek C\ a C2 na ploše
f(u,v) = (coshíiCOS7j,coshíiSÍn?j, u),u £ [—2,2],« G [0,27r],
přičemž C\: u + v = 0, C2 ■ u2 — v = 0. Řešení.
Určíme nejdříve koeficienty první základní formy plochy:
fl = (sinhtt cos i;,sinhit siní;, 1), f2 = (—cosliTisinv, cosIitícosv, 0)
911 = (fl, fl) = sinh2 u + 1 = cosh2 u
Sl2 = (/l,/2)=0
322 = C/2,/2) = COsh2íi
Pro průsečíky křivek musí platit íí2 = —u, neboli u\ = 0, U2 = — 1. Společné body tedy mají souřadnice (0, 0) a (—1,1). Uvažujme následující parametrické vyjádření křivek:
C1:g(t) = (t,-t),g'(t) = (1,-1) C2:h(t) = (t,t2),tí(t) = (l,2t)
Pro odchylku a platí, že
(21) cos a
912 922
11® [f f)m))TMt)(f f)m))T
\912 922/ V \912 922
cos a
1(1 - 2í) cosh2íi|
\/2cosh2 W (1 + 4í2) cosh2
|1 - 2í I y/2 + 8í2
V bodě (0, 0) dostáváme odchylku a = axccos —= = arccos = —.
3 3 v 10
V bodě (—1,1) dostáváme odchylku a = arccos /_ = arccos ^ .
10
195
Maple. Sestavíme proceduru curves_angie pro výpočet odchylky křivek curvel a curve2 na ploše v bodě point. Prvním vstupním parametrem _g je uspořádaný seznam koeficientů první základní formy plochy. Druhým vstupním parametrem point jsou souřadnice bodu na ploše v oblasti parametrů.
> restart:with(linalg):
> curves_angle:=proc(_g,point,curvel,curve2)
> local f 1, f 2, g, tl, t2, dcl, dc2, aa, ab, bb;
> f1:=(u, v)->diff(surf(u,v),u);f2:=(u,v)->diff(surf(u,v),v);
> g:=subs(u=point[1],v=point[2],_g);
> solve({point[1]=curvel(tl)[1],point[2]=curvel(tl) [2 ] }, tl) ;
> assign(%);
> solve({point[1]=curve2(t2)[1],point[2]=curve2(t2)[2] }, t2) ;
> assign(%);
> dcl:=subs(t=tl,diff(curvel (t),t) ) ;
> dc2:=subs(t=t2,diff(curve2(t),t)):
> ab:=evalm(dcl&*[[G[1],G[2]],[G[2],G[3]]]&*transpose([dc2]))[1]:
> aa:=evalm(dcl&*[[G[1],G[2]],[G[2],G[3]]]&*transpose([dcl]))[1]:
> bb:=evalm(dc2&*[[g[1],g[2]], [g[2],g[3]]]&*transpose([dc2])) [1] :
> arccos(evalm(abs(ab)/(sqrt(aa)*sqrt(bb)))) ;
> end:
Pro zadanou plochu a křivky dostáváme
> catenoid:=(u,v)->[cosh(u)*cos(v),cosh(u)*sin(v),u]:
> _g:=g(catenoid,u,v):
> curvel:=t->[t,-t]:curve2:=t->[t,t"2]:
> solve(
{curvel(t) [1]=curve2 (s) [1],curvel(t) [2]=curve2 (s)[2]},{t,s}):
> point1:=curvel(0);point2:=curvel(-1);
pointl := [0, 0] poinťl := [—1,1]
Ve vypočítaných průsečících najdeme odchylku křivek:
> curves_angle(_g,pointl,curvel,curve2);
7T
4
> curves_angle(_g,point2,curvel,curve2);
arccos
Křivky na ploše si zobrazíme:
7Tento seznam můžeme získat voláním procedury g nadefinované v příkladu 9.1.
196
> with (plots) :setoptions3d(scaling=constrained,axes = frame) :
> CATENOID:=plot3d(catenoid(u,v),u=-l.5..1.5,v=0..2*Pi,color=grey,
style=wireframe):
> CURVE1:=spacecurve(subs(u=t,v=-t,catenoid(u,v)),t=-l.5..1.5,
color=blue,thickness=3):
> CURVE2:=spacecurve(subs(u=t,v=t"2,catenoid(u,v)),t=-1.5..1.5,
numpoints=2 00,color=red, thickness=3) :
> display(CATENOID,CURVE1,CURVE2);
9.4 Příklad.
Nalezněte ortogonální trajektorie vrstvy křivek u = cev na ploše
f(u, v) = (u cos V, US\Tí v,u + v).
Řešení.
Určíme nejdříve koeficienty první základní formy plochy:
fl = (cos v, sin v, 1), fi = (—usmv,ucosv, 1)
ffll = (/l, fl) = cos2 v + sin2 v + 1 = 2
gi2 = (fi, fi) = ~u cos v sinw + u sin v cos v + 1 = 1
922 = (hih) = u sin v + u cos V + 1 = U +1
Jako tečný vektor k uvažované vrstvě můžeme vzít např. (u, 1), neboť platí:
VA ÚV 1 1
ce dv = du => — = - = —
du cev u
197
Potom podle (21) musí platit:
(2u + l)du + (uz + u+ l)dv = 0
dv =--g-—-du
uz + u + 1
2u + 1 l2 i
-dtí = — m kí + it + 1 + konst.
u2 + tí + 1
Maple. Nalezení rovnic ortogonální trajektorie budeme realizovat dvěma procedurami. V případě procedury orthogonai_u (g, dcurve) bude hledanou funkcí první parametr plochy a v případě procedury orthogonai_v (g, dcurve) bude hledanou funkcí druhý parametr plochy. Prvním vstupním parametrem g je uspořádaný seznam koeficientů první základní formy plochy. Druhým vstupním parametrem dcurve je tečný vektor křivek v oblasti parametrů.
> restart:with(linalg):
> orthogonal_u:=proc(g,dcurve) local eq;
> eq:=diff(u(v) , v)=subs(u=u(v),-(g[2]*dcurve[1]+g[3]*dcurve [2])
/(g[1]*dcurve[1]+g[2]*dcurve[2])):
> dsolve(eq,u(v));
> end:
> orthogonal_v:=proc(g,dcurve) local eq,dc;
> eq:=diff(v(u) , u)=subs(v=v(u),-(g[1]*dcurve[1]+g[2]*dcurve[2])
/(g[2]*dcurve[1]+g[3]*dcurve[2])):
> dsolve(eq,v(u));
> end:
Pro zadanou plochu tedy dostáváme
> f:=(u,v)->[u*cos(v),u*sin(v),u+v]:
> _g:=g(f,u,v):
> orthogonal_u(_g,[u,l]);
11 / 4e("t') , x 11 / 4e("t') «(«) = " 2 + 2 V "3 + —MV) = " 2 " 2 V "3 + —
> orthogonal_v(_g,[u,l]);
v{u) = - \n(u + 1 + u2) + .Cl
Vykreslíme si několik vypočítaných křivek v(u): 8 Při tvorbě procedury byl využit vztah (12) ze strany 45.
9Tento seznam můžeme získat voláním procedury g nadefinované v příkladu 9.1.
198
> with (plots) :setoptions3d(scaling=constrained,axes = frame) :
> SURFACE:=plot3d([f(u,v)],u=-3..3,v=-5*Pi/12..5*Pi/12,
style=wireframe,color=grey):
> for i from -21 to 21 do
> if i<>0 then upper_limit:=min(5*Pi/12,In(6/abs (i)))
else upper_limit:=5*Pi/12
fi;
> CURVE[i]:=spacecurve(subs(u=i/2*exp(t),v=t,f(u,v)),
t=-5*Pi/12..upper_limit,color=black,thickness=2):
> od:
> for i from -3 to 3 do
> ORTHOGONAL[i]:=spacecurve(subs(u=t,v=-ln(t"2+t+l)+i/3,f(u,v)),
t=max(-3,solve(t"2+t+l-exp(5*Pi/12+i/3)=0,t)[2]) solve(t~2+t+l-exp(5*Pi/12+i/3)=0,t)[1],
color=red,thickness=3) :
od:
> display(SURFACE,seq(CURVE[i],i=-21. . 21) ,
seq(ORTHOGONAL[i],i=-3. . 3) ) ;
9.5 Příklad.
Určete plošný obsah části obecné rotační plochy (18). Na základě vypočítaného vzorce určete plošný obsah rotační válcové plochy, rotační kuželové plochy a anuloidu.
Řešení.
Plošný obsah je určen vzorcem
(22) J J y 011022 - 012 dudv
d
199
Z příkladu 9.1 plyne, že gilg22 - g\2 = g2{u){g'2{u) + h'2(u)). Obsah rotační plochy pro u G [u\, u2], v G [0,2ir]:
P
2tt
g(u) \Jg'2 (u) + h!2 (u) du
«1
dv
= 2ir g(u)^g'2(u) +h'2(u) du
J Ul
Rotační válcová plocha (a je poloměr podstavy, b je výška):
f(u, v) = (a cos v, a sin v, bu),g(u) = a, h(u) = bu, g'(u) = 0, h'(u) = b
P = 2ir / a VO + b2 du = 2ir / ab du = 2nab Jo Jo
Rotační kuželová plocha (a je poloměr podstavy, b je výška):
f (u, v) = (au cos v, au srn v, bu),g(u) = au, h (u) = bu, g'(u) = a, h'(u) = b
rl
P = 2ir / au V a2 + b2 du = 2ira\f'a2 + b2 Jo
-, 1
i\Ja2 + b2
Anuloid (uvažujme parametrické vyjádření (20) ze strany 186):
f (u, v) = ((a + 6 cos íí) cos v, (a + bcosu) sin v, frsiníi) g (u) = a + b cos u, h (u) = bs'mu, g (u) = —bshiu, h! (u) = b cos u
P = 2ir / (a + b cos u) \Jb2 sin2 u + b2 cos2 u du = Jo
= 2irb [au + 6 sin tí]= 27r6(27ra) = 4ir2ab
Maple. Sestavíme proceduru area pro výpočet plošného obsahu na dané množině parametrů [u±, u2] x [v±, v2]. Prvním vstupním parametrem g je uspořádaný seznam koeficientů první základní formy plochy.
> restart:with(linalg):
> area:=proc(g,ul,u2,vl,v2)
int(int(sqrt(G[1]*G[3]-G[2]"2),u=ul..u2),v=vl..v2); simplify(%); end:
°Tento seznam můžeme získat voláním procedury g nadefinované v příkladu 9.1.
200
Plošný obsah rotační plochy:
> interface(showassumed=0):assume(g(u)>0):
> rev: = (u, v) -> [g (u) *cos (v) , g (u) *sin (v) , h (u) ] :
> G_rev:=G(rev,u,v):
> area(G_rev,ul,u2,0,2*Pi);
u2 i---
2 / *u>v H9{u))+ {íh{u))
ul
du 7T
Rotační válcová plocha:
> assume(a>0,b>0):
> cylinder:=(u,v)->[a*cos(v),a*sin(v),b*u]:
> G_cylinder:=G(cylinder, u, v)
> area(G_cylinder,0,1,0,2*Pi);
> torus:=(u,v)->
[ (a+b*cos (u))*cos(v), (a+b*cos(u))*sin(v),b*sin(u)] ;
> G_torus:=G(torus,u,v):
> area(G_torus,0,2*Pi,0,2*Pi);
9.6 Příklad.
Najděte obsah křivočarého čtyřúhelníka na ploše f (u, v) = (v cos u, v sin u, au) ohraničeného křivkami u = 0, u = 1, v = 0, v = a.
Řešení.
Obsah budeme počítat pomocí vzorce
2abn
Rotační kuželová plocha:
> cone:=(u,v)->[a*u*cos(v),a*u*sin(v),b*u]:
> G_cone:=G(cone,u,v):
> area(G_cone,0,1,0,2*Pi);
aVb2 + a2TT
Anuloid:
D
fi = (—v sin u, v cos u. o), J2 = (cos tí, sinu, 0)
201
r r r \ 2-2 .2 2 .2 2,2 gu = (jl, Jl) = v sm u + u cos u + a = v + a
gi2 = (/i 5/2) = — f sin u cos u + u sin u cos u + 0 = 0
#22 = (J2, J2) = cos2 u + sin2 u = 1
2 + a2 dudu
V^2
72 du
du
[u] 0 / y/ a2 + u2 du = — vy/a2 + v2 + a2 ln|u + \/a2 + ■
a ■ a V2 + a2 ln(a + a\Í2) — a In a
\/2 + ln(l + y/2)
Maple. S využitím procedury
ze strany 200 dostáváme:
> interface(showassumed=0):assume(a>0):
> helicoid:=(u,v)->[v*cos(u),v*sin (u),a*u] :
> G_helicoid:=G(helicoid,u,v):
> area(G_helicoid,0,1,0,a);
ia2(v^ + ln(v^+l))
Helikoid s vyznačenou částí, jejíž plošný obsah jsme počítali:
> with(plots):
> setoptions3d(scaling=constrained) :
> PL0T1:=plot3d(subs(a=l,helicoid(u, v)) ,
u=0..l,v=0..2, style=patchnogrid,color=blue):
> PL0T2:=plot3d(subs(a=l,helicoid(u, v)) ,
u=-5..5, v=-3..3, grid=[4 9,13],style=wireframe,color=grey) :
> display(PL0T1,PL0T2,axes=frame);
9.7 Příklad.
Určete obsah horní poloviny části sféry ohraničené Vivianiho křivkou. Řešení.
Podle zadání uvažujeme horní polosféru, tj. u G [0, ^], u G [0, 2ir]:
f(u,v) = (r cos u cos u, r cos u sin v, r sinu) fl = r{— sinucosu, — sin u sinu, cos u), J2 = r(~ cos u sinu, cos u cos u,
202
ť/ll = (/l> f í) = t2 (sin2 u cos" v + sin" u sin" v + cos" u) = r' gi2 = (fi, f2) = í"2(sin tí cos u sin tj cos v — sin tí cos u sin v cos v + 0) = 0 922 = (f2, f2) = t2(cos2 u sin2 ?j + cos2 u cos2 ?j + 0) = r2 cos2 tí
2 -2-2 2 \
tí cos Tj+sm Tism tj + cos u)
Vivianiho křivka je podle příkladu 5.4 ze strany 157 určena vztahem:
cos tí(cos u — cos Tj) = 0 cos u — cos tj = 0
Při výpočtu využijeme toho, že stačí uvažovat jenom poloviční obsah plochy, a to pro tj e [0, ^]. Podle vzorce (22) platí
P = 2 j j V r4 cos2 u dudv = 2r2 j / cos u dudv d ň
= 2r2 ľ Jo
f? / cos u du ľ~ dv = 2r2 1 sin tí 7t áv
Jv Jo v
= 2r2 / (1 — sinTj) dv = r V-
Jo
u
7ľ
2
, v
0 1 7T
Maple. Výpočtem Vivianiho křivky a jejím zobrazením jsme se zabývali již v kapitole o prostorových křivkách. Co se pak týče daného plošného obsahu, využitím procedury area ze strany 200 dostáváme:
> interface(showassumed=0):assume(r>0):
> sphere : = (u, v) -> [r*cos (u) *cos (v) , r*cos (u) *sin (v) , r*sin (u) ] :
> G_sphere:=G(sphere,u,v):
> 2*area(G_sphere,v,Pi/2,0,Pi/2);
-2r2 + r2ir
203
10 Druhá základní forma plochy, asymptotické křivky
10.1 Příklad.
Nalezněte planární body na ploše z = xA + t/3. Řešení.
Označme n = -Jy-jednotkový vektor normály a h-ij = (n, hj) koeficienty
Wh x /2II
druhé základní formy plochy. Potom pro planární body platí:
hu = hu = h22 = 0 Parametrické vyjádření plochy dané explicitně z = x'i + t/3 má tvar
f(u,v) = (u,v,u3 +v3)
h = (1,0,37i2) /1 x/2 = (-37i2,-37;2,l)
/2 = (0,1,3t;2) H/1 x /all = V9«4 + 9v4 + 1
hi = (0,0, 6tí) u r t \ 6u
J v ' hii = (n,hi)--
f 12
(0,0,0) V9u4 + 9tj4 + 1
22 = (0, 0, 6tj) ^12 = («, /12) = 0
; = 1 = (-3tí2,-3t;2,1) ^22 = (n,/22) = , 4 " =
^11=^12=^22 = 0 <=> 7í = 0Atj = 0
Planárním bodem na dané ploše je tedy bod (0, 0)
11
Maple. Sestavíme proceduru h pro výpočet koeficientů druhé základní formy plochy, která vrací jejich uspořádanou trojici. Prvním vstupním parametrem procedury je samotná plocha, druhým a třetím vstupním parametrem jsou jména parametrů plochy nebo jejich konkrétní hodnoty:
> restart:with(linalg):
> h:=proc(surf,u,v)
local f1, f2, n, nn,f11,f12,f22,hli,hl2,h2 2;
11 Je zřejmé, že pro výpočet planárních bodů stačí pouze směrový vektor normály libovolné velikosti.
204
f1: =(u, v) ->subs(uu=u,diff(surf (uu, v) , uu)) ; f 2 : = (u, v) ->subs (w=v, diff (surf (u, vv) , vv) ) ; fll:=(u,v)->subs(uu=u,diff(f1(uu, v),uu)); f 12 : = (u,v) ->subs (w=v, diff (f 1 (u, vv) , vv) ) ; f22:=(u,v)->subs(vv=v,diff(f2(u, vv) , vv) ) ; nn:=crossprod(fl(u,v), f 2(u,v)); n:=nn/sqrt(dotprod(nn,nn,orthogonal)); hli:=simplify(dotprod(n,fll(u,v),orthogonal)); hl2:=simplify(dotprod(n,fl2(u,v) ,orthogonal) ) ; h2 2:=simplify(dotprod(n,f22(u,v),orthogonal)); [hll,hl2,h22];
> end:
Určíme koeficienty druhé základní formy plochy pro zadanou plochu vzhledem k jejímu parametrickému vyjádření:
> surf: = (u, v)->[u,v,u"3+v"3] :
> H (surf, u, v) ;
. Vi + 9u4 + 9v4 ' ' Vi + 9m4 + 9v4 _
Planárním bodem je tedy bod (0, 0):
> with(plots) :
> setoptions3d(scaling=constrained):
> SURF:=plot3d(surf(u,v),u=-l..1,v=-l.2..1.2,
color=grey,style=wireframe):
> PLANAR_POINT:=pointplot3d(surf(0,0),
symbol=cross,symbolsize=10, color=red,thickness=3):
> display(SURF,PLANAR_POINT,axes = frame);
10.2 Příklad.
Nalezněte planární body na ploše dané explicitně z = (p(x,y). Řešení.
Budeme postupovat analogicky předchozímu příkladu:
f(u,v) = (u,v,ip(u,v))
fl = (l,0,(fx), /2 = (0, l,V3y)
fl X Í2 = (- ?XX = <^Xy = <£yy = O
Planárním bodem na dané ploše je tedy bod, pro který platí (pxx = (pxy = (pyy = 0.
Maple. Pomocí procedury h z předchozího příkladu spočítejme koeficienty druhé základní formy plochy pro plochu danou explicitně:
> surf : = (u, v)-> [u, v, g (u, v) ] :
> h (surf, u, v) ;
d2
g(u,v)
dudv
dv
2 g(u,v)
Z výsledku vidíme, že na explicitně zadané ploše planární body existují pouze v případě, že všechny druhé parciální derivace jsou nulové.
10.3 Příklad.
Nalezněte sférické body na ploše z = x2 + y2.
206
Řešení.
Ve sférickém bodě je druhá základní forma plochy nenulovým konstantním násobkem první základní formy plochy. Vypočítejme nyní tyto kvadratické formy pro zadanou plochu, jejíž parametrické vyjádření má tvar
f(u,v) = (u,v,u2 +v2)
/i = (1,0,2íí) h x Í2 = (-2u, -2v, 1)
/2 = (0,1,2*;) ||/ix/2|| = ^Au2+Av2 + l
9ll = l+Au2 /n = (0,0,2) hn= , 2-
a t ín n n\ V Au2 + Av2 + 1
gi2 = Auv /i2 = (0, 0,0)
ff22 = l+4t;2 /22 = (0,0,2)
h12 = 0
(-2tí, -2w, 1) ^22
\/4íí2 + Av2 + 1
\/4íí2 + 4w2 + 1
Ve sférickém bodě musí platit c ■ (712 = c ■ 4itu = /112 = 0, kde 0. Proto
(23) u = 0 V v = 0
A protože musí také platit c ■ gn = h\\ a c ■ #22 = ^22> můžeme psát
hu _ ffn
^22 022
1 +4íi2
1 +4w2
2 2 li = V
li = ázV
Vzhledem k (23) je jediným sférickým bodem na ploše bod (0, 0).
Maple. Při hledání sférických bodů využijeme toho, že kolineárnost první a druhé základní formy plochy je ekvivalentní podmínce
(011,012,022) x (h11,h12,h22) =0.
Koeficienty základních forem plochy vypočítáme pomocí dříve uvedené procedury G(str. 193) a procedury H(str. 204):
12Stejně jako v příkladech 10.1 a 10.2 by stačilo uvažovat normálový vektor libovolné velikosti.
207
> surf : = (u, v) -> [u, v, u" 2 +v" 2 ] :
> c:=crossprod(G(surf,u,v),H(surf,u,v)):
> solve({c[1]=0,c[2]=0,c[3]=0}, {u, v});
{u = 0,v = 0},{u = 0,v = 0} Plochou je rotační paraboloid:
> with(plots):setoptions3d(scaling=constrained)
> SURF:=plot3d(surf(u,v),u=-l..l,v=-l..1,
color=grey, style=wireframe] :
> UMBILIC_POINT:=pointplot3d(surf(0,0),
symbol=cross,symbolsize=50, color=red,thickness=3):
> display(SURF,UMBILIC_POINT,axes=frame);
10.4 Příklad.
Nalezněte asymptotické křivky helikoidu f(u, v) = (v cos u, v sinu, au). Řešení.
fl = (—v sinu, v cos u, a) f2 = (cos u, sin u, 0)
X f2 = (—asinu,acos',
||/l X/2|| = Va2+v2
fll = (—v cos u, — v sinu, 0) f 12 = (— sinu, cosu, 0)
Í22 = (0,0,0) 1
n
Va2 + v''
(—a sinu, a cos u, —v)
Pro body asymptotické křivky platí
a
hu = (n,/n) = 0 hl2 = (n,f12)
$2(u,v) = 2
Va2 + v2
dudv = 0 <=> dudv = 0
\la2 +'
h-22 = (n,f22) = 0
du = 0 V dv = 0
u = c\ v = C2
Asymptotické křivky odpovídají parametrickým křivkám plochy u = c\ (přímka) av = C2 (šroubovice).
Maple. Nalezení diferenciálních rovnic asymptotických křivek budeme realizovat dvěma procedurami. V případě procedury asymptotic_eqi (surf, u, v) bude hledanou funkcí první parametr plochy (tj. druhý vstupní parametr procedury) a
208
v případě procedury asymptotic_eq2 (surf, u,v) bude hledanou funkcí druhý parametr plochy (tj. třetí vstupní parametr procedury). Koeficienty druhé základní formy plochy budeme nahrazovat novými koeficienty označenými jako all, ai2 a a2 2. Jejich výpočet nebude zatížen hledáním jednotkového vektoru normály, bude stačit pouhý směr (tj. j\ x f2).
> restart:with(linalg):
> asymptotic_eql:=proc(surf,u,v)
local f1, f2, f11, f12, f22,all,al2,a22,sol;
f1: =(u, v) ->subs(uu=u,diff(surf (uu, v) , uu)) ;
f 2 : = (u, v) ->subs (w=v, diff (surf (u, vv) , vv) ) ;
fll:=(u,v)->subs(uu=u,diff(f1(uu, v),uu));
fl2 : = (u,v) ->subs (w=v, diff (f 1 (u, vv) , vv) ) ;
f22:=(u,v)->subs(vv=v,diff(f2(u, vv) , vv) ) ;
all—simplify (det( [ f 11 (u, v) , f 1 (u, v) , f 2 (u, v) ] ) ) ;
al2 :=simplify (det ( [fl2 (u, v) , fl (u, v) , f2 (u, v) ] ) ) ;
a22 :=simplify (det ( [f22 (u, v) , fl (u, v) , f2 (u, v) ] ) ) ;
sol:=[solve(all*x"2+2*al2*x+a22=0,x)];
if nops(sol)=2 then
diff(u(v) , v)=subs(u=u(v),simplify (sol[1])), diff(u(v),v)=subs(u=u(v),simplify (sol [2]))
elif nops(sol)=l then
diff (u (v) , v) =subs (u=u (v) , sol [1] )
f i :
V proceduře byla užita konstrukce if-then-elif-f i, která rozlišuje počet řešení kvadratické rovnice
hledající asymptotické směry. Pro dvě řešení dostáváme dvě diferenciální rovnice, pro jedno řešení jedinou diferenciální rovnici. Výstup procedury je uveden v takovém tvaru, že jej lze rovnou použít pro příkaz dsolve řešící diferenciální rovnice (neznámou je funkce u(v)). Pro případ, že je nutné, příp. i výhodnější hledat vyjádření asymptotické křivky jakožto v(u), budeme používat analogickou proceduru:
> asymptotic_eq2:=proc(surf,u,v)
local f1, f2, f11, f12, f22,all,al2,a22,sol;
f1:=(u, v)->subs(uu=u,diff(surf (uu,v),uu));
f2:=(u,v)->subs(vv=v,diff(surf(u,vv),vv));
fll:=(u,v)->subs(uu=u,diff(f1(uu,v),uu));
f12:=(u,v)->subs(vv=v,diff(f1(u, vv),vv));
f22:= (u,v)->subs(vv=v,diff(f2(u, vv) , vv)) ;
all:=simplify(det([f11(u,v),f1(u, v) , f2(u, v) ] ) ) ;
al2 :=simplify (det ( [fl2 (u, v) , fl (u, v) , f2 (u, v) ] ) ) ;
a22 :=simplify (det ( [f22 (u, v) , fl (u, v) , f2 (u, v) ] ) ) ;
end:
209
sol:=[solve(a22*x"2+2*al2*x+all=0,x)];
if nops(sol)=2 then
diff(v(u),u)=subs(v=v(u),simplify (sol[1])), diff(v(u),u)=subs(v=v(u),simplify (sol [2]))
elif nops(sol)=l then
diff(v(u),u)=subs(v=v(u),sol[1])
f i :
end:
Uvažujme helikoid a hledejme jeho asymptotické křivky:
> helicoid:=(u,v)->[v*cos(u),v*sin(u),a*u]:
> al:=asymptotic_eql(helicoid,u,v);
al := —u(v) = 0 av
> a2:=asymptotic_eq2(helicoid, u, v) ;
a2 := —v(u) = 0 au
Tyto jednoduché rovnice nám okamžitě dávají výsledek, jedná se o parametrické křivky (obr. na straně 179). V Maplu se dá výpočet realizovat procedurou dsolve:
> dsolve(al);dsolve(a2);
u(v) = _C*1 v(u) = _C*1
10.5 Příklad.
Nalezněte asymptotické křivky katenoidu (viz příklad 8.6). Řešení.
f(u,v)= (acosh — cos v, acosh — sin v, u V a a
( u u \ / u u ^
ji = sinn — cos v, sinn — sin v, 1 , ji = ( — a cosn — sin v, a cosn — cos v, 0 \ a a / V a a )
210
h x f 2
ll/ix
u u u u^
-a cosh — cos v, — a cosh — sin v, a cosh — sinh — a a a a>
a cosh ■
u
■ cos v, — sin v, sinh ■
tí
a2 cosh2 — (cos2 v + sin2 v + sinh2 —
az cosh — 1 + sinh —
a2 cosh2 — cosh2 —
a cosh2
n = k (u) ^— cos v, — sin v, sinh —^ , kde k (u)
cosh -
1/14 it
11 = — cosh — cos v, cosh — sin v, 0 a V a a it u — sinh — sin v, sinh — cos v, 0 a a ( u u \
a cosh — cos v, cosh — sin v,0) h \ a a
112
122
Pro body asymptotické křivky platí 1
'-(du)2 + a(dv)2
1 / u hu = —k(u) — cosh — a \ a
h12 = k(u) 0 = 0
22
-ak(i
cosh ■
0 ^
dv du
v 1
) ~ a2
dv 1
= ±-
du a
a)
b)
dv _ 1 dii a
dv dii
u + ci (přímka),
u + C2 (přímka).
Asympt. křivky pro a = Maple. Použijeme procedury z předchozího příkladu:
> catenoid:=(u,v)->[a*cosh(u/a)*cos(v),a*cosh(u/a)*sin(v),u]
> al:=asymptotic_eql(catenoid, u, v) ;
211
al := —u(v) = —a, —u(v) = a av av
> a2:=asymptotic_eq2(catenoid,u,v)
d , , ld,, 1
a2 := =--' l~v(u) = -
au a au a
Asymptotické křivky lze snadno ze získaných rovnic vyjádřit, stejně tak i v Maplu např. ze soustavy a2:
> dsolve(a2[1]);dsolve (a2[2]);
v(u) = -- + .C1 a
ii
v(u) = - + _C1 a
Na množině parametrů se tedy jedná o přímky. Asymptotické křivky na katenoidu vykreslíme:
> with (plots) :setoptions3d(scaling=constrained) :
> a:=l:
> CATENOID:=plot3d(catenoid(u,v),u=-2..2,v=0..2*Pi,
style=wireframe,color=grey):
> ASYMP1:=spacecurve(catenoid(u,-l/a*u),u=-2..2,thickness=3,
color=blue):
> ASYMP2:=spacecurve(catenoid(u,l/a*u),u=-2..2,thickness=3,
color=blue):
> display(CATENOID,ASYMP1, ASYMP2) ;
> for i from 0 to 20 do
ASYMP_CURVE1[i] :=spacecurve(catenoid(u,l/a*u+2*Pi*i/20) ,
u=-2..2,color=red);
ASYMP_CURVE2[i] :=spacecurve(catenoid(u,-l/a*u+2*Pi*i/20) ,
u=-2..2,color=red);
end:
> ASYMP_CURVES1:=seq(ASYMP_CURVE1[i],i=0..20):
> ASYMP_CURVES2:=seq(ASYMP_CURVE2[i],i=0..20):
> display(CATENOID,ASYMP_CURVES1,ASYMP_CURVES2);
212
10.6 Příklad.
Nalezněte asymptotické křivky pseudosféry (viz příklad 8.7).
Řešení.
a sin u cos v, a sin u sin v, a
ln (g
COSlí
iíG 0
i'71"
u(-,^
a cos it cos v, a cos u smv, a
a cos u cos v, a cos u smv,
tg f cos2 § 2 — a sin u
1 1
--shiíi
sinu a cos2 it
a cos u cos v, a cos u smv,-
srnu
f2 = (—a srnu smv, a sinu cos v, 0)
Pro výpočet asymptotických křivek není orientace normály podstatná, proto můžeme absolutní hodnotu ve výrazu |cos u\ vynechat:
fi x f2 = (—a2 cos2 cos
v,—a cos u smv, a srnu cos u)
sin2 u cos2 u = a21 cos u I
||/l X /2|| =oVcOS4!i +
n = (— cos it cos v, — cos u sin v, sin it
in
-2a cos u sin2 u — acos3íiN
-asmttcost), — a smít smi;,
. o
sin it
-a sin cos v, — a sin sin v, —a 2cosíí
cos3 u
. 2
sin u
f 12 = (—a cos u sin v, a cos u cos v, 0) f 22 = (~a sin cos v, —asiníisinw, 0)
213
Koeficienty drahé základní formy plochy:
.3
111
a sin u cos u cos v + a sin v cos u sin v — 2a sin v cos v — a-
cos li
smít
cos3 u sin2 tí + cos2 u cos v
-asm ti cos ti — a- = —a cos ti-
sín u sin u sin u
hi2 = a cos2 u cos w sin v — a cos2 it cos v sin w + 0 = 0
/i22 = a sin ti cos u cos2 v + a sin ti cos u sin2 f + 0 = a sin ti cos u Pro body asymptotické křivky platí
— a cos u ., ., &2{u,v) = —:- (dtí) + a sin u cos u (dv) = 0 <=>
/ dľ
sinii \duj sin ii
dli
dv = ±-
sintí
Asymptotické křivky jsou tedy dány rovnicemi13
= ln (tg ^) +cl> v = ~ln (tg 7j) +c2-
Maple. Diferenciální rovnice určující asymptotické křivky získáme pomocí procedur z příkladu 1 i.4. Před výpočtem uvedeme definiční obor pro parametr u pomocí příkazu assume. Stejné označování takto "omezené" proměnné zajistíme pomocí příkazu interface (showassumed=0) :
> interface(showassumed=0):assume(u>0,u pseudosphere:=(u,v)->
[a*sin(u)*cos(v),a*sin(u)*sin(v),a* (log (tan(u/2))+cos (u))] :
> al:=asymptotic_eql(pseudosphere,u,v);
al := -^-u(v) = —siníuív)), -^-u(v) = sin(ií(u)) dv dv
> a2:=asymptotic_eq2(pseudosphere,u,v);
a2 := —v(u) =--——, --v(u) = ,
dlí sm(ií) dlí sm(ií)
Pro hledání explicitního vyjádření bude lepší řešit rovnice a2:
> simplify(dsolve(a2[1]));simplify(dsolve(a2[2] ) ) ;
13Uvedený tvar rovnic získáme použitím vzorce tg a =
1 — cos 2a 1 + cos 2a
214
(24)
v(u) = - ln(l - cos(m)) + ln(sin(íi)) + -Cl v(u) = ln(l — cos(íí)) — ln(sin(íi)) + _C1
Podívejme se, jak vypadají tyto asymptotické křivky na množině parametrů. Uvedený tvar rovnic získáme z (24) použitím vzorce tg § = 1~.cosa :
° Z srno
> with(plots) :setoptions(scaling=constrained) :
> contourplot({v+log(tan(u/2)),v-log(tan(u/2))},
u=Pi/18..17*Pi/18,v=0..2*Pi,contours=2 0);
Asymptotické křivky na pseudosféře v jednom bodě a celá soustava asymptotických křivek:
> setoptions3d(scaling=constrained):
> a:=l:
> PSEUD0SPHERE:=plot3d(pseudosphere(u,v),u=Pi/18..17*Pi/18,
v=0..2*Pi, style=wireframe,color=grey) :
> ASYMP1:=spacecurve(pseudosphere(u,log(tan(u/2))),
u=Pi/18..17*Pi/18, thickness=3, color=blue) :
> ASYMP2:=spacecurve(pseudosphere(u,-log(tan(u/2) ) ) ,
u=Pi/18..17*Pi/18, thickness=3,color=red) :
> display(PSEUDOSPHERE,ASYMP1,ASYMP2);
> for i from 0 to 14 do
ASYMPT0TIC_CURVE1[i] :=spacecurve(pseudosphere (
u,log(tan(u/2))+Pi*i/7),u=Pi/18..17*Pi/18,color=blue): ASYMPT0TIC_CURVE2[i]:=spacecurve(pseudosphere(
u, -log(tan(u/2))+Pi*i/7),u=Pi/18..17*Pi/18,color=red) :
end:
> ASYMP_CURVES1:=seq(ASYMPT0TIC_CURVE1[i] , i=0. .14) :
> ASYMP_CURVES2:=seq(ASYMPT0TIC_CURVE2[i] , i=0. .14) :
> display(ASYMP_CURVES1,ASYMP_CURVES2);
215
10.7 Příklad.
Určete eliptické, hyperbolické a parabolické body na rotační ploše, která vznikne rotací explicitně dané funkce z = g(x), x > 0 kolem osy z.
Řešení.
Parametrické vyjádření křivky: x = u,z = g(u) Rotační plocha:
f(u,v) = (u cos v, usití v, g(u))
f i = (cos v, sin v,g'(u)) fi X f2 = (-ug'(u) cos v, -ug'(u) sin v, u)
f2 = (-usmv,ucosv,0) ||/i X f2\\ = g'2(u) + 1
/ii = (0,0,ff»)
f 12 = {— sin v, cos v, 0)
f 22 = (—u cos v, — usmv, 0)
111
h12 = 0
ug'(u)
l ug (u)
n = — = (—q'(u) cos v, —q'(u) sin v, l) "22 = , „ ==
y/g'2(u) +1 V ^ y/g'2{u) + l
Klasifikaci bodů na ploše provedeme pomocí determinantu
ug'(u)g"(u)
hl2 h,22
h-iih-22 - hi2
g'2(u) + l
eliptické body {h > 0): g'{u)g"(u) > 0
a) g'(u) > 0,g"(u) > 0 rostoucí, konvexní
b) g'(u) < 0,g"(u) < 0 klesající, konkávni Křivka leží mezi tečnou a osou rotace, hyperbolické body Qi < 0): g'(u)g"(u) < 0
a) g'(u) > 0,g"(u) < 0 rostoucí, konkávni
216
b) g'(u) < O, g"(u) > O klesající, konvexní
Tečna leží mezi křivkou a osou rotace.
parabolické body (h = 0):
g'{u)g"{u) = 0
a) g'(u) = 0 tečna je kolmá na osu rotace
b) g" (u) = 0 např. inflexní body funkce g (x)
Je zřejmé, že se nemusí vždy jednat o inflexní body, pokud g" (u) = 0.
Maple. Uvažujme rotační plochu, která vznikne rotací explicitně dané krivky, a určeme koeficienty druhé základní formy plochy pomocí procedury h z příkladu 10.1. Hledejme výraz /in/122 — ^12:
> surfrev:=(u,v)->[u*cos(v),u*sin(v),g(u)]:
> h(surfrev,u,v) [1]*h(surfrev,u,v) [3]- h(surfrev,u,v) [2] "2;
Protože uvažujeme u > 0, dostáváme stejný závěr jako v předchozím výpočtu, tj. klasifikace bodů na eliptické, hyperbolické a parabolické je dána znaménkem výrazu g"'{u)g''(u).
10.8 Příklad.
Ukažte, že všechny body plochy x+y = z3 jsou parabolické. Určete asymptotické křivky na ploše.
Řešení.
Parametrické vyjádření plochy:
f(u, v) = (u3 - v, v, u), h = (3u2,0,1), h = (-1,1,
0)
/ix/2 = (-l,-l,34 ||/i x/2|| = ^2 + 9^
1
(-1,-1, 3u2)
n =
V2 + 9u4
217
/ii = (6u,0,0) fi2 = (0,0,0)
Í22 = (0,0,0)
hu = (n, /n)
-6u
V2 + 9vÄ hu = (n, f 12) = 0 h22 = (n, J22) = 0
Protože výraz h\\h22 — h\2 je pro každý bod na ploše nulový, všechny body na ploše jsou parabolické.
$2(u,v) = ~6U (du)2 + 0 dudv + 0(dw)2 = 0 v 2 + 9íí4
(du)2 = 0 du = 0
Asymptotickými křivkamijsou parametrické krivky u = c, tedy přímky x+y = c3 rovnoběžné s rovinou xy (z = konst.).
Maple. Při hledání parabolických bodů budeme postupovat podobně jako v předchozím příkladu pomocí koeficientů druhé základní formy plochy:
> surf: = (u, v)->[u~3-v,v,u] :
> H(surf,u,v) [1]*H(surf,u,v) [3]-H(surf,u,v) [2]~2;
h\\h22 - h
0
všechny body plochy jsou parabolické
Hledejme asymptotické křivky s použitím procedury asymptotic_eqi z příkladu
10.4:
> al:=asymptotic_eql(surf,u,v);
al := -~r-u(v) = 0, -^-u(v) = 0
av av
Okamžitě vidíme, že se jedná o parametrické íi-křivky:
> dsolve(al[1]);
u(v) = .Cl Plocha společně s asymptotickou křivkou:
> with(plots):
> setoptions3d(scaling=constrained) :
> SURF:=plot3d(surf(u,v),u=-l..l,v=-l..1,
style=wireframe,color=grey):
> ASYMP:=spacecurve(surf(0,v),v=-l..1,
thickness=3,color=blue):
> display(SURF,ASYMP,axes=frame);
-V
14V každém bodě plochy je tedy právě jeden asymptotický směr.
218
11 Hlavní křivosti, Gaussova a střední křivost plochy
11.1 Příklad.
Nalezněte hlavní směry a hlavní křivosti helikoidu/(tt, v) = (v cos u, v sin u, au). Řešení.
Podle příkladu a příkladu platí
912 =0 922 = 1
2 , 2
gn = a +v
h
11
0
^12 =
Va? + v1
h22 =0
Diferenciální rovnice sítě hlavních křivek :
gildu + gľ2dv gudu + g22cg22 - h22
+ \J a2 + v2
x(a2 + v2) a
\/ a2 + v2
\fa2 +v2
\a2+v2)
Střední křivost H = xi + >t2 = 0 Gaussova křivost K = jt\X2
Kio = ±-
a2 + v2 a2 + v2
(a2 + v2)2
Maple. Pro výpočet hlavních křivostí potřebuj eme řešit kvadratickou rovnici ur-
15Ekvivalentní způsob vyjádření hlavních směrů je pomocí rovnice 16 viz důkaz věty ze strany 58
dv2 — dudv du2
911 912 922
hu h\2
219
cenou koeficienty první základní formy plochy g (viz příklad 9.1) a druhé základní formy plochy h (viz příklad 10.1):
> principál:=proc(surf,u,v)
local g, h, gg, hh, eq;
g:=g(surf,u,v):gg:=g[1]*g[3]-g[2]"2: h:=h(surf,u,v) :hh:=h [ 1]*h[3]-h[2]"2 :
eq:=kappa"2-kappa* (g[1]*h[3]-2*g[2]*h[2]+g[3]*h[1])/gg+hh/gg; [solve(eq,kappa)]: end:
Uvažujme helikoid a jeho hlavní křivosti:
> helicoid:=(u,v)->[v*cos(u),v*sin(u),a*u]:
> kappa:=principal(helicoid,u,v);
a a a2 + v2 ' a2 + v2
Gaussova křivost k a střední křivost h helikoidu:
> k:=kappa[1]*kappa[2];h:=kappa[1]+kappa[2];
{a2+v2)2
h:=0
Znázorníme si průběh funkce Gaussovy křivosti helikoidu a také barevným odstínem Gaussovu křivost odlišíme přímo na dané ploše. Gaussova křivost je všude záporná, ale čím více se hodnoty blíží k nule, tím více přechází barevný odstín od modré barvy k barvě červené17:
> with(plots):setoptions3d(axes=frame):
> a:=l:
> plot3d(k,u=0..2*Pi,v=-3..3);
> plot3d(helicoid(u,v),u=0..2*Pi,v=-3..3,grid=[40,10],
color=c0l0r(rgb,k,0,-k));
Obrázek v černobílém provedení představuje přechod od černé k bílé barvě.
220
V našem příkladu se budeme soustředit rovnou na vykreslení hlavních křivek. Pro výpočet těchto křivek je možné sestrojit vlastní procedury, stejně jako tomu bylo u asymptotických křivek (viz příklad 10.4). Hlavní křivky na oblasti parametrů:
> contourplot({u+log(v+sqrt(a"2+v"2)), u-log(v+sqrt(a"2+v"2))}, u=0..2*Pi,v=-3..3, contours=20);
Znázornění hlavních křivek na ploše:
> HELIC0ID:=plot3d(helicoid(u,v),u=-Pi..Pi,v=-3..3,
style=wireframe,color=grey)
> PRINCIPAL1:=spacecurve(helicoid(log(v+sqrt(a"2+v"2)),v),
v=-3..3,thickness=3,color=red)
> PRINCIPAL2:=spacecurve(helicoid(-log(v+sqrt(a"2+v"2)) , v) ,
v=-3..3,thickness=3,color=blue)
> display(HELICOID,PRINCIPAL1,PRINCIPAL2);
> for i from 0 to 20 do
> PRINCIPAL_CURVE1[i]:=spacecurve(
helicoid(log(v+sqrt(a"2+v"2))+Pi*i/10,v),v=-3..3,color=red)
> PRINCIPAL_CURVE2[i]:=spacecurve(
helicoid(-log(v+sqrt(a"2+v"2))+Pi*i/10,v),v=-3..3,color=blue)
> end:
> display(seq(PRINCIPAL_CURVE1[i],i=0..20),
seq(PRINCIPAL_CURVE2[i],i=0..20));
221
11.2 Příklad.
Nechť je dána první a druhá kvadratická forma plochy (gij), (hij). Dokažte, že parametrické křivky jsou hlavními křivkami, právě když platí gi2 = ^12 = 0.
Řešení.
Uvažujme parametrické křivky u = c\ a v = c2, které se dotýkají směrů (0, dv) a (du, 0).
"=>" Hlavní směry jsou kolmé, musí tedy platit
guaih + #12 (Ml + aib2) + g22a2b2 = 0 0 + g12(dudv + 0) + 0 = 0 912 = 0
Hlavní směry jsou sdružené, musí tedy platit
hiiaibi + hi2(a2bi + 12162) + h22a2b2 = 0 0 + /ii2(díid7j + 0)+0 = 0 hi2 =0
=" Diferenciální rovnice sítě hlavních křivek:
gnh22dudv — g22hndudv = 0
gndu + gi2dv gi2du + g22dv hudu + hi2dv hi2du + h22dv
(gilh22 - g22hn)dudv = 0
du = 0 V dv = 0
U = Cl v = c2
guh22 = g22hn => —— = —— = c jedná se o sférický bod
922 911
hu = t%22 = 0 jedná se o planární bod
11.3 Příklad.
Nalezněte hlavní křivosti anuloidu
f(u,v) = ((a + b cos u) cos v, (a + b cos u) sin v, b sin u) a pomocí Gaussovy křivosti určete eliptické, hyperbolické a parabolické body.
222
Řešení.
fl = b(— sin u cos v, — sin u sin v, cos u) Í2 = (a + bcosu)(— sin v, cos v, 0)
Koeficienty první základní formy plochy:
9/9 9 9 9 9\9
<7ll = b (sin íícos v + sin usin v + cos u) = b
912 =b(a + b cos u) (sin u sin v cos v — sin u sin v cos v + 0) = 0
<722 = (a + ^ cos u)2 (sin2 v + cos2 v + 0) = (a + b cos u)2
flxÍ2= b (a + bcosu)(— cos cos v, — cos sin v, — sinu)
II fl x /2H = ^(a + b cos w) V cos2 u cos2 ?j + cos2 u sin2 v + sin2 u = = b(a + bcosu) n = (— cos u cos v, — cos u sin v, — sin u)
f 11 = b(— cos u cos v, — cos u sin v, — sin u) f 12 = b(sin u sin v, — sin u cos v, 0) J22 = (a + b cos it)(— cos v, — sin v, 0)
Koeficienty druhé základní formy plochy:
hn = b(cos2 u cos2 v + cos2 u sin2 v + sin2 u) = b
hv2 = b(— sin u cos u cos v sin v + sin u cos u cos v sin v + 0 = 0
^22 = (a + b cos u) (cos u cos2 v + cos u sin2 v + 0) = (a + b cos u) cos u
ngn - hu ngí2 -ngi2 ~ hi2 Kg22 - h22
nb2 -b 0 _
0 /í(a + bcosu)2 — (a + bcosu) cosu
K2b(a + 6 cos u) + k(—a — 2b cos u) + cos u = 0
a + 26 cos it ± "v/a2 1 cos u
2o(a + o cos íi) o a + ocosíi
223
Z Gaussovy křivosti K = k\k2
cos u
(a > b => (a + b cos u) > 0)
b (a + bcosu)
vidíme, že na anuloidu můžeme rozlišit všechny tři typy bodů (výsledek srovnejme s příkladem 10.7):
a) eliptické body (K > 0) pro u E (o, ^ U ( 2ir
b) hyperbolické body (K < 0) pro u E
c) parabolické body (K = 0) pro u E
7T 3"7T 2' T
7t 3tT
2' T
Maple. Pro výpočet hlavních křivostí budeme potřebovat proceduru principál z příkladu 11.1 a kvůli zjednodušování výsledků potřebujeme explicitně sdělit, že pracujeme v reálných číslech:
> _EnvAllSolutions:=true:
> interface(showassumed=0):assume(a>b,b>0):
> torus:=(u,v)->[(a+b*cos(u))*cos(v),
(a+b*cos(u))*sin(v),b*sin(u)]:
> kappa:=principal(torus,u,v) ,•
b ' a + bcos(u)
Gaussova křivost anuloidu:
> k:=kappa[1]*kappa[2];
b(a + b cos(it))
Parabolické body:
> solve(k,{u,v});
v = v, u = —7T + 7T_ Zl
Znázorněme si průběh funkce Gaussovy křivosti anuloidu a také barevným odstínem klasifikujme eliptické (zelená barva) a hyperbolické (červená barva) body přímo na dané ploše:
> with (plots) :setoptions3d(axes=frame) :
> plot3d(subs(a=5,b=2,k),u=0..2*Pi,v=0..2*Pi);
> plot3d(subs(a=5,b=2,torus(u,v)),u=0..2*Pi,v=0..2*Pi,
color=COLOR(RGB,max(-signum(k),0),max(signum(k),0),0)
grid=[20,30],sealing=constrained);
8Černobílý obrázek znázorňuje eliptické body v bílé barvě a hyperbolické body v černé barvě.
224
11.4 Příklad.
Určete Gaussovu křivost libovolné rotační plochy
f(u,v) = (g(u) cos v, g(u) sin v, h(u)),g(u) > 0.
Řešení.
V příkladu 9.1 jsme spočítali:
fi = (g (u) cos v, g'(u) sin v, h'(u)), f2 = g(u)( - sinv,cosv,0) 911 = g'2{u) + h'2(u), g12 = 0, g22 = g2(u)
fi x Í2 = g{u) (-h'\u) cos v,-h'(u) sin v, g {u))
Wh x /2|| = g{u)^g'2{u)+h'2{u) 1
^Jg'2(u) + h/2(u)
{—h!{u) cos v, —h'(u) sinv, g'(u))
f 11 = (9" (u) cos v, g"(u) sinv, h" (u)) f 12 = g'{u)(-sinv,cosv,ti) f22 = g(u)(- cos v, -sinv, 0)
Koeficienty druhé základní formy plochy:
hl1 = 1 fíi l {9'{u)h"{u) - g"{u)tí{u))
\/g'2{u) + h'2(u)
h±2 = ■■ g {u){h! {u) sinv cos v — h'(u) sinv cos v + O) = 0
\J g'2(u) + h'2(u)
^22 = , ,„ * ,=== g{u)tí{u)
19Protože g\2 = /112 = 0, odpovídají hlavním křivkám parametrické křivky rotační plochy, tzv. rovnoběžky a poledníky (viz příklad 11.2).
225
Pro Gaussovu křivost platí:
K
^11^22 - h\2 911922 - 9l2
g2(u) (g'2(u)+h'2(u))
(25)
K
h'{u){g'{u)h"{u)-g"{u)h'{u)) g{u){g'2{u)+h'2{u)f
Maple. Nejdříve si sestavíme proceduru gaussian počítající Gaussovu křivost. Předpokládejme, že už máme nadefinované procedury g a h pro výpočet koeficientů první základní formy plochy (viz příklad 9.1) a druhé základní formy plochy (viz příklad 10.1). Potom výpočet Gaussovy křivosti lze realizovat následovně:
> gaussian:=proc(surf,u,v)
local g,h;
g:=g(surf,u,v):h:=h(surf,u,v): (h[l]*h[3]-h[2]-2)/(g[l]*g[3]-g[2]-2); simplify(%); end:
Výpočet křivosti už nebude složitý:
> surfrev:=(u,v)->[g(u)*cos(v),g(u)*sin(v),h(u)]:
> gaussian(surfrev,u,v);
du
h(u]
du2
u +
du
9W
du2
h(u)
9KU)
du
9{u) +
du
h(u)
du
h(u]
11.5 Příklad.
Určete Gaussovu křivost pseudosféry (viz příklad 8.7). Řešení.
Parametrické vyjádření pseudosféry:
a sin u cos v, a sin u sin v, a
ln tg
cos u
«G(0,
Gaussovu křivost budeme počítat podle vzorce (25) z přechozího příkladu, pro výpočet jednotlivých derivací můžeme použít mezivýsledky příkladu 10.6:
g(u) = as'mu,g'(u) = acosu, g"(u)
-a srnu
226
h(u) h'(u) h"{u)
ln (tg — I + cos u
a cos u
s\tíu
cos3 u
-a ( 2cosíí H--2—
sin u
a cos u
-a cos u
srn u
-2a cos u sin2 u — a cos3 u srn tí
K
h'{u){g'{u)h"{u)-g"{u)h\u)) g{u){gi\u)+hV{u))2
a cos2 u f a2 cos2 u
smtí
. 2 s1i1 u
a2 cos2 u + a2 cos2 u
4 \ 2
, cos u
. 2 s1i1 u
cos4 u
sin3 tí
aJ sm u
cos4 tí
■ 4
sm u
Pseudosféra má tedy konstantní zápornou Gaussovu křivost
20
Maple. Využijeme proceduru gaussian z předchozího příkladu:
> pseudosphere:=(u,v)->[a*sin(u)*cos(v),
a*sin(u)*sin(v),a*(log(tan(u/2))+cos (u)) ]
> gaussian(pseudosphere,u,v);
Konstantní zápornou Gaussovu křivost mají také dvě zajímavé plochy, Diniho plocha a Kuenova plocha:
> dini:=(u,v)->
[a*sin(u)*cos(v) ,a*sin(u)*sin(v),a*(cos(u)+ln(tan(u/2)))+b*v] :
> kuen:=proc(u,v)
[2*(cos(v)+v*sin(v))*sin(u)/(l+v"2*sin (u) ~2), 2*(sin(v)-v*cos(v))*sin(u)/(l+v"2*sin (u) ~2),
log(tan(u/2))+2*cos(u)/(l+v"2*sin (u) "2) ]
end:
> gaussian(dini,u,v);
1
~ b2 + a2
20Svůj název dostala tato plocha právě proto, že sféra o poloměru r má konstantní kladnou křivost
227
> gaussian(kuen,u,v);
-1
Maple nám umožňuje jednoduše tyto plochy zobrazit:
> with (plots) :setoptions3d(axes=boxed) :
> plot3d(subs(a=l,b=0.2,dini(u,v)),u=0.001..2,v=0..4*Pi,
grid=[15,60],view=[-1.. 1,-1. . 1,-3..3]);
> plot3d(kuen(u,v),u=0.01..Pi-0.01,v=-4..4,sealing=constrained,
grid=[15,60],view=[-1..2,-1. . 2,-2 . . 2]);
Diniho plocha Kuenova plocha
11.6 Příklad.
Najděte střední a Gaussovu křivost rotační válcové plochy. Řešení.
Parametrické vyjádření rotační válcové plochy s podstavou o poloměru r:
f(u,v) = (r cos v, r sin v, u)
Protože pro rotační plochy platí g\2 = hi2 = 0 a hlavními křivkami jsou parametrické křivky (viz příklad 11.4), jsou hlavní křivosti:
k\ = — pro hlavní křivku odpovídající kružnici (rovnoběžka)
r
k2 = 0 pro hlavní křivku odpovídající přímce (poledník)
H = Kl + K2 = —, K = K\K2 = 0
r
Naši úvahu rozšiřme o výpočet pomocí vzorce
j, huh22 - h\2 g\\h22 - 2g12h12 + g22hn
K =-2—, H = -k-,
911922 - 9i2 911922 ~ 9l2
228
přičemž změníme tradiční orientaci normály na směr f2 x /1:
/l = (0,0,1), /2 = (-rsin7>,rcosT>,0) /2 X /l = (r cos v, r sin v, 0), H/2 X j\ || = r, n = (cos v, sin v, 0)
£711 = 1 f 11 = (0, 0, 0)
£712 =0 /12 = (0, 0, 0)
g22=r2 f22 = (-r cos v, -rsint;,0)
Je třeba si uvědomit, že druhá základní forma plochy je závislá na orientaci plochy!
hn = 0
= 0
h22 = — r
Maple. K procedurám pro výpočet hlavních křivostí (viz příklad 11.1) a Gaussovy křivosti (viz příklad 11.4) přidáme proceduru pro výpočet střední křivosti. Opět předpokládáme existenci procedur pro výpočet koeficientů první základní formy plochy (str. 193) a druhé základní formy plochy (str. 204).
> mean:=proc(surf,u,v)
local g,h;
g:=G(surf,u,v):h:=H(surf,u,v):
(g[l]*h[3]-2*g[2]*h[2]+g[3]*h[l])/(g[l]*g[3]-g[2]-2); simplify (%); end:
Křivosti rotační válcové plochy:
> interface(showassumed=0):assume(r>0):
> cylinder:=(u,v)->[r*cos(u),r*sin(u),v];
> principál(cylinder,u,v);
> gaussian(cylinder,u,v);
0
> mean(cylinder,u,v);
_1
r
229
11.7 Příklad.
2 2
x y
Vypočtěte první a druhou základní formu paraboloidu--1--= 2z,p ^ 0,q ^ 0.
p q
Určete jeho Gaussovu křivost. Dále určete hlavní směry a hlavní krivosti v bodě (0,0,0).
Řešení.
Parametrické vyjádření paraboloidu a parciální derivace:
í u2 v2\ „ ( u\ „ ( v
/n=(o,0,^V /i2 = (0,0,0), /22 = To, o, i
fi x/2 =(--,--,1 ),\\f1xf2\\ = J^ + V- + l P Q J V p q
u v -,—,1
/u2 w2 V P 9
— + — + 1
Koeficienty první základní formy plochy:
2 2 u uv v
911 = ^ + -j, 512 = -, #22 = 1 + -Ö
Koeficienty druhé základní formy plochy: 1
h12 = 0, h22
_ hnh22 - h12
1-\ -Ö + -Ö
911922 - 012 / u2 v2 u2v2\ u2v2 í u2 W2N
230
Parabolické body (K = 0) na dané ploše neexistují.
Pro pq > 0 se jedná o eliptický paraboloid (ve všech bodech platí K > 0). Pro pq < 0 se jedná o hyperbolický paraboloid (ve všech bodech platí K < 0).
Hlavní křivosti v bodě (u,v) = (0,0):
0n(O,O) = l, 012(0,0) = 0, g22(0,0) = 1
/in(0,0) = -, h12(0,0) = 0, /i22(0, 0) = -p q
ngii - hn Kg12 - hi2
«012 - hi2 K022 - h22
1
K--
p
o
1 1\ 11
- + - k+---=0
p q 1
Hlavní křivosti v bodě (0, 0) tedy jsou k± = - a k2 = -. V případě p = q se
P g
jedná o sférický bod21.
Hledejme hlavní směry odpovídající křivostem k\, k2. Platí:
(«011 - /in)dtí + (ngi2 - h12)dv = 0 («012 - /ll2)dlí + («022 - h22)dv = 0
Pro ki = - v bodě (0,0) platí
Pro k2 = - v bodě (0,0) platí
q
p p
0-du
du + 0 ■ dv = 0
dw = 0
P
0-du
,p q,
Odpovídajícím směrem je směr (du,0) - (1,0)
du + 0 ■ dv = 0
dw = 0
Odpovídajícím směrem je směr (0,dv) ~ (0,1)
Maple. S pomocí dříve vytvořených procedur pro výpočet koeficientů první základní formy plochy (str. 193), druhé základní formy plochy (str. 204), hlavních křivostí (str. 220) a Gaussovy křivosti (str. 226) dostáváme tyto výsledky:
V takovém případě dostáváme rotační paraboloid.
231
> paraboloid:=(u,v)->[u, v, u"2/(2*p)+v"2/(2*q) ]
> G (paraboloid,u, v) :expand(%);
u2 uv v2
l + — -! + —
pA pq qA
> H(paraboloid,u,v):expand(%)
,0,
2 2 / 2 2
p2 q2 P y p2 q2 0
> gaussian(paraboloid,u,v)
3 3
p q
(p2q2 + u2q2 + v2p2) > principal(paraboloid,0,0);
1 1 _q p_
232
12 Obálka soustavy ploch
12.1 Příklad.
Určete obálku dvouparametrické soustavy sfér o konstantním poloměru r se středy v rovině z = 0.
Řešení.
Každý střed sféry dané soustavy má souřadnice [u, v, 0], kde u, v jsou parametry soustavy. Tudíž můžeme psát rovnici soustavy :
F(x, y, z, u, v) = (x — u)2 + (y — v)2 + z2 — r2 = 0
Potom
dF dF
- = -2(x-u)=0 - = -2(y-V) = 0
x — u = 0 y — v = 0
Po dosazení do rovnice soustavy F dostáváme:
z2 - r2 = 0 z = ±r
Obálkou dané soustavy sfér je dvojice rovnoběžných rovin, jejichž vzdálenost od roviny z = 0 je r.
Maple. V tomto jednoduchém příkladu na obálku soustavy ploch začněme postupně hledat charakteristickou množinu soustavy. K tomu budeme potřebovat parciální derivace podle parametrů soustavy:
> restart:
> env:=(p,q)->(x-p) '2 + (y-q) "2 + z"2-r"2 = 0:
> dl:=diff(env(u, v),u);d2:=diff(env(u,v),v);
dl := -2x + 2u = 0
(26)
v d2 := -2y + 2v = 0
Vyřešíme soustavu zahrnující spolu s rovnicemi (26) ještě rovnici env (u, v)
> solve({env(u,v),dl,d2},{x,y,z});
233
{x = u, y = v, z = —r}, {z = r, x = u, y = v}
Získali jsme dvě parametrické rovnice rovin. Pro jejich implicitní rovnice vyjádříme ze soustavy (26) neznámé u a v a dosadíme do rovnice soustavy ploch:
> assign (solve ({dl, o!2 }, {u, v}) ) ;
> env(u,v);
Abychom i nadále mohli pracovat s proměnnými u a v, zrušíme jejich přiřazení k řešení soustavy rovnic:
u:='u':v:='v':
Následující příkazy nám umožní vykreslit několik sfér ze zadané soustavy:
> with(plots):setoptions3d(scaling=constrained,axes=boxed):
> for i from 1 to 5 do
for j from 1 to 5 do
0
o 0
12.2 Příklad.
Určete obálku dvouparametrické soustavy sfér
F(x, y, z, u, v) = (x — u)2 + (y — v)2 + z2
2
= 0.
234
Řešení.
dF dF
— = -2(x -u)-u = 0 — = -2(y -v)-v = 0
ou ov
u = 2x v = 2y
Po dosazení do rovnice soustavy F dostáváme:
x2 + y2 + z2 - AX ~^Ay = -x2 - y2 + z2 = 0
x2 + y2 - z2 = 0
Charakteristickou množinou je rotační kuželová plocha. V případě obálky soustavy vynecháme vrchol kuželové plochy, ve vrcholu se totiž nejedná o plochu.
Maple. Sestavíme si proceduru, která se bude pokoušet nalézt implicitní vyjádření charakteristické množiny zadané dvouparampetrické soustavy ploch. Vstupním parametrem je soustava eq, která musí být vyjádřena jako funkce dvou proměnných (těmi jsou právě parametry soustavy ploch). Postup výpočtu odpovídá postupu v předchozím příkladu:
> restart:
> env_2par_implicit:=proc(eq)
local u,v,diff_u,diff_v; diff_u:=diff(eq(u,v),u); diff_v:=diff(eq(u,v),v); solve({diff_u, diff_v}, {u,v}); assign(%); eq (u, v) ; end:
Pro naši soustavu sfér platí:
> env:=(u,v)->(x-u) ~2 + (y-v) "2 + z"2-(u"2+v"2)/2 = 0:
> env_2par_implicit(env);
—x2 — y2 + z2 = 0
Nakresleme si několik sfér soustavy (sféry mají střed [u, v, 0] a velikost poloměru
T+v2~
—- ) společně s její charakteristickou množinou. Znázorníme si také několik řezů soustavy sfér pomocí příkazu contourpiot.
Nejdříve určíme parametrizaci sfér v soustavě a také zavedeme proměnné par_min a par_max určující interval pro parametry u, v:
235
> sphere:=[i+sqrt((i~2+j~2)12) *cos(u)*cos(v),
j+sqrt((i"2+j"2)/2)*cos(u)*sin(v),
sqrt((i~2+j~2)/2)*sin(u)],u=-Pi/2..Pi/2,v=0..2*Pi:
> par_min:=-3:par_max:=3:
Nyní vytvoříme PLOT struktury cone pro charakteristickou množinu (rotační kuželovou plochu), sphere pro jednotlivé sféry a contour_o, contour_i, contour_2 pro jednotlivé řezy:
> with (plots) :setoptions3d(scaling=constrained) :
> CONE:=plot3d([v*cos(u),v*sin(u),v],u=0..2*Pi,v=-4..4,color=grey,
style=hidden):
> for i from par_min to par_max do
for j from par_min to par_max do SPHERE[i,j]:=plot3d(sphere,
color=COLOR(RGB, (abs(i)+abs (j))/10, (abs (i)+abs(j))/10,l)) : CONTOUR_0[i,j]:=contourplot(sphere,contours=[0],color=red): C0NT0UR_1[i,j]:=contourplot(sphere,contours=[1],color=blue): C0NT0UR_2[i,j]:=contourplot(sphere,contours=[2],color=green): od: od:
Volba coior=C0L0R (RGB, ...) nám vytvoří různě barevná provedení sfér vzhledem k parametrům soustavy (různé odstíny modré). Nyní uvedené plot struktury vykreslíme:
> display(seq(seq(SPHERE[t,s],t=-l..1),s=-l..1),axes=frame);
> display(CONE,seq(seq(SPHERE[t,s],t=par_min..par_max) ,
s=par_min..par_max));
Řezy soustavou sfér:
> setoptions(scaling=constrained,axes=frame):
> display(seq(seq(CONTOUR_0[t,s],t=par_min..par_max) ,
s=par_min..par_max),view=[ - 6..6,-6..6]);
> display(seq(seq(C0NT0UR_1[t,s],t=par_min..par_max) ,
s=par_min..par_max),view=[-6..6,-6. .6]);
> display(seq(seq(C0NT0UR_2[t,s],t=par_min..par_max) ,
s=par_min..par_max),view=[-6. .6,-6. .6]);
236
12.3 Příklad.
Nalezněte obálku rovin v I. oktantu, které na souřadných osách vytínají čtyřstěn o konstantním objemu.
Řešení.
Obecnou rovnici roviny můžeme psát jako z
ax + by + cz
0.
Tato rovina pro a,b,c ^ 0 vy tíná čtyřstěn s vrcholy [0,0,0], [i,0,0], [0,i,0] a [0,0, i]. Pro objem čtyřstěnu platí
V
i 0 0
a 1
0 i o
0 0 i
6abc
konst.
Pro c
6abV
dostáváme dvouparametrickou soustavu rovin
(27)
F(x, y, z, a, b) = ax + by +
Zderivujeme podle parametrů soustavy
0
OF da
6a2bV
x
6a2bV
a dosadíme do rovnice soustavy
z z a_ + b
6abV
OF ~db
z
6a2bV
6ab2V 6abV
z
2abV ~
6ab2V
y
6ab2V
237
Dostáváme parametrické rovnice obálky
z = 2abV, y
6ab2V
z
2abV 6ab2V
1
6a2bV
z
2abV 6a2bV
3a
1
a rovnici obálky
xyz
= ——2abV = -V. 3a 3b 9
Maple. Sestavíme si proceduru, která se bude pokoušet nalézt parametrické vyjádření charakteristické množiny (parametry charakteristické množiny budou pojmenovány u a v) dané dvouparampetrické soustavy ploch. Vstupním parametrem je soustava eq, která musí být vyjádřena jako funkce dvou proměnných (těmi jsou právě parametry soustavy ploch).
> restart:
> env_2par_parametric:=proc(eq)
local u,v,diff_u,diff_v; diff_u:=diff(eq(u,v),u); diff_v:=diff(eq(u,v),v);
solve({eq(u,v) , diff_u,diff_v}, {x,y,z }); end:
Uvažujme soustavu (27) a vypočítejme její charakteristickou množinu:
> env:= (a,b)->a*x+b*y+z/(a*b*6*V)-1 = 0:
> env_2par_parametric(env);
Znázorníme si jednu rovinu dané soustavy a obálku daných rovin pro v = :
> with (plots) :setoptions3d(scaling=constrained) :
> V:=1/48;
> implicitplot3d(env(2,2),x=0..0.6,y=0..0.6,z=0..0.6,axes=normal,
style=wireframe);
> plot3d([1/(3*u),1/(3*v),2*u*v*V],u=0.5..4,v=0.5..4,axes=normal);
Zobrazení více rovin soustavy můžeme realizovat pomocí následujícího kódu:
AU ÓV
0.6
0.6
238
> for i from 1 to 8 do
for j from 1 to 8 do PLANE[i,j]:=plot3d([l/i-l/i*u-l/i*v,1/j*u,6*i*j*V*v],
u=0..l,v=0..1);
od: od:
> display(seq(seq(PLANE[a,b],a=l..8),b=l..8),axes=frame,
view=[0 . . 0 . 5, 0 . . 0 . 5, 0 . . 0 . 5] ) ;
12.4 Příklad.
2 2 2
x y z
Určete obálku dvouparametrické soustavy elipsoidů + + = l,a,b,c > 0
az bz cz
takových, že a ■ b ■ c = konst. Řešení.
Protože k = abc je konstantní, lze vyjádřit c pomocí parametrů a, b (c = ^) a dosadit vztah do rovnice elipsoidu. Tím získáme rovnici soustavy:
j,2 y2 z2 ^.2 2 n2^2_,2
(28) F(x,y,z,a,b) = —+ ^+ —-! = —+ 1-
b2 k2 a2 b2 k2
a2b2
Zderivujeme podle parametrů soustavy
dF 2 9 2ab2 9 dF 2 9 2a2b 9 _ =__xz _|__zz = 0 _ =__yz -\__z = 0
da a3 k2 db b3 k2
2 _ £^ 2 2 _ £^ 2
X ~ k2 Z V ~ k2 Z
a dosadíme do rovnice soustavy (28)
a2b2 2 a262 2 a2b2 2
^ +^ +^ "1 = 0
a262
z2
k2
z2
3a2 b2
Potom můžeme psát
~k2 3a2b2 ~ 3~ y ~ k2 3a2b2
o a4b2 k2 1 o 2 «2^4 k2 I, a; = -rs--ttttt = -a y = —rz--^ = -b
239
Protože k = abc, pak Rovnice obálky
2 _ a2b2c2 _ 1 2
2 2 2 d b C k
x ■ y ■ z
27 27
Maple. Uvažujme soustavu (28):
> restart:
> env:= (a,b)->x"2/a"2+y"2/b"2 + z"2*a"2*b"2/k"2-1=0:
Pro hledání charakteristické množiny nedávají procedury env_2par_impiicit (viz příklad 12.2) a env_2par_parametric (viz příklad 12.3) uspokojivé výsledky. Proto budeme postupovat po jednotlivých krocích stejně jako v příkladu 12.1:
> dl:=diff(env(a,b),a);d2:=diff(env(a,b) , b) ;
dl
2x2 2z2ab2 a3 k2
- 0
2y2 2z2a2b
Vzhledem k tomu, jak vypadají parciální derivace soustavy, bude výhodné řešit příslušnou soustavu vzhledem k x2, y2, z2 namísto vzhledem kx,y, z:
> solve({env(a,b),dl, d2 }, {x"2,y~2,z"2 });
^2 k2
x
2 i2
a 2 b 2 3 'y 3 '
3a2b2
Uvažujme k = 6 a vykresleme několik elipsoidů. Aby obrázky byly názorné, můžeme pomocí volby view znázornit řezy souřadnými rovinami, např. rovinou z = 0. Poté vykreslíme samotnou charakteristickou množinu:
> with(plots):setoptions3d(axes=frame,style=hidden):
> k:=6:X:=[red,blue]:
> ENVELOPE:=plot3d({ [u/sqrt(3) ,v/sqrt(3),k/(u*v*sqrt(3) ) ] ,
[u/sqrt(3),v/sqrt(3),-k/(u*v*sqrt(3))] [u/sqrt (3) ,-v/sqrt(3) ,k/(u*v*sqrt(3) ) ] [-u/sqrt(3),v/sqrt(3),k/(u*v*sqrt(3))] [u/sqrt (3) ,-v/sqrt(3) ,-k/(u*v*sqrt(3) ) [-u/sqrt(3),v/sqrt(3),-k/(u*v*sqrt(3)) [-u/sqrt(3) ,-v/sqrt (3) ,k/(u*v*sqrt(3) ) [-u/sqrt(3),-v/sqrt(3),-k/(u*v*sqrt(3)
u=l..10,v=l..10)
240
> for i from 1 to 3 do
for j from 1 to 2 do ELLIPSOID [i,j] :=plot3d([i*cos(u)*cos(v),j*cos(u)*sin(v),
k/(i*j)*sin (u) ],u=-Pi/2..Pi/2,v=0..2*Pi,color=X[j]) :
od: od:
> display(seq(seq(ELLIPSOID[a,b],a=l..3),b=l..2),
view=[-3..3,-4..4,-6.-0],scaling=constrained);
> display(ENVELOPE,shading=ZHUE,projection=0.8) ;
12.5 Příklad.
Nalezněte obálku sfér konstantního poloměru r, jejichž středy leží na dané ploše S.2, Řešení.
Máme plochu S danou parametricky f(u,v). Označme w = (x,y,z). Rovnice soustavy sfér je určena skalárním součinem
F(x, y, z, u, v) = (w- f(u, v), w - f(u, v)) - r2 = 0
Její parciální derivace podle parametrů soustavy (tj. parametrů plochy):
OF
— = 2(W-f,-f'J=0^(w-f)±fí OF
— = 2(w - f, -fv) =Q^{w-f)Lfv 22Tato obálka je označována jako tzv. ekvidistantní plocha.
241
Tedy (w — /) || n,23 tj. obálka je dána rovnicí w = f + t ■ n. Dosazením do rovnice soustavy dostáváme rovnici obálky (tn, tn) = r2, neboli t = ±r. Obálku vytvoříme tak, že na normály plochy naneseme úsečky délky r (na obě strany). Odtud plyne název ekvidistantní plocha.
12.6 Příklad.
Určete obálku jednoparametrické soustavy rovin
F(x, y,z,t) = x + t2y + z - 2t = 0.
Řešení.
Obálkou musí být rozvinutelná přímková plocha.
dF
— = 2ty - 2 = 0
ot
t = -,yr0
y
Dosadíme do rovnice soustavy:
1 2
x-\---V z--=0
y y
x - - + z = 0
y
xy + zy = 1
Obálkou dané soustavy rovin je tedy hyperbolická válcová plocha.
Maple. Stejně jako v případě dvouparametrické soustavy ploch (viz příklad a příklad ) sestrojíme procedury pro hledání charakteristické množiny:
> restart:
> env_lpar_implicit:=proc(eq)
local t,diff_t; diff_t:=diff(eq(t),t); solve(diff_t,{t}); assign (%); eq (t); end:
> env_lpar_parametric:=proc(eq)
local t,diff_t; diff_t:=diff(eq(t),t); solve({eq(t),diff_t},{x, y,z}) end:
23 n značí normálový vektor plochy /
242
Daná soustava rovin a její charakteristická množina:
> env:=t->x+t"2*y+z-2*t=0:
> env_lpar_implicit(env);env_lpar_parametric(env) ;
x - - + z = 0
y
í 1 1
< z = —x + t,y = —,x = x>
Vzhledem k parametrickému vyjádření charakteristické množiny je zřejmé, že charakteristickou křivkou je přímka rovnoběžná s rovinou y = 0. Bez dalšího komentáře je uveden kód pro vykreslení soustavy rovin a její obálky:
> with(plots) :setoptions3d (style=patchnogrid,axes = frame) :
> color_env:=t->COLOR (RGB,t/10,t/10,1) :
> ul:=-2:u2:=2 :
> for i in [seq(i,i=2..9),seq(i,i=-9..-2)] do
PLANE[i]:=plot3d([u,v,2*i-u-i"2*v],u=ul..u2,v=-0.04*i..3/i,
color=color_env(abs(i)-1)): CHARACTER[i]:=spacecurve([u,l/i,-u+i],u=ul..u2,thickness=2,
color=black):
od:
> PLANE[-1] :=plot3d([u,l/v,-u+v],u=ul..u2,v=-2 0..-1, color=grey) :
> PLANE[1] :=plot3d([u,l/v,-u+v],u=ul..u2,v=l..2 5, color=grey) :
> display(seq(CHARACTER[t],t=2..9),seq(CHARACTER[t],t=-9..-2),
seq(PLANE[t],t=l. .9) ,seq(PLANE[t],t=-9. . -1)) ;
243
12.7 Příklad.
2 2
x y
Nad tětivami elipsy —- H—- = 1 v rovině z = 0 rovnoběžnými s osou y jako
bz
průměrem sestrojujeme sféry. Najděte jejich obálku. Řešení.
S= [í, 0,0] _ podmínka pro poloměr:
t2 r2
a2 ^ b2
,2 2
-t = r
Soustava sfér:
F(x, y, z, t) = (x- t)2 + y2 + z2 - r2 = 0
b2
F(x, y, z, t) = (x - t)2 +y2 + z2 - b2 + -^t2 =0 t E (-a, a)
Parciální derivace podle parametru t:
dF ~dt
-2{x - ť) + 2^t = 0
-X + t+ -z-t = 0
-X + t ( 1 + --j ) = 0
a2 + 62'
Dosadíme do rovnice soustavy:
^2 I 1
a2 + 62
+ y2 +z2 -b2 +
b2 a4x2
a2 (a2 + b2)2
a2 + b2 b2
+ y2 + z2 +
a2b2x2 (a2 + b2)2
(a2 + b2)2 (a2+b2f
xÁ + y2 + z2 = b
2 2
y , z
a2 + b2 b2 b2
Obálkou soustavy je tedy rotační elipsoid.
244
Maple. Obálku soustavy sfér najdeme pomocí procedury env_ipar_impiicit z předchozího příkladu:
> env:=t->(x-t) "2+y"2 + z"2-b"2+b"2/a"2*t "2 = 0:
> env_lpar_implicit(env) ;
2 \ 2 j, 2 2 2
xa \ i 2 , 2 ,2 , o a X
+ j/ + z — b + ■ -n
a2 + b2) a (a2+ b2)2
Výsledný tvar uspořádáme podle mocnin x2, y2 a z2:
> collect (%, [x"2,y"2,z'2]);
2 \ 2 ,2 2 \
a \ i b a 12,2,2,2 n
a2 + b2 ) (a2 + 62)2
Zjednodušení koeficientu u členu x2 provedeme pomocí následujícího příkazu:24 > subs(op([1,1,1],%)=simplify(op([1,1,1],%)),%);
7,2 2
b x a2 + b2
+ y2 + z2 - b2 = 0
Po vydělení rovnice výrazem b2 dostáváme typický zápis rovnice elipsoidu. Příkaz expand nám zachová vyjádření pomocí jednotlivých zlomků, tj. nepřevede levou stranu rovnice na společného jmenovatele:
> expand(%/b~2) ;
y2 z2
+ tt + tt — 1 = 0
a2 + b2 b2 b2
Několik sfér soustavy spolu s charakteristickými křivkami a obálkou (obalovou plochu znázorníme jen částečně) a řez rovinou z = 0:
> a:=30:b:=20:
> with (plots) :setoptions3d(scaling=constrained) :
> color_env:=t->COLOR(RGB, (t + 4)/8, (t + 4)/8,l) :
> sphere: = [a*i/3+b/a*sqrt(a"2-(a*i/3) "2)*cos(u)*cos(v) ,
b/a*sqrt (a"2 - (a*i/3) "2)*cos(u)*sin (v), b/a*sqrt(a"2-(a*i/3)"2)*sin(u)],
u=-Pi/2..Pi/2,v=0..2*Pi:
> for i from -3 to 3 do
SPHERE[i]:=plot3d(sphere,style=hidden,color=color_env(i)): CONTOUR[i] :=contourplot (sphere,contours=[0],numpoints = 900) : CHARACTER[i] :=spacecurve ( [a*i/3,b/a*sqrt(a~2-(a*i/3) "2)*cos(u),
b/a*sqrt(a"2-(a*i/3)"2)*sin(u),
24Příkaz op nám umožní přistupovat k jednotlivým částem výrazu. Další popis najdeme v nápovědě Maplu.
245
u=0..2*Pi],color=yellow,thickness=3) :
od:
> ENVEL0PE_1:=
plot3d([sqrt(a"2+b"2)*cos(u)*cos(v),b*sin(u)*cos(v),b*sin(v)], u=Pi/6..7 *Pi/6, v=-Pi/2..Pi/2,style=patchnogrid,color=navy) :
> ENVEL0PE_2:=
plot3d([sqrt(a"2+b"2)*cos(u)*cos(v),b*sin(u)*cos(v),b*sin(v)], u=Pi/6..7*Pi/6,v=-Pi/2..Pi/2,style=wireframe, color=navy) :
> CONTOUR[4]:=plot([a*cos(t),b*sin(t),t=0..2*Pi],thickness=3,
color=black):
> display(seq(SPHERE[t],t=-3..3),ENVEL0PE_1);
> display(seq(CHARACTER[t],t=-3..3),ENVEL0PE_2);
> display(seq (CONTOUR[t],t=-3..4),axes = frame,scaling=constrained); 20
10
v 0
-10
-20
-30 -20 -10 0 10 20 30 u
12.8 Příklad.
Najděte obálku jednoparametrické soustavy ploch
[(x - t)2 + {y- r)2 + z2 - r2] [{x - t)2 + {y + r)2 + z2 - r2] = 0, ,kde r = konst.
246
Řešení.
Označme levou stranu zadané rovnice jako F(x, y,z,ť). Potom
dF
— = -2{x - ť) [{x - tf + {y + rf + z2 - r2]
OF ~dt
- 2{x - ť) [(x - ť)2 + {y- r)2 + z2 - r2)] = 0 -A(x - t) [(x - ť)2 + y2 + z2] = 0
OF
Rovnost -7^- = 0 platí ve dvou případech:
I. x-t = 0
Potom pro F(x, y, z, t) platí:
[(y - r)2 + z2 - r2] [(y + r)2 + z2 - r2] =0
Obálku tvoří dvě válcové plochy, jejichž osy jsou rovnoběžné s osou x.
II. (x - ť)2 + y2 + z2 = 0
Rovnice x = t, y = 0, z = 0 vyhovují rovnici soustavy a jedná se o osu x. Tudíž toto řešení nám nedává obálku25.
Maple. Uvažujme danou soustavu ploch:
> restart:
> env:=t->((x-t)~2+(y-r)"2+z"2-r"2)*((x-t)~2+(y+r)"2+z"2-r~2)=0:
> dt:=diff(env(t),t):factor(%);
-4(x - t)(x2 - 2xt + z2 + t2 + y2) = 0
Charakteristická množina je obálkou pouze v případě, že x — t = 0 (nulovost druhého činitele dává osu x):
Charakteristická množina není obalovou plochu také např. pro soustavy:
(x - t)2 + y2 - t = 0
(x-t)2 +y2 + z2 -ť = 0
247
> with (plots) :setoptions3d(scaling=constrained,axes=box) :
> r:=l:
> sphere:=[abs(.8*i)+r*cos(u)*cos(v),signum(i)*r+r*cos(u)*sin(v),
r*sin(u) ],u=-Pi/2. .Pi/2,v=0. .2*Pi :
> for i in [seq(i,i=-6..-1),seq(i,i=l..6)] do
SPHERE[i]:=plot3d(sphere,grid=[10,30]) od:
> ENVELOPE1:=plot3d([v,-r+cos(u),sin(u)],
u=-3*Pi/4..2*Pi/3,v=-0.5..6,style=patchnogrid,color=grey):
> ENVELOPE2:=plot3d([v,r+cos (u) ,sin (u) ],
u=Pi/3..7 *Pi/4 , v=-0.5..6, style=patchnogrid,color=grey) :
> display(seq(SPHERE[t],t=-6..-1),seq(SPHERE[t] , t = l..6) ,
ENVELOPEl,ENVELOPE2);
Je zřejmé, že charakteristikami budou kružnice.
12.9 Příklad.
Nalezněte obálku sfér konstantního poloměru r, jejichž středy leží na dané prostorové křivce C. Jedná se o tzv. rourovou plochu určenou křivkou C a poloměrem r.
Řešení.
Máme křivku C danou parametrizací obloukem f(s). Označme w = (x,y,z). Rovnice soustavy sfér je určena skalárním součinem
F(x, y, z, s) = (w - f(s),w - /(s)) - r2 = 0.
Její parciální derivace podle parametru soustavy (tj. parametru křivky):
dF
— = -2(w - f(s), ei) = 0 => w = f(s) + Ae2 + jue3 Dosadíme do rovnice soustavy sfér:
(Ae2 + jue3, Ae2 + jue3) = r2 A2(e2,e2) +2Aju(e2,e3) +^2(e3,e3) = r2
\2 . 2 2
A + jU = r
248
V normálové rovině křivky C se tedy jedná o kružnici se středem v bodě křivky a poloměrem r, obálkou je tedy trubovitá plocha určená křivkou C a poloměrem r.
12.10 Příklad.
Dokažte, že obálkou oskulačních rovin prostorové křivky bez planárních bodů je její plocha tečen.
Řešení.
Máme křivku C danou parametrizací obloukem /(s). Označme w = (x,y,z). Rovnice soustavy oskulačních rovin je určena skalárním součinem
F(x, y, z, s) = (w - /(s), e3) = 0 de3
Z Frenetovych vzorcu plyne, ze-= — re2, t ý 0> proto muzeme psat
as
dF
— = (w - /(s), -re2) = 0
Musí proto platit, žew — /(s) je kolmé na e2, e^, neboli (w — /(s)) || e\ a obálkou je plocha tečen dané křivky.
12.11 Příklad.
Určete obálku a hranu vratu jednoparametrické soustavy sfér
F(x, y, z, t) = (x - t)2 + y2 + z2 - 1 = 0.
Řešení.
F(x, y, z, t) = (x - t)2 + y2 + z2 - 1 = 0 dF
- = -2(x-t) = 0
Řešením uvedených rovnic je válcová plocha y2 + z2 = 1.
d2F
Hrana vratu neexistuje, neboť -——z- = —2^0.
otz
12.12 Příklad.
Určete obálku a hranu vratu jednoparametrické soustavy rovin
F(x, y, z,t) = x sin t — y cos í + z — bt = 0.
249
Řešení.
Nejdříve budeme hledat parametrické vyjádření hrany vratu:
F(x, y, z,ť) = x siní — y cos í + z — bt = 0 dF
—— = x cos í + y sin í — o = 0
dt y
d2F
—r- = — x sin í + y cos í = 0 otz
Položme z = bt, potom první a třetí rovnice jsou ekvivalentní a společně s druhou rovnicí dávají soustavu:
x sin t — y cos í = 0 a; cosi + y siní = 0,
jejímž řešením je a; = 6 cosi, y = b sin i. Hrana vratu je tedy křivka s parametrizací
(6 cos i, b sin i, 6í).
Z teorie diferenciální geometrie ploch vyplývá, že obálkou je plocha tečen hrany vratu:
x = b cos i — vb sin i y = 6 sin t + vb cos i z = bt + vb
dF
Ověříme dosazením parametrizace obálky do rovnic F = 0 a —- = 0:
F = sin i (6 cos i — vb sin i) — cos i (6 sin i + vb cos t) + bt + vb — bt =
9 9
6 sin i cos i — vb sin i — b sin i cos i — vb cos i + vb = —vb + vb = 0 --—- = cos t(b cos i — vb sin i) + sin i(6 sin t + vb cos i) — b =
9 9
6 cos t — vb sin i cos t + b sin i + w6 cos i sin i — b = b — b = 0
Maple. Uvažujme zadanou jednoparametrickou soustavu rovin:
> restart:with(linalg):
> env:=t->x*sin (t)-y*cos(t)+z-b*t = 0:
Soustava je regulární, neboť pro normálový vektor soustavy platí:
250
> n: = [sin(t),cos(t),l] :dn:=diff (n,t) :ddn:=diff(n,t,t)
> simplify(det([n,dn,ddn]));
Spočítáme hranu vratu:
> d_env:=diff(env(t),t):dd_env:=diff(env(t),t,t)
> simplify(solve({env(t),d_env,dd_env}, {x, y, z}))
{z = bt, y = 6sin(í), x = b cos (í)}
Hranou vratu je šroubovice a obálkou dané regulární soustavy rovin je tedy plocha tečen šroubovice. Obálka společně s hranou vratu:
> with(plots):
> setoptions3d(scaling=constrained) :
> b:=l:
> ENVELOPE:=plot3d([b*cos(t)-v*b*sin(t) ,
b*sin(t)+v*b*cos(t),b*t+b*v], t=0..4*Pi,v=0..5,grid=[200,50], style=wireframe):
> CUSP_EDGE:=spacecurve([b*cos(t),b*sin (t),
b*t,t=0..4*Pi],thickness=3, color=red):
> display(ENVELOPE,CUSP_EDGE,axes = frame) ;
Obálka společně s hranou vratu a jednou rovinou soustavy (pro t = 5):
> t:=5:
> PLANE:=implicitplot3d(env(i),
x=-5..5,y=-5..5,z=0..4*Pi,
color=grey,style=wireframe):
> CHARACTER:=spacecurve([b*cos(t)-s*sin(t) ,
b*sin (t)+s*cos (t), b*t+s*b,s=-5..5], color=black,thickness=3)
> display(ENVELOPE,CUSP_EDGE,
PLANE,CHARACTER,axes=frame) ,
6Šroubovice je křivka bez inflexních bodů.
251
13 Isometrická zobrazení
13.1 Příklad.
Rozhodněte, zda zobrazení (x,y,z) i—> (x,y,0), které každému bodu rotačního kužele x2 + y2 = z2, z > 0 přiřadí bod v rovině z = 0, je izometrií.
Uvažujme například část tvořící přímky kužele (í, 0, í) pro t G (1,2). Tato úsečka má délku \pí a v daném zobrazení se zobrazí na úsečku v rovině (í, 0, 0), která má pro t G (1, 2) délku 1. Tudíž zobrazení není izometrií, neboť nezachovává délky křivek.
13.2 Příklad.
Nechť je dána část katenoidu (po vyjmutí jednoho poledníku)
f(u, v) = (coshíicos v, coshíisinv, u), u G [0, 2ir),v G (0, 2ir) a část helikoidu
Ukažte, že zobrazení f(u, v) i—> /(sinhtí, v) je izometrií. Které křivky na helikoidu odpovídají v tomto zobrazení rovnoběžkám a poledníkům katenoidu?
Řešení.
Pro katenoid platí (viz příklad 9.3)
Pro helikoid v reparametrizaci ip(u, v) = (sinhu, v) platí27
fl = (coshíi cos v, coshíi sin v, 0), f2 = (— sinh sin v, sinh cos v, 1)
Řešení.
f(u,v) = (u cos v, u sin v, v), u G [0,2tv),v G (0, 27r).
2 2
011 = cosh u, gi2 = 0, 022 = cosh u
011
9 9 9 9 9
cosh u cos v + cosh u sin v + 0 = cosh u
022
012
— sinh u cosh it sin v cos v + sinh it cosh u sin w cos v + 0 = 0
9 9 9 9 9 9
sinh it sin v + sinh it cos v + 1 = sinh it + 1 = cosh it
27-
Uvědomme si, že platí J(^) 7^ 0.
252
Koeficienty prvních základních forem plochy jsou stejné, tudíž se jedná o izometrické plochy a dané zobrazení je izometrií.
Rovnoběžky na katenoidu u = c = konst. se zobrazí na křivku u = sinh c = konst., což na daném helikoidu představuje šroubovici. Poledníky na katenoidu v = c = konst. se zobrazí na křivku v = c = konst., což na daném helikoidu představuje tvořící přímku.
Maple. Nejdříve ověříme izometrii ploch pomocí procedury g pro výpočet koeficientů první základní formy plochy (viz strana 193):
> catenoid:=(u,v)->[cosh(u)*cos(v),cosh(u)*sin(v),u]:
> g(catenoid,u,v);
[cosh(ií)2, 0, cosh(ií)2]
> helicoid:=(u,v)->[u*cos(v),u*sin(v),v]:
> g(unapply(subs(u=sinh(u),helicoid(u,v)),u,v),u,v);
[cosh(ií)2, 0, cosh(ií)2]
Nyní ověříme, že i plochy uvedené izometrické deformace dávají tutéž první základní formu plochy:
> f:=evalm(
cos(t)*catenoid(u,v+t)+sin(t)*helicoid(sinh(u),v+t-Pi/2)):
> surf:=unapply([f[l],f[2],f[3]],u,v):
> g (surf, u, v) ;
[cosh(ií)2, 0, cosh(ií)2]
Následující programový kód vytváří animaci izometrické deformace mezi kate-noidem a helikoidem. Na obrázku je několik kroků znázorněno:
> with(plots):setoptions3d(scaling=constrained):
> for i from 0 to 50 do
P[i]:=plot3d(
evalm(cos(i*Pi/100)*catenoid(u,v+i*Pi/100)+
sin(i*Pi/100)*helicoid(sinh(u),v+i*Pi/10 0-Pi/2)),
u=-2..2,v=0..2*Pi):
od:
> display(seq(P[i],i=0..50),insequence=true);
28Bijekce je dána rovností parametrů. Příslušná izometrická deformace (viz např. [1]) má pro t e (0, f) tvar
f1 (u, v) = cos t ■ f (u, v + t) + siní • / ^sinhií, v + í — —^ ,
přičemž f°(u,v) = /'(u, v) a /"2 (u, v) = /(sinh m, v). Izometrii ploch f* (u, v) lze snadno ověřit výpočtem první základní formy plochy.
253
Další programový kód po spuštění znázorňuje, jak se postupně mění parametrické křivky na zadaných plochách:
> for i from 0 to 50 do
P[i]:=plot3d(
evalm(cos(i*Pi/100)*catenoid (u,v+i*Pi/100) +
sin(i*Pi/100)*helicoid(sinh(u),v+i*Pi/100-Pi/2)), u=-2..2,v=0..2 *Pi,color=grey,style=wirefráme] : u_CURVE[i]:=spacecurve(
evalm(cos(i*Pi/100)*catenoid(u,Pi+i*Pi/100)+
sin(i*Pi/100)*helicoid(sinh(u),Pi+i*Pi/100-Pi/2)), u=-2..2,thickness=2,color=blue):
v_CURVE[i]:=spacecurve(
evalm(cos(i*Pi/100)*catenoid(1, v+i*Pi/100) +
sin(i*Pi/100)*helicoid(sinh(1),v+i*Pi/100-Pi/2)), v=0..2 *Pi,thickness=2,color=blue) :
od:
> ANIM:=display([seq(p[i],i=0..50)],insequence=true):
> ANIM1:=display([seq(u_curve[i],i = 0..50>], insequence=true) :
> ANIM2:=display([seq(v_curve[i],i=0..50>],insequence=true):
> display(ANIM1,ANIM);display(ANIM2,ANIM);
13.3 Příklad.
Uvažujme plochu
f(u,v) = (u cos v, u sin v, ln u)
a helikoid
f(u,v) = (ucosv,usmv,v).
Ukažte, že Gaussovy křivosti v bodech f(u, v) a f(u, v) jsou stejné, ale že zobrazení f(u,v) i—^ f(u,v) není izometrické. Dokažte, že neexistuje mezi danými plochami izometrické zobrazení.
29 V angličtině se tato plocha nazývá „the funnel surface". V češtině se používá název „trychtýřová plocha".
30Obrácená implikace k Theorema Egregium obecně neplatí. Speciálním případem jsou plochy s konstantní Gaussovou křivostí, kde opačné tvrzení platí.
254
Řešení.
Vzhledem k příkladu 1 1 je Gaussova křivost zadaného helikoidu — -----
(1 + uz)z
a koeficienty první základní formy plochy jsou gu = 1, gi2 = 0, 022 = 1 + u2. Dále pro plochu f(u, v) platí
fl = (cos v, sin v, —), f 2 = (—u sin v, u cos v, 0) u
1 o gil = 1 + -9 , 012 = °> 022 = lí
uz
fl X /2 = (— cos u? — sin v, it), n = :(— cos v, — sin v, it)
V 1 + íi2
/n = (0,0,-^-) hn 1
/12 = (— sin v, cos v, 0) hn = 0
^22 = (—íxcosí7,—ií.sint;,0) /i22
Vl + u2
,2
_ /ill^22 - h12 _ 1+u.
011022 "022 1+^2 (l^^2
Gaussovy křivosti obou ploch se tedy rovnají, ale vzhledem ke koeficientům první základní formy plochy není dané zobrazení izometrické.
Nyní předpokládej me,že existuj e něj aké izometrické zobrazení f (u, v) 1—> f (u, v). Potom se musí rovnat Gaussovy křivosti, tj.
1 _ 1
~ {l + u2)2 ~~ {l + ú2)2 ^ u~±u
Nechť v = (p(u, v), čímž dostáváme parametrizaci
f(ázu,ip(u,v)) = (iíicos ip(u, v), ±u sin ip(u, v), ip(u, v))
fl = (± cos ip + uipi sin ip, ± sin ip ± uipi cos p, ipi) f2 = (Tup2 sin ip, ±up2 cos ip, p2)
011 = 1 + (1 + U2)(pi)2, 012 = (1 + U2)pip2,g22 = (1 + u)2(p2)2
Vzhledem k rovnosti koeficientů první základní formy plochy musí platit soustava:
l + (l+^2)(^i)2 = 1 + 4
(1 + U2)pip2 = 0 (l+^)2(^2)2=^
255
Z drahé rovnice dostáváme, že ipi = 0 nebo ip2 = 0, což po dosazení do první a třetí rovnice soustavy vede ke sporu. Tím jsme dokázali, že izometrické zobrazení daných ploch nelze sestrojit.
Maple. Zobrazíme si nejdříve uvedenou rotační plochu a určíme její Gaussovu křivost. K výpočtu použijeme dříve naimplementovanou proceduru gaussian (viz strana 226):
> with(plots):
> funnel:=(u,v)->[u*cos(v) ,u*sin(v) , ln(u) ] :
> plot3d([funnel(u,v) ],u=0..10,v=0..2*Pi) ;
> gaussian(funnel, u, v) ;
1
~(l + u2)2
Výsledek odpovídá Gaussově křivosti helikoidu (viz příklad 11.1).
256
14 Geodetické křivky na ploše
14.1 Příklad.
Spočítejte Christoffelovy symboly helikoidu
f(u\,U2) = (ii2 cos tíi, ií2 sin lil, lil)
a určete rovnice geodetik na této šroubové ploše. Jsou parametrické křivky geodetické?
/n = (-U2 cos tíi, —U2 sin lil, 0) f 12 = (— sin tíi, cos ui, 0)
Í22 = (0, 0, 0)
Řešení.
fl = (-U2 sin lil, U2 COS lil, 1) f2 = (cos tíi, sin tíi, 0)
Odvodíme Christoffelovy symboly:
fn = rJi/i + rV2 + hnn
(29) /i2 = T\2h + T22/2 + /i12n
f22 = r22/i + r^2/2 + h12n
(-U2 cos tíi, -ií2 sintíi, 0) = rj^/i + r2x/2 + hun (-sintíi, cos tíi, 0) = T\2h +T?2/2 + /ii2n
(0,0,0) =ri2/x + r22/2 + /i22n
Skalární součin s j\ a /2 (využijeme mezivýsledků z příkladu 9.6):
o = (u| +1) ■ y\x + o ■ y\x -U2 = o ■ r{ľ +1 ■ r2x = («i +1) ■ r{2 + o ■ r22 o = o ■ rj2 +1 ■ r22
o = («| +1) ■ y\2 + o ■ r22 o = o ■ y\2 +1 ■ r
rii = r?2 = r22 = r22 = o, r2x = -U2, v\2 = 2
257
Výpočet lze také provést jen z koeficientů první základní formy plochy pomoci vzorce
nm r* - 1 V*ň (dg>1 + dgik d9:>k\ - V^ň r
(30) r^fe" 2 ^ flä ^ " äíTJ " £í
kde matice g 1 = f £n £12 ) je inverzní k matici G = f 911 912 ). Zřejmě
\912 922/ \912 922/
platí
Fjki = Fkji, (Fjk'Tjk) = (Tjki,Tjk2) ■ G Pro helikoid dostáváme
dgn = dg12 = dg12 = dg22 = dg22 = Q dgn =
9líl 9líi <9íi2 9líi <9íi2 ' 9lí2
rm = i(o + o - o) = o rm = i(o + o - 2^2) = -u2
Ti2i = ^(2u2 + 0 - 0) = u2 Ti22 = i(0 + 0 - 0) = 0
r22i = ^(o + o-o) = o r222 = ^(0 + 0-0) = 0
(r^ri) = (rm,r112) ■ g-1 = (o,-«2) ^
rJi = o, r2! = -«2
(rÍ2,r22) = (r121,r122) ■ g-1 = («2,o) ^ ^
^ r1 - ^2 r2 - n ^il2" i + ^2' il2"°
(r22,r22) = (r221,r222) ■ g-1 = (0,0) ^
=^ ^22 = 0' -^22 = 0
Vzhledem k rovnicím pro paralelní přenos
2 2 dř7i \ - -i duj dU2 \ - „9 dít,-
3'Uvědomme si, že kovariantní derivování patří do vnitřní geometrie plochy.
258
jsou geodetické křivky dány rovnicemi:
nu -bil -ĺ Y" r1 ^±^± - n d^2 x ^ 2 duj { ' dt2 + Z^LiJ dt dt ' dí2 + ^ v dt dt
d2u\ U2 dui dui d2U2 f dui^2
dt2 ' "l + ul dt dt °' dí2 U2 V dí
dtíi d2u\
Uvazujme parametrické krivky u\ = konst. => - = 0, —~- = 0. Potom
rovnice geodetických křivek jsou tvaru
d2ti2
0 = 0< HF
dt ' dí2
Tedy u± = c, U2 = at + b jsou geodetické dráhy. Jedná se o tvořící přímky.
dv>2 d2U2
Uvazujme parametrické krivky 112 = konst. => - = 0, —^- = 0. Potom
dí dtz
rovnice geodetických křivek jsou tvaru
no, dV n fduiY n
(32) -T7T = °> ^2 —rr =0
dí2 ~ z\dt J
Pro U2 = 0 dostáváme přímku u\ = at + b. Pro 112 = c2 7^ 0 dostáváme u\ = c\. To je ale stacionární pohyb, který nedává křivku.
Sroubovice 7(í) = /(i,c2 7^ 0) není geodetickou křivkou, tudíž její geodetická křivost je nenulová. Určeme si její geodetickou křivost pomocí vztahu >í9 = 11 ^ 11 (viz definice na straně 93). Tento vztah platí pouze pro křivky parametrizované obloukem:
l(t) = (c2cosí,c2siní,í),7'(í) = (-c2 siní, c2 cosi, 1)), ||7'(í)|| = \Jl + c\
|dí' t=7m' 1{s)=f{7m,C2)
Ze vztahu pro kovariantní derivaci (viz strana 84) a ze vztahu (32) dostáváme vektor geodetické křivosti
V^0,^V neboť ^ = ^-U, í^=0
ds V'l + c2,/' ds yj\ + c2' ds2
32vždy geodetický pohyb
259
Tudíž
v7 ds
O,
c2
1 + 4
C2
1 + 4
T
\C2\
1 + 4
Maple. Pro vlastní výpočet Christoffelových symbolů sestavíme uživatelskou proceduru christof fel. Přitom využijeme vzorců
dui 9^2 qu2
2 (011022 ~ 9i2)
r, ďgn dg-2.1 922-^-912-0^
~ 9Í2]
V1 -v1 -
1 12 — 1 21 —
2 (#11022 y12;
0„ 5.912 „ 9.922 _ 5.922
rl = ZS22-q^ - 922-q^ - 9l2Jfa 22 2 (#11022 - #12)
r2
1 11
r2 112
■ 22
2ffii
<9ui
011
0U2
012
<9ui
2 (011022 - 0i2)
r2 121
on ^222
„ ď.922
- 222) 2012^77 +0l2^ff
(011022
<9«2
(011022
Zároveň využijeme již nadefinovanou proceduru g (viz strana 193) pro výpočet koeficientů první základní formy plochy:
> Christoffel:=proc(surf,u,v)
local g,detG,diffG_u,diffG_v,gamma_lll,gamma_112,gamma_121,
gamma_12 2,gamma_2 21,gamma_2 2 2;
g:=evalm(G(surf,uu,vv));
detG:=det([[_G[1],_G[2]],[_G[2],_G[3]]]);
diffG_u:=[diff(_G[1],uu),diff(_G[2],uu),diff(_G[3],uu)]; diffG_v:=[diff(_G[1],vv),diff(_G[2],vv),diff(_G[3],vv)]; gamma_lll:=simplify((_G[3]*diffG_u[1]-
2*_G[2]*diffG_u[2]+_G[2]*diffG_v[l])/(2*detG)) ; gamma_112:=simplify((-_G[2]*diffG_u[1]+
2*_G[1]*diffG_u[2]-_G[1]*diffG_v[l])/(2*detG) ) ; gamma_121:=simplify((_G[3]*diffG_v[1]-
_G[2]*diffG_u[3])/(2*detG)) ; gamma_122:=simplify((_G[1]*diffG_u[3]-
_G[2]*diffG_v[l])/(2*detG)); gamma_221:=simplify((-_G[2]*diffG_v[3]+
2*_G[3]*diffG_v[2]-_G[3]*diffG_u[3])/(2*detG)) ; gamma_2 2 2:=simplify((_G[1]*diffG_v[3]-
2*_G[2]*diffG_v[2]+_G[2]*diffG_u[3] ) /(2*detG) ) ; subs(uu=u,vv=v,[gamma_lll,gamma_112,gamma_121,
gamma_12 2,gamma_221,gamma_22 2]);
end:
3Tyto vzorce můžeme najít např. v [1].
260
Teď už vypočítáme Christoffelovy symboly bez zdlouhavého výpočtu v obecném i konkrétním bodě křivky:
> helicoid:=(u,v)->[v*cos(u),v*sin(u),u]:
> Christoffel(helicoid,u[1],u[2]);
779
0, -^,—1^,0,0,0
Sestrojíme proceduru pro nalezení diferenciálních rovnic geodetických křivek:
> geodesic_eq:=proc(f,u,v)
local eql,eq2;
eql:=diff(u(t),t,t)+Christoffel(f,u (t),v (t)) [1]*diff(u(t),t) "2 +2*Christoffel(f,u(t),v(t))[3]*diff(u(t),t)*diff(v(t),t) +Christoffel(f,u(t),v(t))[5]*diff(v(t),t)"2=0; eq2:=diff(v(t),t,t)+Christoffel(f,u (t),v (t)) [2]*diff(u(t),t) "2 +2*Christoffel(f,u(t),v(t))[4]*diff(u(t),t)*diff(v(t),t) +Christoffel(f,u(t),v(t)) [6]*diff(v(t),t)"2=0;
eql,eq2; end:
> geodesic_eq(helicoid,u[l],u[2]);
Maplu využijeme k vykreslení geodetických křivek v daném bodě. První procedura geodesic_piot bude vykreslovat geodetickou křivku v daném směru. Vstupní parametry u0, vO, DuO, DvO udávají počáteční podmínky pro soustavu diferenciálních rovnic neboli bod a směr, pro který geodetickou křivku chceme vykreslit. Posledních šest parametrů určuje rozsah parametrů u a v vykreslované plochy a rozsah parametru í vykreslované křivky na ploše:
> with(plots):setoptions3d(scaling=constrained):
> geodesic_plot:=
proč(f,u0,v0,Du0,DvO,ustart,uend,vstart,vend,tstart,tend) local sys,desys,ul,vl,G0,pom,GEO,SURF; sys:=geodesic_eq(f,u,v);G0:=G(f, uO, vO) ; pom:=evalm([DuO,DvO]&*[[G0[1] , G0[2]] , [G0[2] , G0[3]] ]
&*[[DuO],[DvO]]);
desys:=dsolve({sys,u(0)=u0,v(0)=v0,
D(u) (0)=Du0/sqrt (pom [1]) ,D(v) (0) =Dv0/sqrt(pom[1]) }, {u(t),v(t) },type=numeric,output=listprocedure) ; ul:=subs(desys,u(t));vl:=subs(desys, v(t)) ; GEO:=spacecurve(subs({u='ul'(t),v='vl'(t)},f(u,v)),
t=tstart..tend, color=red, thickness=3) : SURF:=plot3d(subs({u=u(t),v=v(t)},f(u,v)),u=ustart..uend,
261
v=vstart. . vencl, color=grey, style=wiref ráme] :
display(GEO,SURF): end:
Další procedura geodesics_piot zobrazí libovolný počet geodetických křivek v různých směrech v daném bodě. Jako vstupní parametr nebude směr, ten si procedura postupně zadá podle vstupního parametru n určujícího počet vykreslovaných křivek:
> geodesics_plot:=
proc(f,uO,vO,ustart,uend,vstart,vend,tstart,tend,n) local i,sys,desysl,desys2,ul,vl,u2,v2,G0,pom,bl,b2,
S0ll,S0l2, sol,GE01,GE02,SURF,POINT; sys:=geodesic_eq(f,u,v);GO:=G(f,uO,vO);
pom:=evalm([1,1]& *[[GO[1],GO [2]], [GO[2],GO[3]]]& *[[1], [1]]); for i from 0 to iquo(n,2)+l do bl:='bl':b2:=
(cos(i*2*Pi/n)*sqrt(pom[l])-(GO[1]+G0[2])*bl)/ (GO [2]+G0 [3]); sol:=solve(evalm([bl,b2]& *[[GO[1],GO[2]], [GO[2],GO[3]]]
&* [ [bl], [b2]]) [l]=l,bl);
soll:=sol[1];sol2:=sol[2];
desysl:=dsolve({sys,u(0)=u0,v(0)=v0,D(v)(0)=subs(bl=soll,b2), D(u)(0)=soll},{u(t),v(t)},type=numeric,output=listprocedure);
desys2:=dsolve({sys,u(0)=u0,v(0)=v0,D(v) (0)=subs (bl = sol2,b2), D(u) (0)=sol2},{u(t),v(t)},type=numeric,output=listprocedure) ;
ul:=subs(desysl,u(t));vl:=subs(desysl,v (t));
u2:=subs(desys2,u(t));v2:=subs(desys2,v(t));
GEOl[i] :=spacecurve(subs({u='ul' (t),v='vl' (t) }, f(u, v)) ,
t=tstart..tend, color=red,thickness=2) :
GE02[i] :=spacecurve(subs ({u='u2' (t),v='v2' (t) },f(u,v)),
t=tstart..tend,color=red,thickness=2):
od;
POINT:=pointplot3d(f(u0,v0),color=black,symbol=circle,
symbolsize=15,thickness=3): SURF:=plot3d(subs({u=u(t),v=v(t)},f(u,v)),
u=ustart..uend,v=vstart..vend,color=grey,style=wireframe): display(seq(GEOl[i],i=0..iquo(n,2)),
seq(GE02[i],i=0. .iquo (n,2) ) ,POINT,SURF) ;
end:
Uvažujme například geodetickou křivku v bodě u = ir, v = 1 pro směr du = 0, dv = 1, pro směr du = 1, dv = 1 a v tomtéž bodě v různých směrech patnáct geodetických křivek:
> geodesic_plot(helicoid,Pi,l,0,l,0,2*Pi,-4,4,-5,3);
> geodesic_plot(helicoid,Pi,1,1,1,0,2*Pi,-4,4,-4,3);
> geodesics_plot(helicoid,Pi,1,0,2*Pi,-4,4,0,3,15);
262
14.2 Příklad.
Spočítejte Christoffelovy symboly anuloidu
f(ui, u2) = ((a + bcosui) cos112, (a + bcosui) SÍ11U2, bsmui) a určete rovnice geodetických křivek. Řešení.
fl = (—bsmui cos 1121 —bsmui siní^? bcosui) f 2 = (—(a + b cos u\) siníi2í (a + b cos u\) cosí^í 0) /11 = (—frcosíii cosíí2í — ^cosííi sinicí — bsiniti) f 12 = (frsiníii s\tíU2,—bsm.uicosu2,0) f22 = (—(a + cos u\) cosíí2í ~{a + b cos u\) siníi2í 0)
Odvodíme Christoffelovy symboly podle (29):
(—bcosu\ cosíí2> — bcosu\ siníi2í — bsiniti) = rj^/i + r^/2 + hun (b sin u\ siníi2; — sin u\ cos U2, 0) = T\2fl + 1^2/2 + hi2n (—(a + 6cos ííi) cosíí2í —(a + bcosui) sin^ 0) = T\2fi + r^/2 + /i22n
Skalární součin s/ia/2 (využijeme mezivýsledků z příkladu 11.3):
o = b2 ■ rjx + o ■ r2x o = ŕ ■ v\2 + o ■ r22
bs'mui(a + frcostii) = 62 ■ V\2 + 0 ■ T22
0 = 0 ■ + (a + bcosu1)2 —bsmui(a + bcosui) = 0 ■ V\2 + (a + bcosui)2 0 = 0 ■ V\2 + (a + frcosíii)2
263
1 11 — 1 11 — 1 12 — 1 22 — u>1 12 — . > )1 22 — 7
a + o cos Tii o Podle (31) jsou geodetické křivky dány rovnicemi:
d2Tii i (a + 6cosTii) sinTii /ch^N2 d2U2 bsmui dtíi dTi2
I t- 1 = 0, 7-7; 2 ; 7- 7— = 0
dí2 b V dí 7 ' dí2 a + 6cosTii dí dí
dtíi d2Tii
—- = 0 — dí ' dí rovnice geodetických křivek jsou tvaru
Uvažujme parametrické křivky u\ = konst. => —— = 0, —7J77- = 0. Potom
(a + 6 cos Tii) sin Tii f ^-u2\2 q d2Ti2 ^
Uvažujme parametrické křivky tí2 = konst. => = 0, 1 2 = 0. Potom
x dí J ' dí2
dTi2
a) -= 0 => tí2 = c, ti. nejedna se o krivku.
dí
b) sinTii = 0 => Tii £ {0,7r}. Pak 2 = 0 dává tí2 = kt + q. Jedná se
dí^
o vnitřní a vnější kružnici anuloidu. Jiné rovnoběžky nejsou geodetikami.
dTi2 d2Ti2 ~ď7 = 0'^í2
rovnice geodetických křivek jsou tvaru
d2Til
0 = 0
Tedy u\ = kt + q, 112 = c. Poledníky jsou geodetickými křivkami.34
Maple. Využijeme procedur z předchozího příkladu:
> torus:=(u, v)->
[(a+b*cos(u))*cos(v), (a+b*cos (u))*sin (v),b*sin(u)]
> geodesic_eq(torus,u[1],u [2]);
2 . (a + 6cos(ui(í)))sin(ui(í)) í-^u2(í)j ď*"1®) +-i-~-~ = °'
Mt)--„ ,\ , L>-- = o
dt2 J a + 6cos(iti(í))
Uvažujme například geodetickou křivku v bodě u = ir, v = 0 pro směr du = 1, dv = 0, pro směr du = 0, dv = 1 a v bodě u = 0, v = 0 v různých směrech deset geodetických křivek:
34platí pro každou rotační plochu
264
> geodesic_plot(unapply(subs(a=3,b=l,torus(u,v)),u,v),
Pi, 0, 1, 0, 0, 2*Pi,0,2*Pi,-Pi/2,Pi/2) ;
> geodesic_plot(unapply(subs(a=3,b=l,torus (u,v)),u,v),
Pi,0,0,1,0,2*Pi,0,2*Pi,0,2*Pi);
> geodesics_plot(unapply(subs(a=3,b=l,torus(u,v)),u,v) ,
0,0,0,2*Pi,0,2*Pi,0,Pi/2,10);
14.3 Příklad.
Určete rovnice geodetických křivek rotační válcové plochy. Řešení.
Uvažujme rotační válcovou plochu
f(ui,u2) = (costíi,siniíi,ií2),/i = (-siniíi,cosiíi,0),/2 = (0,0,1).
Tudíž 0ii = sin2 iti + c°s2 ui = 1> 012 = 0,022 = 1- Protože koeficienty první základní formy plochy jsou konstanty, všechny jejich parciální derivace jsou nulové, neboli podle vzorce (30) jsou Christoffelovy symboly
■pl _ "p2 _ "pl _ "p2 _ "pl _ "p2 _ n
1 11 — 1 11 — 1 12 — 1 12 — 1 22 — 1 22 — u
Rovnice geodetických křivek na rotační válcové ploše jsou vzhledem k vzorci
(31):
d2ui d2uo -- = 0-- = 0
dt2 ' dt2
u\ = c±t + C2, U2 = d\t + d2, kde c\, C2, d\, <Í2 jsou konst.
Pro ci = 0, di = 0 nedostáváme křivku. Pro c\ = 0, d\ 7^ 0 dostáváme tvořící přímky válcové plochy.
Pro ci 7^ 0 můžeme dosadit U2 = d\--h <Í2 do parametrického vyjádření
Cl
válcové plochy a potom parametrické vyjádření geodetik je
M ( ■ dl dlC2 , ,1
g(t) = cos ui, sinu\, —u\---h «2
V ci Cl
35Vzhledem k vlastnostem izometrie lze tvrdit, že Christoffelovy symboly libovolné rozvinutelné plochy jsou nulové.
265
Přičemž pro d\ = 0 dostáváme kružnice a pro d\ ^ 0 jsou geodetikami šroubo-
vice.36
Maple. Opět využijeme procedur z příkladu 14.1
> cylinder:=(u,v)->[cos(u),sin(u),v]:
> geodesic_eq(cylinder,u[1],u [ 2]);
Uvažujme například geodetickou křivku v bodě u = 1, v = 0 pro směr dw = 3, dv = 1, v bodě it = 0, v = 2 pro směr dw = 1, dw = 0 a pro směr dw = 0, dv = 1 a v bodě it = 0, v = 2 v různých směrech dvanáct geodetických křivek:
> geodesic_plot(cylinder,1,0,3,1,0,2*Pi,0,4,0,12);
> geodesic_plot(cylinder,0,2,1,0,0,2*Pi,0,4,0,4);
> geodesic_plot(cylinder,0,2,0,1,0,2*Pi,0,4,-2,2);
> geodesics_plot(cylinder,0,2,0,2*Pi,0,4,0,2,12);
V Maplu lze numericky zpracovat další související pojmy, např. geodetickou kružnici. Výsledné obrázky pro rotační válcovou plochu, sféru, helikoid, anuloid a plochu37 z = íi3 — 3uv2 mohou vypadat následovně:
Šroubovice na helikoidu ovšem geodetikou není, viz příklad
V angličtině je tato plocha známá pod označením "the monkey saddle".
266
Obrázky byly nakresleny pomocí procedury
> geodesic_circles:=proc(f,uO,vO,ustart,uend,vstart,vend,max,n) local i,j,sys,p,desysl,desys2,bl,b2,sol,soli,sol2,ul,vl,u2,v2,
GO,porn,geol,geo2,POINT,SURF,CIRC; sys:=geodesic_eq(f,u,v);p:=50;G0:=G(f,u0,v0) ;
pom:=evalm([1,1]& *[[GO[1],GO[2]] , [GO[2] , GO[3]]]& *[[1 ] , [1] ] ) ; for i from 1 to iquo(p,2) do bl:='bl':b2:=
(cos(i*2*Pi/p)*sqrt(pom[l])-(GO[1]+G0 [2])*bl)/ (GO [2]+G0 [3] ) ; sol:=solve(evalm([bl,b2]& *[[GO[1],GO[2]], [GO[2],GO[3]]]
&*[[bl], [b2]]) [l]=l,bl);
soll:=sol[1];sol2:=sol[2];
desysl:=dsolve({sys,u(0)=uO,v(0)=vO,
D(u)(0)=soll,D(v)(0)=subs(bl=soll,b2)},{u(t),v(t)}, type=numeric,output=listprocedure); desys2:=dsolve({sys,u(0)=u0,v(0)=v0,
D(u) (0)=sol2,D(v) (0)=subs (bl = sol2,b2) },{u(t),v(t)}, type=numeric,output=listprocedure); ul:=subs(desysl,u(t));vl:=subs(desysl, v(t)) ; u2:=subs(desys2,u(t));v2:=subs(desys2,v(t)); for j from 1 to n do geol [i,j] : =
unapply (subs ({u='ul' (t),v='vl' (t)},f(u,v)),t) (j *max/n); geo2 [i,j] : =
unapply(subs({u='u2' (t),v='v2' (t)},f(u,v)),t) (j*max/n);
od:od;
POINT:=pointpiot3d(f (u0,v0),color=black,symbol=circle,
symbolsize=15,thickness=3): SURF:=plot3d(subs({u=u(t) , v=v(t) },f(u,v)) ,
u=ustart..uend,v=vstart..vend,color=grey,style=wireframe): for j from 1 to n do
CIRC[j]:=spacecurve([geol[1,j],seq(geol[i,j],1=1..iquo(p,2)), seq(geo2[iquo(p,2)+l-i,j],i = l..iquo(p, 2))] ,
color=red,thickness=2)
od:
267
display(seq(CIRC[j],j = l..n),POINT, SURF) ; end:
14.4 Příklad.
Dokažte, že křivka je současně geodetická a asymptotická, právě když je to přímka. Řešení.
" Pro body asymptotické křivky platí, že oskulační rovina v nich splývá s tečnou rovinou nebo není definována. Pro body geodetické křivky platí, že oskulační rovina v nich obsahuje normálu nebo není definována. Pro body ležící na křivce, která je zároveň asymptotická a geodetická, tedy platí, že oskulační rovina v nich není definována, tj. jedná se o přímku.
" Přímka je asymptotickou i geodetickou křivkou.
14.5 Příklad.
Dokažte, že geodetická křivka je současně hlavní křivka, právě když je to rovinná křivka.
Řešení.
>" Nechť křivka 7 parametrizovaná obloukem je hlavní a geodetickou křivkou na ploše. Potom
dn7 d7 a d 7
2,
A -—f II n~
dt " dí " dt2 11 7' kde rij jsou normály plochy podél křivky 7. Tedy platí
d27 d37 dc dn7
_ = C(s)n7, _ = _n7 + c_
d37 , v. • v v . d7 d27 v. . . , 38
——r lezi v rovme urcene — a tedy krivka 7 je rovmna.
dsó ds dsz
3[7',7",7"']=0
268
Nechť geodetická křivka je rovinnou křivkou. Máme Frenetovy vzorce
d7 dei de-2
— = ei, — = ne2, — = -«ei
ds as as
. v , v. d27 „
V teto rovine lezi || n7 (neboť 7 je geodetická křivka). Tedy
dn7 dc
ds ds
dn~,
c(s)e2,——^ = —e2 - CKei
n7 = ±e2,-:--2 = Ť«ei ds
Takže se jedná o hlavní křivku.
269
Reference k části II.
[1] Gray A.: Modern Differential Geometry of Curves and Surfaces with Mathe-matica, CRC Press,Boca Raton, 1998
[2] Pressley A.: Elementary Differential Geometry, Springer-Verlag, London, 2005
[3] Rovenski V.: Geometry of Curves and Surfaces with MAPLE, Birkhauser, Boston, 2000
270