cercles et sphères
Publié: 04 Déc 2010 00:04
Un sujet a été posté puis supprimé dans la rubrique Questions-Réponses, mais j'ai eu le temps de le noter . Le problème se ramène à dessiner des cercles sur une sphère, et pas forcément des grands cercles. Voici une petite macro pour l'occasion:
Et un petit élément graphique pour tester tout ça (j'ai repris le problème posé), il faut charger le modèle draw2d.mod pour voir la jolie sphère:
- Code: Tout sélectionner
{ cercleS( centre, rayon, A,B,C): A, B, C doivent être distincts et sur la sphère}
[
SaveAttr(), $O:=%1, $R:=%2, $A:=%3, $B:=%4, $C:=%5, $U:=Prodvec(B-A,C-A),
$O':=proj3d(O,[A,U]), //centre du cercle
$r:=Norm(A-O'), //rayon du cercle,
$N:=normalize(Prodvec(\n,U)), $D:=interPP([O,\n],[O',U]),
$H:=dproj3d(O,D), $h:=Norm(O-H),
if h<=R then
$s:=sqrt(R^2-h^2), $A':=H+s*N, $B':=H-s*N,
LineStyle:=solid, Arc3D(A',O',B',r,1,U),
LineStyle:=dotted, Arc3D(A',O',B',r,-1,U)
else
if Prodscal(O'-O,\n)>=0 then LineStyle:=solid, Cercle3D(O',r,U),
else LineStyle:=dotted, Cercle3D(O',r,U)
fi
fi,
RestoreAttr()
]
Et un petit élément graphique pour tester tout ça (j'ai repris le problème posé), il faut charger le modèle draw2d.mod pour voir la jolie sphère:
- Code: Tout sélectionner
[
view3D(-6,6,-6,6,-6,6),size(9),
background(full, whitesmoke), FrenchBabel:=1,
r:=4,a:=r/sqrt(3), A1:=M(-a,a,a), A2:=M(-a,-a,a), A3:=M(a,-a,a), A4:=M(a,a,a),
A5:=M(-a,a,-a), A6:=M(-a,-a,-a), A7:=M(a,-a,-a), A8:=M(a,a,-a),
draw("path", [r,0,circle], //nécessite le modèle draw2d.mod
[Color:=black,GradStyle:=radial, FillStyle:=gradient, FillColorB:=steelblue]),
Color:=crimson, Width:=8,
cercleS(Origin, r, A1,A2,A3),
cercleS(Origin, r, A5,A6,A7),
cercleS(Origin, r, A3,A7,A8),
cercleS(Origin, r, A1,A2,A6),
cercleS(Origin, r, A2,A3,A7),
cercleS(Origin, r, A1,A4,A8),
Color:=black,
Point3D(A1,A2,A3,A4,A5,A6,A7,A8)
]