Page d'accueil
Maplets
<< Page précédente
Page suivante >>
Quadriques
© Alain Le Stang - "Apprendre Maple" - 2004
Sélectionner Edit/Execute/Worksheet ou cliquer le bouton !!! pour
exécuter ce Maplet.
>
|
with(Maplets[Elements]):
with(Maplets[Tools]): with(plots):
|
Warning, the
name changecoords has been redefined
-------------------------------------------------------------- ELLIPSOIDE
--------------------------------------------------------------
>
|
ellipsoide := module()
export nom,type,equation,param,traceX,traceY,traceZ,info;
nom := proc() "Ellipsoide" end proc;
type := proc() ELLIPSOIDE end proc;
equation := proc() x^2/a^2 + y^2/b^2 +z^2/c^2=1 end proc;
param := proc(a,b,c) [a*cos(u)*cos(v), b*sin(u)*cos(v), c*sin(v)],
u=0..2*Pi, v=-Pi/2..Pi/2 end proc;
traceX := proc(a,b,c,k) [k, cos(u)*sqrt(a^2-k^2)*b/a, sin(u)*sqrt(a^2-k^2)*c/a],u=0..2*Pi
end proc;
traceY := proc(a,b,c,k) [a*sqrt(b^2-k^2)*cos(u)/b, k, c*sqrt(b^2-k^2)*sin(u)/b],
u=0..2*Pi end proc;
traceZ := proc(a,b,c,k) [a*sqrt(c^2-k^2)*sin(u)/c, b*sqrt(c^2-k^2)*cos(u)/c,
k], u=0..2*Pi end proc;
info := proc()
["Quadrique à centre unique.","Surface non réglée.",x=a*cos(phi)*cos(theta),
y=b*cos(phi)*sin(theta),
z=c*sin(phi), theta = 0..2*Pi, phi = -Pi/2..Pi/2,
x*x[0]/a^2+y*y[0]/b^2+z*z[0]/c^2 = 1," " ]
end proc;
end module; |
>
|
ellipsoide:-equation(); |
>
|
X:=spacecurve(ellipsoide:-traceX(3,4,5,2),
thickness=3, color=cyan): |
>
|
Y:=spacecurve(ellipsoide:-traceY(3,4,5,2),
thickness=3, color=yellow): |
>
|
Z:=spacecurve(ellipsoide:-traceZ(3,4,5,2),
thickness=3, color=red): |
>
|
Q:=plot3d(ellipsoide:-param(3,4,5)): |
>
|
display([Q,X,Y,Z],orientation=[45,60], scaling=constrained, axes = boxed); |
![[Plot]](images/quadriques.htm_3.gif)
--------------------------------------------- HYPERBOLOIDE A UNE NAPPE
-----------------------------------------------------------
>
|
hyp1 := module()
export nom,type,equation,param,traceX,traceY,traceZ,info;
nom := proc() "Hyperboloide a une nappe" end proc;
type := proc() HYP1 end proc;
equation := proc() x^2/a^2 + y^2/b^2 - z^2/c^2 = 1 end proc;
param := proc(a,b,c)
[a*cos(u)*cosh(v),b*sin(u)*cosh(v),c*sinh(v)],u=0..2*Pi,v=-arcsinh(10/c)..arcsinh(10/c)
end proc;
traceX := proc(a,b,c,k)
if abs(k)<a then
[[k,cosh(u)*sqrt(a^2-k^2)*b/a,sinh(u)*sqrt(a^2-k^2)*c/a],u=-arcsinh(10*a/(c*sqrt(a^2-k^2)))..arcsinh(10*a/(c*sqrt(a^2-k^2))),
[k,-cosh(u)*sqrt(a^2-k^2)*b/a,sinh(u)*sqrt(a^2-k^2)*c/a],u=-arcsinh(10*a/(c*sqrt(a^2-k^2)))..arcsinh(10*a/(c*sqrt(a^2-k^2)))]
elif abs(k)>a then
[[k,sinh(u)*sqrt(k^2-a^2)*b/a,cosh(u)*sqrt(k^2-a^2)*c/a],u=-arccosh(10*a/(c*sqrt(k^2-a^2)))..arccosh(10*a/(c*sqrt(k^2-a^2))),
[k,sinh(u)*sqrt(k^2-a^2)*b/a,-cosh(u)*sqrt(k^2-a^2)*c/a],u=-arccosh(10*a/(c*sqrt(k^2-a^2)))..arccosh(10*a/(c*sqrt(k^2-a^2)))]
else
[[k,b*u,c*u],u=-10/c..10/c,[k,-b*u,c*u],u=-10/c..10/c]
end if;
end proc;
traceY := proc(a,b,c,k)
if abs(k)<b then
[[cosh(u)*sqrt(b^2-k^2)*a/b,k,sinh(u)*sqrt(b^2-k^2)*c/b],u=-arcsinh(10*b/(c*sqrt(b^2-k^2)))..arcsinh(10*b/(c*sqrt(b^2-k^2))),
[-cosh(u)*sqrt(b^2-k^2)*a/b,k,sinh(u)*sqrt(b^2-k^2)*c/b],u=-arcsinh(10*b/(c*sqrt(b^2-k^2)))..arcsinh(10*b/(c*sqrt(b^2-k^2)))]
elif abs(k)>b then
[[sinh(u)*sqrt(k^2-b^2)*a/b,k,cosh(u)*sqrt(k^2-b^2)*c/b],u=-arccosh(10*b/(c*sqrt(k^2-b^2)))..arccosh(10*b/(c*sqrt(k^2-b^2))),
[sinh(u)*sqrt(k^2-b^2)*a/b,k,-cosh(u)*sqrt(k^2-b^2)*c/b],u=-arccosh(10*b/(c*sqrt(k^2-b^2)))..arccosh(10*b/(c*sqrt(k^2-b^2)))]
else
[[a*u,k,c*u],u=-10/c..10/c,[-a*u,k,c*u],u=-10/c..10/c]
end if;
end proc;
traceZ := proc(a,b,c,k) [ a*sqrt(k^2+c^2)*sin(u)/c, b*sqrt(k^2+c^2)*cos(u)/c,
k], u=0..2*Pi end proc;
info := proc()
["Quadrique à centre unique.","Surface réglée.",x=a*cosh(phi)*cos(theta),
y=b*cosh(phi)*sin(theta), z=c*sinh(phi), theta = 0..2*Pi, phi = -infinity..infinity,
x*x[0]/a^2+y*y[0]/b^2-z*z[0]/c^2 = 1," " ]
end proc;
end module; |
>
|
X:=spacecurve(op(hyp1:-traceX(3,4,5,2)[1..2]),thickness=3,color=cyan),spacecurve(op(hyp1:-traceX(3,4,5,2)[3..4]),
thickness=3, color=cyan): |
>
|
Y:=spacecurve(op(hyp1:-traceY(3,4,5,2)[1..2]),thickness=3,color=yellow),spacecurve(op(hyp1:-traceY(3,4,5,2)[3..4]),
thickness=3, color=yellow): |
>
|
Z:=spacecurve(hyp1:-traceZ(3,4,5,2),
thickness=3, color=red): |
>
|
Q:=plot3d(hyp1:-param(3,4,5)): |
>
|
display([Q,X,Y,Z],orientation=[45,60], scaling=constrained, axes = boxed); |
![[Plot]](images/quadriques.htm_6.gif)
--------------------------------------------- HYPERBOLOIDE A DEUX NAPPES
-----------------------------------------------------------
>
|
hyp2 := module()
export nom,type,equation,param,traceX,traceY,traceZ,info;
nom := proc() "Hyperboloide a deux nappes" end proc;
type := proc() HYP2 end proc;
equation := proc() x^2/a^2 + y^2/b^2 - z^2/c^2 = -1 end proc;
param := proc(a,b,c)
[[a*cos(u)*sinh(v), b*sin(u)*sinh(v), c*cosh(v)], u=0..2*Pi,v=-arccosh(10/c)..arccosh(10/c),
[a*cos(u)*sinh(v), b*sin(u)*sinh(v), -c*cosh(v)], u=0..2*Pi,v=-arccosh(10/c)..arccosh(10/c)]
end proc;
traceX := proc(a,b,c,k) [[k,sinh(u)*sqrt(k^2+a^2)*b/a,cosh(u)*sqrt(k^2+a^2)*c/a],u=-arccosh(10*a/(c*sqrt(k^2+a^2)))..arccosh(10*a/(c*sqrt(k^2+a^2))),
[k,sinh(u)*sqrt(k^2+a^2)*b/a,-cosh(u)*sqrt(k^2+a^2)*c/a],u=-arccosh(10*a/(c*sqrt(k^2+a^2)))..arccosh(10*a/(c*sqrt(k^2+a^2)))]
end proc;
traceY := proc(a,b,c,k)
[[sinh(u)*sqrt(k^2+b^2)*a/b,k,cosh(u)*sqrt(k^2+b^2)*c/b],u=-arccosh(10*b/(c*sqrt(k^2+b^2)))..arccosh(10*b/(c*sqrt(k^2+b^2))),
[sinh(u)*sqrt(k^2+b^2)*a/b,k,-cosh(u)*sqrt(k^2+b^2)*c/b],u=-arccosh(10*b/(c*sqrt(k^2+b^2)))..arccosh(10*b/(c*sqrt(k^2+b^2)))]
end proc;
traceZ := proc(a,b,c,k) [ a*sqrt(k^2-c^2)*sin(u)/c, b*sqrt(k^2-c^2)*cos(u)/c,
k], u=0..2*Pi end proc;
info := proc()
["Quadrique à centre unique.","Surface non réglée.",x=a*sinh(phi)*cos(theta),
y=b*sinh(phi)*sin(theta), z=±*c*cosh(phi), theta = 0..2*Pi, phi = -infinity..infinity,
x*x[0]/a^2+y*y[0]/b^2-z*z[0]/c^2 = -1," " ]
end proc;
end module; |
>
|
X:=spacecurve(op(hyp2:-traceX(3,5,2,6)[1..2]),thickness=3,color=cyan),spacecurve(op(hyp2:-traceX(3,5,2,6)[3..4]),
thickness=3, color=cyan): |
>
|
Y:=spacecurve(op(hyp2:-traceY(3,5,2,6)[1..2]),thickness=3,color=yellow),spacecurve(op(hyp2:-traceY(3,5,2,6)[3..4]),
thickness=3, color=yellow): |
>
|
Z:=spacecurve(hyp2:-traceZ(3,5,2,6),
thickness=3, color=red): |
>
|
Q:=plot3d(op(hyp2:-param(3,5,2)[1..3])),plot3d(op(hyp2:-param(3,5,2)[4..6])): |
>
|
display([Q,X,Y,Z],orientation=[45,60], scaling=unconstrained, axes = boxed); |
![[Plot]](images/quadriques.htm_8.gif)
--------------------------------------------- CONE ELLIPTIQUE (OU DU SECOND
DEGRE) ------------------------------------------------
> |
cone := module()
export nom,type,equation,param,traceX,traceY,traceZ,info;
nom := proc() "Cone elliptique" end proc;
type := proc() CONE end proc;
equation := proc() x^2/a^2 + y^2/b^2 - z^2/c^2 = 0 end proc;
param := proc(a,b,c) [a*cos(u)*v, b*sin(u)*v, c*v], u=0..2*Pi,v=-10/c..10/c
end proc;
traceX := proc(a,b,c,k)
if k<>0 then
[[k, k*b/a*sinh(u), k*c/a*cosh(u)], u=-arccosh(10*a/(abs(k)*c))..arccosh(10*a/(abs(k)*c)),
[k, k*b/a*sinh(u), -k*c/a*cosh(u)], u=-arccosh(10*a/(abs(k)*c))..arccosh(10*a/(abs(k)*c))]:
else
[[k,b*u,c*u], u=-10/c..10/c, [k,b*u,-c*u], u=-10/c..10/c ]:
end if;
end proc;
traceY := proc(a,b,c,k)
if k<>0 then
[[k*a/b*sinh(u),k, k*c/b*cosh(u)], u=-arccosh(10*b/(abs(k)*c))..arccosh(10*b/(abs(k)*c)),
[k*a/b*sinh(u),k, -k*c/b*cosh(u)], u=-arccosh(10*b/(abs(k)*c))..arccosh(10*b/(abs(k)*c))]
else
[[a*u,k,c*u], u=-10/c..10/c, [a*u,k,-c*u], u=-10/c..10/c ]
end if;
end proc;
traceZ := proc(a,b,c,k) [k*a*cos(u)/c, k*b*sin(u)/c, k], u=0..2*Pi end
proc;
info := proc()
["Quadrique à centre unique.","Surface réglée.",x=a*lambda*cos(theta),
y=b*lambda*sin(theta), z=c*lambda, theta = 0..2*Pi, lambda = -infinity..infinity,
x*x[0]/a^2+y*y[0]/b^2-z*z[0]/c^2 = 0," " ]
end proc;
end module; |
>
|
X:=spacecurve(op(cone:-traceX(3,4,5,2)[1..2]),thickness=3,color=cyan),spacecurve(op(cone:-traceX(3
,4,5,2)[3..4]), thickness=3, color=cyan): |
>
|
Y:=spacecurve(op(cone:-traceY(3,4,5,2)[1..2]),thickness=3,color=yellow),spacecurve(op(cone:-traceY(3,4,5,2)[3..4]),thickness=3,color=yellow): |
>
|
Z:=spacecurve(cone:-traceZ(3,4,5,2),
thickness=3, color=red): |
>
|
Q:=plot3d(cone:-param(3,4,5)): |
>
|
display([Q,X,Y,Z],orientation=[45,60], scaling=constrained, axes = boxed); |
![[Plot]](images/quadriques.htm_10.gif)
--------------------------------------------- PARABOLOIDE ELLIPTIQUE
-----------------------------------------------------------
>
|
parabell := module()
export nom,type,equation,param,traceX,traceY,traceZ,info;
nom := proc() "Paraboloide elliptique" end proc;
type := proc() PARABELL end proc;
equation := proc() x^2/a^2 + y^2/b^2 - z/c = 0 end proc;
param := proc(a,b,c) [a*cos(u)*v, b*sin(u)*v, c*v^2], u=0..2*Pi,
v=0..sqrt(10/c) end proc;
traceX := proc(a,b,c,k)
if k^2/a^2<=10/c then
[[k,b*sqrt(u-k^2/a^2),c*u], u=k^2/a^2..10/c,
[k,-b*sqrt(u-k^2/a^2),c*u], u=k^2/a^2..10/c]
else
[[0,0,0], u=-a..a, [0,0,0], u=-a..a ]
end if;
end proc;
traceY := proc(a,b,c,k)
if k^2/b^2<=10/c then
[[a*sqrt(u-k^2/b^2),k,c*u], u=k^2/b^2..10/c ,
[-a*sqrt(u-k^2/b^2),k,c*u], u=k^2/b^2..10/c ]
else
[ [0,0,0], u=-a..a, [0,0,0], u=-a..a ]
end if;
end proc;
traceZ := proc(a,b,c,k)
if k>0 then
[a*cos(u)*sqrt(k/c),b*sin(u)*sqrt(k/c),k], u=0..2*Pi
else [0,0,0], u=-a..a;
end if;
end proc;
info := proc()
["Quadrique sans centre.","Surface non réglée.",x=a*lambda*cos(theta),
y=b*lambda*sin(theta), z=c*lambda^2, theta = 0..2*Pi, lambda = 0..infinity,
x*x[0]/a^2+y*y[0]/b^2-(z+z[0])/(2*c) = 0," " ]
end proc;
end module; |
>
|
X:=spacecurve(op(parabell:-traceX(3,5,4,2)[1..2]),thickness=3,color=cyan),spacecurve(op(parabell:-traceX(3,4,5,2)[3..4]),
thickness=3, color=cyan): |
>
|
Y:=spacecurve(op(parabell:-traceY(3,5,4,2)[1..2]),thickness=3,color=yellow),spacecurve(op(parabell:-traceY(3,4,5,2)[3..4]),thickness=3,color=yellow): |
>
|
Z:=spacecurve(parabell:-traceZ(3,5,4,2),
thickness=3, color=red): |
>
|
Q:=plot3d(parabell:-param(3,5,4)): |
>
|
display([Q,X,Y,Z],orientation=[45,60], scaling=unconstrained, axes = boxed); |
![[Plot]](images/quadriques.htm_12.gif)
--------------------------------------------- PARABOLOIDE HYPERBOLIQUE
-----------------------------------------------------------
>
|
parabhyp := module()
export nom,type,equation,param,traceX,traceY,traceZ,info;
nom := proc() "Paraboloide hyperbolique" end proc;
type := proc() PARABHYP end proc;
equation := proc() x^2/a^2 - y^2/b^2 - z/c = 0 end proc;
param := proc(a,b,c) [u,v, c*(u^2/a^2-v^2/b^2)], u=-10..10, v=-10..10 end
proc;
traceX := proc(a,b,c,k) [k,u,c*(k^2/a^2-u^2/b^2)], u=-10..10 end proc;
traceY := proc(a,b,c,k) [u,k,c*(u^2/a^2-k^2/b^2)], u=-10..10 end proc;
traceZ := proc(a,b,c,k)
[[a*sqrt(u^2/b^2+k/c), u, k], u=-10..10 , [-a*sqrt(u^2/b^2+k/c), u, k],
u=-10..10 ]
end proc;
info := proc()
["Quadrique sans centre.","Surface réglée.",x=theta, y=lambda, z=c*(theta^2/a^2-lambda^2/b^2),
theta = -infinity..infinity, lambda = -infinity..infinity,
x*x[0]/a^2-y*y[0]/b^2-(z+z[0])/(2*c) = 0,"Dans un repère convenable, une
équation est: xy=z." ]
end proc;
end module; |
>
|
X:=spacecurve(parabhyp:-traceX(3,4,5,2),thickness=3,color=cyan): |
>
|
Y:=spacecurve(parabhyp:-traceY(3,4,5,2),thickness=3,color=yellow): |
>
|
Z:=spacecurve(op(parabhyp:-traceZ(3,4,5,2)[1..2]),thickness=3,color=red,view=[-10..10,-10..10,-10..10]),spacecurve(op(parabhyp:-traceZ(3,4,5,2)[3..4]),thickness=3,color=red,view=[-10..10,-10..10,-10..10]): |
>
|
Q:=plot3d(parabhyp:-param(3,4,5)): |
>
|
display([Q,X,Y,Z],orientation=[45,60],scaling=unconstrained,axes=boxed); |
![[Plot]](images/quadriques.htm_14.gif)
--------------------------------------------- CYLINDRE ELLIPTIQUE
-----------------------------------------------------------
>
|
cylell := module()
export nom,type,equation,param,traceX,traceY,traceZ,info;
nom := proc() "Cylindre elliptique" end proc;
type := proc() CYLELL end proc;
equation := proc() x^2/a^2 + y^2/b^2 = 1 end proc;
param := proc(a,b,c) [a*cos(u), b*sin(u), v] ,u=0..2*Pi, v=-10..10 end proc;
traceX := proc(a,b,c,k)
[[k,b*sqrt(1-k^2/a^2),c*u],u=-10/c..10/c,
[k,-b*sqrt(1-k^2/a^2),c*u],u=-10/c..10/c ]
end proc;
traceY := proc(a,b,c,k)
[[a*sqrt(1-k^2/b^2),k,c*u],u=-10/c..10/c,
[-a*sqrt(1-k^2/b^2),k,c*u],u=-10/c..10/c ]
end proc;
traceZ := proc(a,b,c,k) [a*cos(u),b*sin(u),k],u=0..2*Pi end proc;
info := proc()
["Quadrique admettant une droite des centres (l'axe du cylindre).","Surface
réglée.",x=a*cos(theta), y=b*sin(theta), z=lambda, theta = 0..2*Pi, lambda =
-infinity..infinity, x*x[0]/a^2+y*y[0]/b^2 = 1," " ]
end proc;
end module; |
>
|
X:=spacecurve(op(cylell:-traceX(3,4,5,2)[1..2]),thickness=3,color=cyan),spacecurve(op(cylell:-traceX(3,4,5,2)[3..4]),thickness=3,color=cyan): |
>
|
Y:=spacecurve(op(cylell:-traceY(3,4,5,2)[1..2]),thickness=3,color=yellow),spacecurve(op(cylell:-traceY(3,4,5,2)[3..4]),thickness=3,color=yellow): |
>
|
Z:=spacecurve(cylell:-traceZ(3,4,5,2),thickness=3,color=red): |
>
|
Q:=plot3d(cylell:-param(3,4,5)): |
>
|
display([Q,X,Y,Z],orientation=[45,60],scaling=unconstrained,axes=boxed); |
![[Plot]](images/quadriques.htm_16.gif)
--------------------------------------------- CYLINDRE HYPERBOLIQUE
-----------------------------------------------------------
>
|
cylhyp := module()
export nom,type,equation,param,traceX,traceY,traceZ,info;
nom := proc() "Cylindre hyperbolique" end proc;
type := proc() CYLHYP end proc;
equation := proc() x^2/a^2 - y^2/b^2 = 1 end proc;
param := proc(a,b,c)
[[a*cosh(u), b*sinh(u), v], u=-arcsinh(10/b)..arcsinh(10/b), v=-10..10,
[-a*cosh(u), b*sinh(u), v], u=-arcsinh(10/b)..arcsinh(10/b), v=-10..10 ]
end proc;
traceX := proc(a,b,c,k)
[[k,b*sqrt(-1+k^2/a^2),c*u],u=-10/c..10/c,
[k,-b*sqrt(-1+k^2/a^2),c*u],u=-10/c..10/c ]
end proc;
traceY := proc(a,b,c,k)
[[a*sqrt(1+k^2/b^2),k,c*u],u=-10/c..10/c,
[-a*sqrt(1+k^2/b^2),k,c*u],u=-10/c..10/c ]
end proc;
traceZ := proc(a,b,c,k)
[[a*cosh(u),b*sinh(u),k],u=-10..10,
[-a*cosh(u),b*sinh(u),k],u=-10..10 ]
end proc;
info := proc()
["Quadrique admettant une droite des centres (l'axe du cylindre).","Surface
réglée.",x=±*a*cosh(theta), y=b*sinh(theta), z=lambda, theta = -infinity..infinity,
lambda = -infinity..infinity, x*x[0]/a^2-y*y[0]/b^2 = 1," " ]
end proc;
end module; |
>
|
X:=spacecurve(op(cylhyp:-traceX(3,4,5,6)[1..2]),thickness=3,color=cyan),spacecurve(op(cylhyp:-traceX(3,4,5,6)[3..4]),thickness=3,color=cyan): |
>
|
Y:=spacecurve(op(cylhyp:-traceY(3,4,5,6)[1..2]),thickness=3,color=yellow),spacecurve(op(cylhyp:-traceY(3,4,5,6)[3..4]),thickness=3,color=yellow): |
>
|
Z:=spacecurve(op(cylhyp:-traceZ(3,4,5,6)[1..2]),thickness=3,color=red),spacecurve(op(cylhyp:-traceZ(3,4,5,6)[3..4]),thickness=3,color=red): |
>
|
Q:=plot3d(op(cylhyp:-param(3,4,5)[1..3])),plot3d(op(cylhyp:-param(3,4,5)[4..6])): |
>
|
display([Q,X,Y,Z],orientation=[45,60],scaling=unconstrained,axes=boxed,view=[-10..10,-10..10,-10..10]); |
![[Plot]](images/quadriques.htm_18.gif)
--------------------------------------------- CYLINDRE PARABOLIQUE
-----------------------------------------------------------
>
|
cylparab := module()
export nom,type,equation,param,traceX,traceY,traceZ,info;
nom := proc() "Cylindre parabolique" end proc;
type := proc() CYLPARAB end proc;
equation := proc() x^2 = 2*a*y end proc;
param := proc(a,b,c) [u, u^2/(2*a), v], u=-10..10, v=-10..10 end proc;
traceX := proc(a,b,c,k) [k,k^2/(2*a),u],u=-10..10 end proc;
traceY := proc(a,b,c,k)
[[sqrt(2*a*k),k,u],u=-10..10,
[-sqrt(2*a*k),k,u],u=-10..10 ]
end proc;
traceZ := proc(a,b,c,k) [u,u^2/(2*a),k],u=-10..10 end proc;
info := proc()
["Quadrique sans centre.","Surface réglée.",x=theta, y=theta^2/(2*a),
z=lambda, theta = -infinity..infinity, lambda = -infinity..infinity,
x*x[0]-a*(y+y[0]) = 0," " ]
end proc;
end module; |
>
|
X:=spacecurve(cylparab:-traceX(3,4,5,8),thickness=3,color=cyan): |
>
|
Y:=spacecurve(op(cylparab:-traceY(3,4,5,8)[1..2]),thickness=3,color=yellow),spacecurve(op(cylparab:-traceY(3,4,5,8)[3..4]),thickness=3,color=yellow): |
>
|
Z:=spacecurve(cylparab:-traceZ(3,4,5,8),thickness=3,color=red): |
>
|
Q:=plot3d(cylparab:-param(3,4,5)): |
>
|
display([Q,X,Y,Z],orientation=[45,60],scaling=unconstrained,axes=boxed); |
![[Plot]](images/quadriques.htm_20.gif)
------------------------------------------------------ GESTION DES OPTIONS
--------------------------------------------------------------------------
>
|
optionAxes:=proc()
MesOptions[1]
end proc:
|
>
|
optionRepere:=proc()
MesOptions[2]
end proc:
|
>
|
optionProj:=proc()
MesOptions[3]
end proc:
|
>
|
optionOmbre:=proc()
MesOptions[4]
end proc:
|
>
|
optionLumiere:=proc()
MesOptions[5]
end proc:
|
>
|
optionStyle:=proc()
MesOptions[6]
end proc:
|
>
|
optionType:=proc()
MesOptions[7]
end proc:
|
|
MiseAJourOptions:=proc()
global MesOptions;
local opt,equation,visibleSliders;
opt:=NULL:visibleSliders:=[true,true]:
# option Axes
if Maplets:-Tools:-Get('MenuAxes1'('value')) then opt:=opt,NORMAL end if:
if Maplets:-Tools:-Get('MenuAxes2'('value')) then opt:=opt,BOXED end if:
if Maplets:-Tools:-Get('MenuAxes3'('value')) then opt:=opt,FRAMED end if:
if Maplets:-Tools:-Get('MenuAxes4'('value')) then opt:=opt,NONE end if:
# option Repère
if Maplets:-Tools:-Get('MenuRepere1'('value')) then opt:=opt,CONSTRAINED
end if:
if Maplets:-Tools:-Get('MenuRepere2'('value')) then opt:=opt,UNCONSTRAINED
end if:
# option Projection
if Maplets:-Tools:-Get('MenuProj1'('value')) then opt:=opt,NORMAL end if:
if Maplets:-Tools:-Get('MenuProj2'('value')) then opt:=opt,ORTHOGONAL end
if:
if Maplets:-Tools:-Get('MenuProj3'('value')) then opt:=opt,FISHEYE end if:
# option Ombre
if Maplets:-Tools:-Get('MenuOmbre1'('value')) then opt:=opt,XYZ end if:
if Maplets:-Tools:-Get('MenuOmbre2'('value')) then opt:=opt,XY end if:
if Maplets:-Tools:-Get('MenuOmbre3'('value')) then opt:=opt,Z end if:
if Maplets:-Tools:-Get('MenuOmbre4'('value')) then opt:=opt,ZGRAYSCALE end
if:
if Maplets:-Tools:-Get('MenuOmbre5'('value')) then opt:=opt,ZHUE end if:
if Maplets:-Tools:-Get('MenuOmbre6'('value')) then opt:=opt,NONE end if:
# option Lumière
if Maplets:-Tools:-Get('MenuLumiere1'('value')) then opt:=opt,light1 end
if:
if Maplets:-Tools:-Get('MenuLumiere2'('value')) then opt:=opt,light2 end
if:
if Maplets:-Tools:-Get('MenuLumiere3'('value')) then opt:=opt,light3 end
if:
if Maplets:-Tools:-Get('MenuLumiere4'('value')) then opt:=opt,light4 end
if:
if Maplets:-Tools:-Get('MenuLumiere5'('value')) then opt:=opt,NONE end if:
# option Style
if Maplets:-Tools:-Get('MenuStyle1'('value')) then opt:=opt,PATCH end if:
if Maplets:-Tools:-Get('MenuStyle2'('value')) then opt:=opt,HIDDEN end if:
if Maplets:-Tools:-Get('MenuStyle3'('value')) then opt:=opt,WIREFRAME end
if:
if Maplets:-Tools:-Get('MenuStyle4'('value')) then opt:=opt,CONTOUR end if:
if Maplets:-Tools:-Get('MenuStyle5'('value')) then opt:=opt,PATCHNOGRID end
if:
if Maplets:-Tools:-Get('MenuStyle6'('value')) then opt:=opt,PATCHCONTOUR
end if:
if Maplets:-Tools:-Get('MenuStyle7'('value')) then opt:=opt,LINE end if:
if Maplets:-Tools:-Get('MenuStyle8'('value')) then opt:=opt,POINT end if:
# option Type de Quadrique et fenetre Information
if Maplets:-Tools:-Get('MenuType1'('value')) then
opt:=opt,ellipsoide:-type(): equation:=ellipsoide:-equation():
end if:
if Maplets:-Tools:-Get('MenuType2'('value')) then
opt:=opt,hyp1:-type(): equation:=hyp1:-equation():
end if:
if Maplets:-Tools:-Get('MenuType3'('value')) then
opt:=opt,hyp2:-type(): equation:=hyp2:-equation():
end if:
if Maplets:-Tools:-Get('MenuType4'('value')) then
opt:=opt,cone:-type(): equation:=cone:-equation():
end if:
if Maplets:-Tools:-Get('MenuType5'('value')) then
opt:=opt,parabell:-type(): equation:=parabell:-equation():
end if:
if Maplets:-Tools:-Get('MenuType6'('value')) then
opt:=opt,parabhyp:-type(): equation:=parabhyp:-equation():
end if:
if Maplets:-Tools:-Get('MenuType7'('value')) then
opt:=opt,cylell:-type(): equation:=cylell:-equation(): visibleSliders:=[true,false]:
end if:
if Maplets:-Tools:-Get('MenuType8'('value')) then
opt:=opt,cylhyp:-type(): equation:=cylhyp:-equation(): visibleSliders:=[true,false]:
end if:
if Maplets:-Tools:-Get('MenuType9'('value')) then
opt:=opt,cylparab:-type(): equation:=cylparab:-equation(): visibleSliders:=[false,false]:
end if:
# mise à jour de l'équation et des Sliders:
Maplets:-Tools:-Set('MMLV'('value')=MathML[Export](equation) ):
Maplets:-Tools:-Set('bLabel'('visible')= visibleSliders[1]):
Maplets:-Tools:-Set('cLabel'('visible')= visibleSliders[2]):
Maplets:-Tools:-Set('b'('visible')= visibleSliders[1]):
Maplets:-Tools:-Set('c'('visible')= visibleSliders[2]):
MesOptions:=[opt]:
end proc:
|
>
|
MiseAJourInfo:=proc()
# option Type de Quadrique et fenetre Information
if Maplets:-Tools:-Get('MenuType1'('value')) then
Maplets:-Tools:-Set('Titre'('caption')=ellipsoide:-nom()):
Maplets:-Tools:-Set('MMLV1'('value')=MathML[Export](ellipsoide:-equation())):
Maplets:-Tools:-Set('MMLV2'('value')=MathML[Export](ellipsoide:-info()[3])):
Maplets:-Tools:-Set('MMLV3'('value')=MathML[Export](ellipsoide:-info()[4])):
Maplets:-Tools:-Set('MMLV4'('value')=MathML[Export](ellipsoide:-info()[5])):
Maplets:-Tools:-Set('MMLV5'('value')=MathML[Export](ellipsoide:-info()[6])):
Maplets:-Tools:-Set('MMLV6'('value')=MathML[Export](ellipsoide:-info()[7])):
Maplets:-Tools:-Set('MMLV7'('value')=MathML[Export](ellipsoide:-info()[8])):
Maplets:-Tools:-Set('Centre'('caption')=ellipsoide:-info()[1]):
Maplets:-Tools:-Set('Reglee'('caption')=ellipsoide:-info()[2]):
Maplets:-Tools:-Set('Rem'('caption')=ellipsoide:-info()[9]):
end if:
if Maplets:-Tools:-Get('MenuType2'('value')) then
Maplets:-Tools:-Set('Titre'('caption')=hyp1:-nom()):
Maplets:-Tools:-Set('MMLV1'('value')=MathML[Export](hyp1:-equation())):
Maplets:-Tools:-Set('MMLV2'('value')=MathML[Export](hyp1:-info()[3])):
Maplets:-Tools:-Set('MMLV3'('value')=MathML[Export](hyp1:-info()[4])):
Maplets:-Tools:-Set('MMLV4'('value')=MathML[Export](hyp1:-info()[5])):
Maplets:-Tools:-Set('MMLV5'('value')=MathML[Export](hyp1:-info()[6])):
Maplets:-Tools:-Set('MMLV6'('value')=MathML[Export](hyp1:-info()[7])):
Maplets:-Tools:-Set('MMLV7'('value')=MathML[Export](hyp1:-info()[8])):
Maplets:-Tools:-Set('Centre'('caption')=hyp1:-info()[1]):
Maplets:-Tools:-Set('Reglee'('caption')=hyp1:-info()[2]):
Maplets:-Tools:-Set('Rem'('caption')=hyp1:-info()[9]):
end if:
if Maplets:-Tools:-Get('MenuType3'('value')) then
Maplets:-Tools:-Set('Titre'('caption')=hyp2:-nom()):
Maplets:-Tools:-Set('MMLV1'('value')=MathML[Export](hyp2:-equation())):
Maplets:-Tools:-Set('MMLV2'('value')=MathML[Export](hyp2:-info()[3])):
Maplets:-Tools:-Set('MMLV3'('value')=MathML[Export](hyp2:-info()[4])):
Maplets:-Tools:-Set('MMLV4'('value')=MathML[Export](hyp2:-info()[5])):
Maplets:-Tools:-Set('MMLV5'('value')=MathML[Export](hyp2:-info()[6])):
Maplets:-Tools:-Set('MMLV6'('value')=MathML[Export](hyp2:-info()[7])):
Maplets:-Tools:-Set('MMLV7'('value')=MathML[Export](hyp2:-info()[8])):
Maplets:-Tools:-Set('Centre'('caption')=hyp2:-info()[1]):
Maplets:-Tools:-Set('Reglee'('caption')=hyp2:-info()[2]):
Maplets:-Tools:-Set('Rem'('caption')=hyp2:-info()[9]):
end if:
if Maplets:-Tools:-Get('MenuType4'('value')) then
Maplets:-Tools:-Set('Titre'('caption')=cone:-nom()):
Maplets:-Tools:-Set('MMLV1'('value')=MathML[Export](cone:-equation())):
Maplets:-Tools:-Set('MMLV2'('value')=MathML[Export](cone:-info()[3])):
Maplets:-Tools:-Set('MMLV3'('value')=MathML[Export](cone:-info()[4])):
Maplets:-Tools:-Set('MMLV4'('value')=MathML[Export](cone:-info()[5])):
Maplets:-Tools:-Set('MMLV5'('value')=MathML[Export](cone:-info()[6])):
Maplets:-Tools:-Set('MMLV6'('value')=MathML[Export](cone:-info()[7])):
Maplets:-Tools:-Set('MMLV7'('value')=MathML[Export](cone:-info()[8])):
Maplets:-Tools:-Set('Centre'('caption')=cone:-info()[1]):
Maplets:-Tools:-Set('Reglee'('caption')=cone:-info()[2]):
Maplets:-Tools:-Set('Rem'('caption')=cone:-info()[9]):
end if:
if Maplets:-Tools:-Get('MenuType5'('value')) then
Maplets:-Tools:-Set('Titre'('caption')=parabell:-nom()):
Maplets:-Tools:-Set('MMLV1'('value')=MathML[Export](parabell:-equation())):
Maplets:-Tools:-Set('MMLV2'('value')=MathML[Export](parabell:-info()[3])):
Maplets:-Tools:-Set('MMLV3'('value')=MathML[Export](parabell:-info()[4])):
Maplets:-Tools:-Set('MMLV4'('value')=MathML[Export](parabell:-info()[5])):
Maplets:-Tools:-Set('MMLV5'('value')=MathML[Export](parabell:-info()[6])):
Maplets:-Tools:-Set('MMLV6'('value')=MathML[Export](parabell:-info()[7])):
Maplets:-Tools:-Set('MMLV7'('value')=MathML[Export](parabell:-info()[8])):
Maplets:-Tools:-Set('Centre'('caption')=parabell:-info()[1]):
Maplets:-Tools:-Set('Reglee'('caption')=parabell:-info()[2]):
Maplets:-Tools:-Set('Rem'('caption')=parabell:-info()[9]):
end if:
if Maplets:-Tools:-Get('MenuType6'('value')) then
Maplets:-Tools:-Set('Titre'('caption')=parabhyp:-nom()):
Maplets:-Tools:-Set('MMLV1'('value')=MathML[Export](parabhyp:-equation())):
Maplets:-Tools:-Set('MMLV2'('value')=MathML[Export](parabhyp:-info()[3])):
Maplets:-Tools:-Set('MMLV3'('value')=MathML[Export](parabhyp:-info()[4])):
Maplets:-Tools:-Set('MMLV4'('value')=MathML[Export](parabhyp:-info()[5])):
Maplets:-Tools:-Set('MMLV5'('value')=MathML[Export](parabhyp:-info()[6])):
Maplets:-Tools:-Set('MMLV6'('value')=MathML[Export](parabhyp:-info()[7])):
Maplets:-Tools:-Set('MMLV7'('value')=MathML[Export](parabhyp:-info()[8])):
Maplets:-Tools:-Set('Centre'('caption')=parabhyp:-info()[1]):
Maplets:-Tools:-Set('Reglee'('caption')=parabhyp:-info()[2]):
Maplets:-Tools:-Set('Rem'('caption')=parabhyp:-info()[9]):
end if:
if Maplets:-Tools:-Get('MenuType7'('value')) then
Maplets:-Tools:-Set('Titre'('caption')=cylell:-nom()):
Maplets:-Tools:-Set('MMLV1'('value')=MathML[Export](cylell:-equation())):
Maplets:-Tools:-Set('MMLV2'('value')=MathML[Export](cylell:-info()[3])):
Maplets:-Tools:-Set('MMLV3'('value')=MathML[Export](cylell:-info()[4])):
Maplets:-Tools:-Set('MMLV4'('value')=MathML[Export](cylell:-info()[5])):
Maplets:-Tools:-Set('MMLV5'('value')=MathML[Export](cylell:-info()[6])):
Maplets:-Tools:-Set('MMLV6'('value')=MathML[Export](cylell:-info()[7])):
Maplets:-Tools:-Set('MMLV7'('value')=MathML[Export](cylell:-info()[8])):
Maplets:-Tools:-Set('Centre'('caption')=cylell:-info()[1]):
Maplets:-Tools:-Set('Reglee'('caption')=cylell:-info()[2]):
Maplets:-Tools:-Set('Rem'('caption')=cylell:-info()[9]):
end if:
if Maplets:-Tools:-Get('MenuType8'('value')) then
Maplets:-Tools:-Set('Titre'('caption')=cylhyp:-nom()):
Maplets:-Tools:-Set('MMLV1'('value')=MathML[Export](cylhyp:-equation())):
Maplets:-Tools:-Set('MMLV2'('value')=MathML[Export](cylhyp:-info()[3])):
Maplets:-Tools:-Set('MMLV3'('value')=MathML[Export](cylhyp:-info()[4])):
Maplets:-Tools:-Set('MMLV4'('value')=MathML[Export](cylhyp:-info()[5])):
Maplets:-Tools:-Set('MMLV5'('value')=MathML[Export](cylhyp:-info()[6])):
Maplets:-Tools:-Set('MMLV6'('value')=MathML[Export](cylhyp:-info()[7])):
Maplets:-Tools:-Set('MMLV7'('value')=MathML[Export](cylhyp:-info()[8])):
Maplets:-Tools:-Set('Centre'('caption')=cylhyp:-info()[1]):
Maplets:-Tools:-Set('Reglee'('caption')=cylhyp:-info()[2]):
Maplets:-Tools:-Set('Rem'('caption')=cylhyp:-info()[9]):
end if:
if Maplets:-Tools:-Get('MenuType9'('value')) then
Maplets:-Tools:-Set('Titre'('caption')=cylparab:-nom()):
Maplets:-Tools:-Set('MMLV1'('value')=MathML[Export](cylparab:-equation())):
Maplets:-Tools:-Set('MMLV2'('value')=MathML[Export](cylparab:-info()[3])):
Maplets:-Tools:-Set('MMLV3'('value')=MathML[Export](cylparab:-info()[4])):
Maplets:-Tools:-Set('MMLV4'('value')=MathML[Export](cylparab:-info()[5])):
Maplets:-Tools:-Set('MMLV5'('value')=MathML[Export](cylparab:-info()[6])):
Maplets:-Tools:-Set('MMLV6'('value')=MathML[Export](cylparab:-info()[7])):
Maplets:-Tools:-Set('MMLV7'('value')=MathML[Export](cylparab:-info()[8])):
Maplets:-Tools:-Set('Centre'('caption')=cylparab:-info()[1]):
Maplets:-Tools:-Set('Reglee'('caption')=cylparab:-info()[2]):
Maplets:-Tools:-Set('Rem'('caption')=cylparab:-info()[9]):
end if
end proc:
|
-------------------------------------------- GRAPHE DE LA QUADRIQUE ET DES
SECTIONS ---------------------------------------------------------
>
|
Quadrique:= proc(a, b,
c, vView, hView)
local type,opt;
type:=optionType();
opt:=axes=optionAxes(), orientation=[hView, vView],scaling=optionRepere() ,
projection=optionProj(), shading=optionOmbre(), lightmodel=optionLumiere(),
style=optionStyle(), titlefont = [TIMES, BOLD, 14]:
if type=ELLIPSOIDE then
plot3d(ellipsoide:-param(a,b,c), opt, title=ellipsoide:-nom())
elif type=HYP1 then
plot3d(hyp1:-param(a,b,c), opt, title=hyp1:-nom())
elif type=HYP2 then
display( [plot3d(op(hyp2:-param(a,b,c)[1..3])),plot3d(op(hyp2:-param(a,b,c)[4..6]))],
opt, title=hyp2:-nom())
elif type=CONE then
plot3d(cone:-param(a,b,c), opt, title=cone:-nom())
elif type=PARABELL then
plot3d(parabell:-param(a,b,c), opt, title=parabell:-nom())
elif type=PARABHYP then
plot3d(parabhyp:-param(a,b,c), opt, title=parabhyp:-nom())
elif type=CYLELL then
plot3d(cylell:-param(a,b,c), opt, title=cylell:-nom())
elif type=CYLHYP then
display( [plot3d(op(cylhyp:-param(a,b,c)[1..3])),plot3d(op(cylhyp:-param(a,b,c)[4..6]))],
opt, title=cylhyp:-nom())
else # CYLPARAB
plot3d(cylparab:-param(a,b,c), opt, title=cylparab:-nom())
end if;
end proc:
|
>
|
QuadSectionX := proc(k,
a, b, c, hV, vV)
global GrapheX;
local x,type;
type:=optionType();
if type=ELLIPSOIDE then
x:=spacecurve(ellipsoide:-traceX(a,b,c,k), thickness=3, color=cyan),
spacecurve([t,0,0], t=-a..a,
color=white);
elif type=HYP1 then
x:=spacecurve(op(hyp1:-traceX(a,b,c,k)[1..2]),thickness=3,color=cyan),spacecurve(op(hyp1:-traceX(a,b,c,k)[3..4]),
thickness=3, color=cyan), spacecurve([t,0,0], t=-a..a, color=white);
elif type=HYP2 then
x:=spacecurve(op(hyp2:-traceX(a,b,c,k)[1..2]),thickness=3,color=cyan),spacecurve(op(hyp2:-traceX(a,b,c,k)[3..4]),
thickness=3, color=cyan), spacecurve([t,0,0], t=-a..a, color=white);
elif type=CONE then
x:=spacecurve(op(cone:-traceX(a,b,c,k)[1..2]),thickness=3,color=cyan),spacecurve(op(cone:-traceX(a,b,c,k)[3..4]),
thickness=3, color=cyan), spacecurve([t,0,0], t=-a..a, color=white);
elif type=PARABELL then
x:=spacecurve(op(parabell:-traceX(a,b,c,k)[1..2]),thickness=3,color=cyan),spacecurve(op(parabell:-traceX(a,b,c,k)[3..4]),
thickness=3, color=cyan), spacecurve([t,0,0], t=-a..a, color=white);
elif type=PARABHYP then
x:=spacecurve(parabhyp:-traceX(a,b,c,k), thickness=3, color=cyan),
spacecurve([t,0,0], t=-a..a,
color=white);
elif type=CYLELL then
x:=spacecurve(op(cylell:-traceX(a,b,c,k)[1..2]),thickness=3,color=cyan),spacecurve(op(cylell:-traceX(a,b,c,k)[3..4]),
thickness=3, color=cyan), spacecurve([t,0,0], t=-a..a, color=white);
elif type=CYLHYP then
x:=spacecurve(op(cylhyp:-traceX(a,b,c,k)[1..2]),thickness=3,color=cyan),spacecurve(op(cylhyp:-traceX(a,b,c,k)[3..4]),
thickness=3, color=cyan), spacecurve([t,0,0], t=-a..a, color=white);
else # CYLPARAB
x:=spacecurve(cylparab:-traceX(a,b,c,k), thickness=3, color=cyan),
spacecurve([t,0,0], t=-a..a,
color=white);
end if;
GrapheX:=display ([x], axes=optionAxes() , orientation=[hV,vV],scaling=optionRepere()
, projection=optionProj(), shading=optionOmbre(), lightmodel=optionLumiere(),
style=optionStyle()):
end proc:
|
>
|
QuadSectionY := proc (k,
a, b, c, hV,vV)
global GrapheY;
local y,type;
type:=optionType();
if type=ELLIPSOIDE then
y:=spacecurve(ellipsoide:-traceY(a,b,c,k), thickness=3, color=yellow),
spacecurve([t,0,0], t=-a..a,
color=white);
elif type=HYP1 then
y:=spacecurve(op(hyp1:-traceY(a,b,c,k)[1..2]),thickness=3,color=yellow),spacecurve(op(hyp1:-traceY(a,b,c,k)[3..4]),
thickness=3, color=yellow), spacecurve([t,0,0], t=-a..a, color=white);
elif type=HYP2 then
y:=spacecurve(op(hyp2:-traceY(a,b,c,k)[1..2]),thickness=3,color=yellow),spacecurve(op(hyp2:-traceY(a,b,c,k)[3..4]),
thickness=3, color=yellow), spacecurve([t,0,0], t=-a..a, color=white);
elif type=CONE then
y:=spacecurve(op(cone:-traceY(a,b,c,k)[1..2]),thickness=3,color=yellow),spacecurve(op(cone:-traceY(a,b,c,k)[3..4]),thickness=3,color=yellow),
spacecurve([t,0,0], t=-a..a, color=white);
elif type=PARABELL then
y:=spacecurve(op(parabell:-traceY(a,b,c,k)[1..2]),thickness=3,color=yellow),spacecurve(op(parabell:-traceY(a,b,c,k)[3..4]),thickness=3,color=yellow),
spacecurve([t,0,0], t=-a..a, color=white);
elif type=PARABHYP then
y:=spacecurve(parabhyp:-traceY(a,b,c,k), thickness=3, color=yellow),
spacecurve([t,0,0], t=-a..a,
color=white);
elif type=CYLELL then
y:=spacecurve(op(cylell:-traceY(a,b,c,k)[1..2]),thickness=3,color=yellow),spacecurve(op(cylell:-traceY(a,b,c,k)[3..4]),
thickness=3, color=yellow), spacecurve([t,0,0], t=-a..a, color=white);
elif type=CYLHYP then
y:=spacecurve(op(cylhyp:-traceY(a,b,c,k)[1..2]),thickness=3,color=yellow),spacecurve(op(cylhyp:-traceY(a,b,c,k)[3..4]),
thickness=3, color=yellow), spacecurve([t,0,0], t=-a..a, color=white);
else #CYLPARAB
y:=spacecurve(op(cylparab:-traceY(a,b,c,k)[1..2]),thickness=3,color=yellow),spacecurve(op(cylparab:-traceY(a,b,c,k)[3..4]),
thickness=3, color=yellow), spacecurve([t,0,0], t=-a..a, color=white);
end if;
GrapheY:=display ([y], axes=optionAxes() , orientation=[hV,vV],scaling=optionRepere()
, projection=optionProj(),shading=optionOmbre(), lightmodel=optionLumiere(),
style=optionStyle()):
end proc:
|
>
|
QuadSectionZ := proc (k,
a, b, c, hV,vV)
global GrapheZ;
local z,type,vw;
type:=optionType();
vw:=view=[-10..10,-10..10,-10..10];
if type=ELLIPSOIDE then
z:=spacecurve(ellipsoide:-traceZ(a,b,c,k), thickness=3, color=red),
spacecurve([t,0,0], t=-a..a,
color=white);
elif type=HYP1 then
z:=spacecurve(hyp1:-traceZ(a,b,c,k), thickness=3, color=red), spacecurve([t,0,0],
t=-a..a,
color=white);
elif type=HYP2 then
z:=spacecurve(hyp2:-traceZ(a,b,c,k), thickness=3, color=red), spacecurve([t,0,0],
t=-a..a,
color=white);
elif type=CONE then
z:=spacecurve(cone:-traceZ(a,b,c,k), thickness=3, color=red), spacecurve([t,0,0],
t=-a..a,
color=white);
elif type=PARABELL then
z:=spacecurve(parabell:-traceZ(a,b,c,k), thickness=3, color=red), spacecurve([t,0,0],
t=-a..a,
color=white);
elif type=PARABHYP then
z:=spacecurve(op(parabhyp:-traceZ(a,b,c,k)[1..2]),thickness=3,color=red,vw),spacecurve(op(parabhyp:-traceZ(a,b,c,k)[3..4]),thickness=3,color=red,vw),
spacecurve([t,0,0], t=-a..a, color=white);
elif type=CYLELL then
z:=spacecurve(cylell:-traceZ(a,b,c,k), thickness=3, color=red), spacecurve([t,0,0],
t=-a..a,
color=white);
elif type=CYLHYP then
z:=spacecurve(op(cylhyp:-traceZ(a,b,c,k)[1..2]),thickness=3,color=red,vw),spacecurve(op(cylhyp:-traceZ(a,b,c,k)[3..4]),thickness=3,color=red,vw),
spacecurve([t,0,0], t=-a..a, color=white);
else # CYLPARAB
z:=spacecurve(cylparab:-traceZ(a,b,c,k), thickness=3, color=red), spacecurve([t,0,0],
t=-a..a,
color=white);
end if;
GrapheZ:=display ([z], axes=optionAxes() , orientation=[hV,vV],scaling=optionRepere()
, projection=optionProj(),shading=optionOmbre(), lightmodel=optionLumiere(),
style=optionStyle()):
end proc:
|
>
|
Vide:= proc(a,hV,vV)
display([spacecurve([t,0,0], t=-a..a, color = white)],axes=optionAxes() ,
orientation=[hV,vV],scaling=optionRepere() , projection=optionProj(),
shading=optionOmbre(), lightmodel=optionLumiere(), style=optionStyle())
end proc:
|
>
|
TraceQuadSectionX:=proc(xsect,valX,a,b,c,
hV,vV)
if xsect then
QuadSectionX(valX,a,b,c, hV,vV)
else
Vide(a, hV,vV)
end if;
end proc:
|
>
|
TraceQuadSectionY:=proc(ysect,valY,a,b,c,
hV,vV)
if ysect then
QuadSectionY(valY,a,b,c, hV,vV)
else
Vide(a, hV,vV):
end if;
end proc:
|
>
|
TraceQuadSectionZ:=proc(zsect,valZ,a,b,c,
hV,vV)
if zsect then
QuadSectionZ(valZ,a,b,c, hV,vV)
else
Vide(a, hV,vV)
end if;
end proc:
|
-------------------------------------------- GESTIONNAIRE D'ERREURS
--------------------------------------------------------
>
|
TraceQuadrique :=
proc(a, b, c,vView, hView, xsection, ysection, zsection)
global GrapheQ;
try
GrapheQ:=display(Quadrique(a, b, c, vView, hView),xsection,ysection,zsection):
catch:
display(textplot3d([5,5,5,"Erreur dans les paramètres."]), axes=NONE,
view=[-10..10, -10..10, -10..10], color=RED, titlefont = [TIMES, BOLD, 14]):
end try;
end proc:
|
---------------------------------------------------------- ENREGISTRER AU
FORMAT .GIF ---------------------------------
>
|
Enregistrer := proc()
global nomFichier,nouvGraphe,GrapheQ,GrapheX,GrapheY,GrapheZ;
if Maplets:-Tools:-Get('RB1'('value')) then nouvGraphe:=GrapheQ end if:
if Maplets:-Tools:-Get('RB2'('value')) then nouvGraphe:=GrapheX end if:
if Maplets:-Tools:-Get('RB3'('value')) then nouvGraphe:=GrapheY end if:
if Maplets:-Tools:-Get('RB4'('value')) then nouvGraphe:=GrapheZ end if:
if assigned( nomFichier ) then
plotsetup( 'gif', 'plotoutput' = nomFichier );
print( nouvGraphe );
plotsetup( 'default' );
nomFichier:='nomFichier';
else
EnregSous();
end if;
end proc:
|
>
|
EnregSous := proc()
global nomFichier;
local nnomFichier;
try
nnomFichier := Maplets:-Examples:-GetFile(
'title' = "Enregistrer sous",
'filefilter' = "gif",
'approvecaption' = "Enregistrer"
);
catch:
return;
end try;
if nnomFichier[-4..-1] = ".gif" then
nomFichier := nnomFichier;
else
nomFichier := cat( nnomFichier, ".gif" );
end if;
Enregistrer();
end proc:
|
-------------------------------------------- MAPLET QUADRIQUES
--------------------------------------------------------------
>
|
MesOptions := [NORMAL,
CONSTRAINED, NORMAL, XYZ, light1, PATCH, ELLIPSOIDE]:
nomFichier:='nomFichier': nouvGraphe:=NULL: GrapheQ:=NULL:
GrapheX:=NULL: GrapheY:=NULL: GrapheZ:=NULL:
|
>
|
QuadriquesMaplet :=
Maplet(
'onstartup' = RunWindow('FenPrincipale'),
Font['F1']('family'="TIMES", 'bold'='false', 'italic'='false', size=12),
Font['F2']('family'="TIMES", 'bold'='true', 'italic'='false', size=18),
Font['F3']('family'="TIMES", 'bold'='true', 'italic'='false', size=12),
ButtonGroup['Groupe0'](), ButtonGroup['Groupe1'](), ButtonGroup['Groupe2'](),
ButtonGroup['Groupe3'](), ButtonGroup['Groupe4'](), ButtonGroup['Groupe5'](),
ButtonGroup['Groupe6'](), ButtonGroup['Groupe7'](),
Window['FenPrincipale']('title' = "Quadriques", 'menubar'='Menu', 'layout'
= 'PrincipalLayout' ),
Window['FenInfo']('title' = "Information", 'layout' = 'InfoLayout', width=500,
height=650),
Window['FenDesc']('title' = "Description", 'layout' = 'DescLayout', width=400,
height=500),
Window['FenAideEnreg']('title' = "Aide sur Enregistrer", 'layout' = 'AideEnregLayout',
width=400, height=500),
Window['FenEnregistrer']('title' = "Enregistrer", 'layout' = 'EnregistrerLayout',
width=400, height=250),
Window['FenApropos']('title' = "A propos", 'layout' = 'AproposLayout',
width=400, height=300),
MenuBar['Menu'](
Menu("Type",
RadioButtonMenuItem['MenuType1']("Ellipsoïde",'value'=true,'group'='Groupe0','onclick'='maj'),
RadioButtonMenuItem['MenuType2']("Hyperboloïde à une
nappe",'group'='Groupe0','onclick'='maj'),
RadioButtonMenuItem['MenuType3']("Hyperboloïde à deux
nappes",'group'='Groupe0','onclick'='maj'),
RadioButtonMenuItem['MenuType4']("Cône elliptique",'group'='Groupe0','onclick'='maj'),
RadioButtonMenuItem['MenuType5']("Paraboloïde
elliptique",'group'='Groupe0','onclick'='maj'),
RadioButtonMenuItem['MenuType6']("Paraboloïde
hyperbolique",'group'='Groupe0','onclick'='maj'),
RadioButtonMenuItem['MenuType7']("Cylindre
elliptique",'group'='Groupe0','onclick'='maj'),
RadioButtonMenuItem['MenuType8']("Cylindre
hyperbolique",'group'='Groupe0','onclick'='maj'),
RadioButtonMenuItem['MenuType9']("Cylindre
parabolique",'group'='Groupe0','onclick'='maj'),
MenuSeparator(),
MenuItem("Information sur cette quadrique", onclick='inform')
),
Menu("Axes",
RadioButtonMenuItem['MenuAxes1']("Normal",'value'=true,'group'='Groupe1','onclick'='maj'),
RadioButtonMenuItem['MenuAxes2']("Boxed",'group'='Groupe1','onclick'='maj'),
RadioButtonMenuItem['MenuAxes3']("Framed",'group'='Groupe1','onclick'='maj'),
RadioButtonMenuItem['MenuAxes4']("None",'group'='Groupe1','onclick'='maj')
),
Menu("Repère",
RadioButtonMenuItem['MenuRepere1']("Constrained",'value'=true,'group'='Groupe2','onclick'='maj')
,
RadioButtonMenuItem['MenuRepere2']("Unconstrained",'group'='Groupe2','onclick'='maj')
),
Menu("Projection",
RadioButtonMenuItem['MenuProj1']("Normal",'value'=true,'group'='Groupe3','onclick'='maj'),
RadioButtonMenuItem['MenuProj2']("Orthogonal",'group'='Groupe3','onclick'='maj'),
RadioButtonMenuItem['MenuProj3']("Fisheye",'group'='Groupe3','onclick'='maj')
),
Menu("Ombre",
RadioButtonMenuItem['MenuOmbre1']("XYZ",'value'=true,'group'='Groupe4','onclick'='maj'),
RadioButtonMenuItem['MenuOmbre2']("XY",'group'='Groupe4','onclick'='maj'),
RadioButtonMenuItem['MenuOmbre3']("Z",'group'='Groupe4','onclick'='maj'),
RadioButtonMenuItem['MenuOmbre4']("ZGRAYSCALE ",'group'='Groupe4','onclick'='maj'),
RadioButtonMenuItem['MenuOmbre5']("ZHUE",'group'='Groupe4','onclick'='maj'),
RadioButtonMenuItem['MenuOmbre6']("None",'group'='Groupe4','onclick'='maj')
),
Menu("Lumière",
RadioButtonMenuItem['MenuLumiere1']("Light1",'value'=true,'group'='Groupe5','onclick'='maj'),
RadioButtonMenuItem['MenuLumiere2']("Light2", 'group'='Groupe5','onclick'='maj'),
RadioButtonMenuItem['MenuLumiere3']("Light3",'group'='Groupe5','onclick'='maj'),
RadioButtonMenuItem['MenuLumiere4']("Light4",'group'='Groupe5','onclick'='maj'),
RadioButtonMenuItem['MenuLumiere5']("None",'group'='Groupe5','onclick'='maj')
),
Menu("Style",
RadioButtonMenuItem['MenuStyle1']("Patch",value=true,'group'='Groupe6','onclick'='maj'),
RadioButtonMenuItem['MenuStyle2']("Hidden",'group'='Groupe6','onclick'='maj'),
RadioButtonMenuItem['MenuStyle3']("WireFrame",'group'='Groupe6','onclick'='maj'),
RadioButtonMenuItem['MenuStyle4']("Contour",'group'='Groupe6','onclick'='maj'),
RadioButtonMenuItem['MenuStyle5']("PatchNoGrid",'group'='Groupe6','onclick'='maj'),
RadioButtonMenuItem['MenuStyle6']("PatchContour",'group'='Groupe6','onclick'='maj'),
RadioButtonMenuItem['MenuStyle7']("Line",'group'='Groupe6','onclick'='maj'),
RadioButtonMenuItem['MenuStyle8']("Point",'group'='Groupe6','onclick'='maj')
),
Menu("Aide",
MenuItem("Description", onclick=RunWindow('FenDesc')),
MenuItem("Enregistrer", onclick=RunWindow('FenAideEnreg')),
MenuItem("A propos", onclick=RunWindow('FenApropos'))
)
), # fin MenuBar['Menu']
Action['maj'](
Evaluate('function' = "MiseAJourOptions"),
Evaluate('PlotterQ'='TraceQuadrique(
'a','b','c','phi','theta' ,
TraceQuadSectionX('boolX','valX','a','b','c','phi','theta'),
TraceQuadSectionY('boolY','valY','a','b','c','phi','theta'),
TraceQuadSectionZ('boolZ','valZ','a','b','c','phi','theta')
)') ,
Evaluate('PlotterX'='display(QuadSectionX('valX','a','b','c',0,90))') ,
Evaluate('PlotterY'='display(QuadSectionY('valY','a','b','c',90,90))'),
Evaluate('PlotterZ'='display(QuadSectionZ('valZ','a','b','c',90,0))')
),
Action['inform'](
Evaluate('function' = "MiseAJourInfo"),RunWindow('FenInfo')
),
BoxLayout['InfoLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=0,
Label['Titre']('font'='F2', 'caption'=ellipsoide:-nom() ),
BoxRow('inset'=0, 'spacing'=0, 'border'=false,
MathMLViewer['MMLV1']('height' = 70, 'width' = 200,'value'=MathML[Export](ellipsoide:-equation()))
),
Label['Centre']( 'caption'=ellipsoide:-info()[1]),
Label['Reglee']( 'caption'=ellipsoide:-info()[2]),
Label['Rem'](),
VerticalGlue(),
Label('font'='F3', 'caption'="Paramétrage:"),
BoxLayout(
BoxColumn(
MathMLViewer['MMLV2']('height' = 70, 'width' = 200,'value'=MathML[Export](ellipsoide:-info()[3])),
MathMLViewer['MMLV3']('height' = 70, 'width' = 200,'value'=MathML[Export](ellipsoide:-info()[4])),
MathMLViewer['MMLV4']('height' = 70, 'width' = 200,'value'=MathML[Export](ellipsoide:-info()[5]))
),
BoxColumn(
MathMLViewer['MMLV5']('height' = 70, 'width' = 200,'value'=MathML[Export](ellipsoide:-info()[6])),
MathMLViewer['MMLV6']('height' = 70, 'width' = 200,'value'=MathML[Export](ellipsoide:-info()[7]))
)
),
Label('font'='F3', 'caption'="Equation du plan tangent au point M0 (x0,
y0, z0):"),
BoxRow('inset'=0, 'spacing'=0, 'border'=false,
MathMLViewer['MMLV7']('height' = 70, 'width' = 200,'value'=MathML[Export](ellipsoide:-info()[8]))
),
BoxColumn(VerticalGlue(),VerticalGlue()),
Button("Fermer", CloseWindow('FenInfo'))
) ),
BoxLayout['DescLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=20, ck,
'editable'='false', 'value'=
"Ce maplet donne la représentation graphique des 9 types de
quadriques.\nPour cela, cliquer le bouton ""Dessiner"" ou changer les
options graphiques à partir des différents menus:\nType, Axes, Repère,
Projection, Ombre, Lumière, Style.\n\nCe maplet permet également de
visualiser les sections de la quadrique choisie par des plans d'équation
X=k, Y=k ou Z=k.\nPour cela, cliquer les options ""Section X"",""Section
Y"", ""Section Z"" et saisissez la valeur de k.\n\nPour sauvegarder les
graphiques créés au format .gif, cliquer le bouton ""Enregistrer"".\n\nPour
obtenir des informations complémentaires sur la quadrique choisie, cliquer
le bouton ""Infos"".\n\nPour quitter la fenêtre de Maplet, cliquer le bouton
""Fermer""."
)
),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenDesc') )
)
)
),
BoxLayout['EnregistrerLayout'](
BoxColumn(
BoxColumn('border'=true, 'inset'=0, 'spacing'=0,
[RadioButton['RB1']("Quadrique",'value'=true,'group'='Groupe7'),
RadioButton['RB2']("Section X",'group'='Groupe7'),
RadioButton['RB3']("Section Y",'group'='Groupe7'),
RadioButton['RB4']("Section Z",'group'='Groupe7')],
Button("Enregistrer", Evaluate('function' = "Enregistrer"))
),
Button("Fermer", CloseWindow('FenEnregistrer'))
)
),
BoxLayout['AideEnregLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=4,
BoxRow('inset'=0, 'spacing'=0,
TextBox('wrapped'=true, 'width'=80, 'height'=18, ck,
'editable'='false', 'value'=
"Pour enregistrer les graphiques créés au format .gif, cliquer le
bouton ""Enregistrer"" de la fenêtre principale.\n\nEnsuite, sélectionner
l'une des 4 options:\nQuadrique(sauvegarde du graphique de la quadrique avec
éventuellement ses sections)\nSection X (sauvegarde du graphique de la
section de la quadrique par le plan X=k)\nSection Y (sauvegarde du graphique
de la section de la quadrique par le plan Y=k)\nSection Z (sauvegarde du
graphique de la section de la quadrique par le plan Z=k)\n\nCliquer ensuite
le bouton ""Enregistrer"".\nEntrer alors un nom de fichier pour le graphique
sélectionné.\n\nPour quitter la fenêtre ""Enregistrer"", cliquer le bouton
""Fermer""."
)
),
BoxRow('inset'=0, 'spacing'=0,
Button("Fermer", CloseWindow('FenAideEnreg') )
)
)
),
BoxLayout['AproposLayout'](
BoxColumn('border'=true, 'inset'=0, 'spacing'=0,
Label(font=F2,"Quadriques"),
Label("© Alain Le Stang - ""Apprendre Maple"" - 2004"),
Button("Fermer", CloseWindow('FenApropos'))
)), # fin BoxLayout['AproposLayout']
BoxLayout['PrincipalLayout'](
BoxColumn(
BoxColumn('inset'=0, 'spacing'=0, 'border'=true, 'caption'="Paramètres",
BoxRow('inset'=0, 'spacing'=0,
Label['aLabel'](" a: "), Slider['a'](lower=1,filled=true,majorticks=1,orientation=horizontal,snapticks=false,upper=10,value=3,'onchange'='maj')
),
BoxRow('inset'=0, 'spacing'=0,
Label['bLabel'](" b: "), Slider['b'](lower=1,filled=true,majorticks=1,orientation=horizontal,snapticks=false,upper=10,value=5,'onchange'='maj')
),
BoxRow('inset'=0, 'spacing'=0,
Label['cLabel'](" c: "), Slider['c'](lower=1,filled=true,majorticks=1,orientation=horizontal,snapticks=false,upper=10,value=4,'onchange'='maj')
)
),
BoxRow('inset'=0, 'spacing'=0, 'border'=true, 'caption'="Equation",
MathMLViewer['MMLV'](height = 70, width = 200)
),
BoxRow('inset'=0, 'spacing'=0,
Button(" Dessiner ", 'tooltip'="Dessiner", 'onclick'='maj'),
Button(" Infos ", 'tooltip'="Informations", 'onclick'='inform')
),
BoxRow('inset'=0, 'spacing'=0,
Button("Enregistrer", 'tooltip'="Enregistrer", RunWindow('FenEnregistrer')
),
Button("Fermer", 'tooltip'="Fermer", Shutdown())
)
),
BoxRow('inset'=0, 'spacing'=0,
BoxColumn('inset'=0, 'spacing'=0, 'border'=true, 'caption'="Quadrique",
BoxRow('inset'=0, 'spacing'=0,
Plotter['PlotterQ']()
),
BoxColumn('inset'=0, 'spacing'=0, 'border'=true, 'caption'="Orientation:
theta, phi", Slider['theta'](lower=0,filled=true,majorticks=30,minorticks=10,orientation=horizontal,snapticks=false,upper=360,value=45,'onchange'='maj'),
Slider['phi'](lower=0,filled=true,majorticks=30,minorticks=10,orientation=horizontal,snapticks=false,upper=360,value=60,'onchange'='maj')
),
BoxRow('inset'=0, 'spacing'=0,
[CheckBox['boolX'](caption="Section X", 'onchange'='maj')],
[CheckBox['boolY'](caption="Section Y", 'onchange'='maj')],
[CheckBox['boolZ'](caption="Section Z", 'onchange'='maj')])
),
BoxColumn('inset'=0, 'spacing'=0, 'border'=true, 'caption'="Sections",
Plotter['PlotterX'](width=150, height=150),
BoxRow('inset'=0, 'spacing'=0, 'border'=true,
Label("Section X = "),
TextField['valX'](3,'value'=2)
),
Plotter['PlotterY'](width=150, height=150),
BoxRow('inset'=0, 'spacing'=0, 'border'=true,
Label("Section Y = "),
TextField['valY'](3,'value'=2)
),
Plotter['PlotterZ'](width=150, height=150),
BoxRow('inset'=0, 'spacing'=0, 'border'=true,
Label("Section Z = "),
TextField['valZ'](3,'value'=2)
)
)
) # fin BoxLayout['PrincipalLayout']
)
): |
>
|
Maplets[Display] (QuadriquesMaplet); |

|