Page 1 sur 1

Des figures bêtes en 3D

MessagePublié: 12 Août 2009 11:31
par Eric
Très loin des polyèdres d'Alphonse, j'ai quelques figures 3D très basiques à réaliser.
230.jpg
230.jpg (16.2 Kio) Consulté 28629 fois
233.jpg
233.jpg (19.3 Kio) Consulté 28630 fois
239.jpg
239.jpg (12.67 Kio) Consulté 28629 fois


Comment réaliser ceci (si ce n'est pas trop demander) ?

Merci

Re: Des figures bêtes en 3D

MessagePublié: 12 Août 2009 11:43
par P.Fradin
Une figure 3D n'est jamais basique! Je te répondrai en détails cet après-midi, je dois m'absenter.

Re: Des figures bêtes en 3D

MessagePublié: 12 Août 2009 15:35
par P.Fradin
Voilà une proposition pour les trois. Attention, je crois que certaines macros ne marchent qu'avec la dernière version test:



Code: Tout sélectionner
[theta:=22*deg, phi:=63*deg,
SetMatrix3D(matrix3d(rot3d(M, [Origin, \n], -pi/6))),
view3D(-4,4,-4,4,-4,4), V:=vecK, A:=[3*exp(-i*pi/4),0], B:=[3.5*exp(i*pi/4),0],
A':=normalize(A), B':=normalize(B),
Build3D(
        bdDroite( [Origin, V], [arrows:=1]),
        bdPlan( [Origin,V], [color:=white, border:=1, contrast:=0.125]),
        ),
Display3D(), Width:=8,
Arrows:=1,Arc3D(vecI,Origin,vecI,1,1,vecK),
Arc3D(A,Origin,B,2.5,1),
Arrows:=0,
LineStyle:=dashed, Ligne3D([A,Origin,B],0),
LineStyle:=solid, Point3D(Origin),
LabelDot3D(A',"$y$","SO",1,0.1), LabelDot3D(B',"$gy$","SO",1,0.1),
LabelDot3D(Zsup*vecK,"$x$","NE"), LabelDot3D([2.5,0],"$\alpha$","SO")]
EricEspace1.png
EricEspace1.png (12.01 Kio) Consulté 28598 fois
Code: Tout sélectionner
[theta:=40*deg, phi:=65*deg, Width:=8,
view3D(0,6,0,5,0,4.5),
IdMatrix3D(),R:=3, z:=1.75, x:=[sqrt(R^2-z^2)*exp(i*80*deg),z],
intersec:=Intersection([M(0,0,z),vecK], Sphere(Origin,R)),
HideStyle:=dashed, DrawAretes(intersec), Cercle(0,R), Point3D(Origin),
Build3D( bdAxes(Origin, [arrows:=1, labels:=0]) ), Display3D(),
Ligne3D([Origin, x],0), Arrows:=1, Arc3D(vecK,Origin,x,1,1), Arrows:=0,
LabelDot3D(Xsup*vecI,"$1$","SO",0,0.1),
LabelDot3D(Ysup*vecJ,"$2$","SE",0,0.1),
LabelDot3D(Zsup*vecK,"$3$","N",0,0.1),
LabelDot3D(x,"$x$","S",1,0.1),
LabelDot3D([0,1],"$\varphi$","O",0,0.1) ]
EricEspace2.png
EricEspace2.png (11.19 Kio) Consulté 28595 fois
Code: Tout sélectionner
[theta:=40*deg, phi:=50*deg, Width:=8,
view3D(0,6,0,5,0,5), r:=3.5, z:=r+0.75, a:=[r,0], b:=[r*i,0], c:=[0,r],
Point3D(Origin), alpha:=40*deg,
Build3D( bdAxes(Origin, [arrows:=1, labels:=0]) ), Display3D(),
Arc3D(a,Origin,c,r,1), Arc3D(a,Origin,b,r,1), Arc3D(b,Origin,c,r,1),
Arrows:=1, a1:=exp(i*(-3*pi/4+alpha/2)), a2:= exp(i*(5*pi/4-alpha/2)),
Arc3D([a1,z],[0,z],[a2,z] ,0.5,-1),
Arc3D([Im(a1)+i*z,Re(a1)],[i*z,0],[Im(a2)+i*z,Re(a2)] ,0.5,-1),
Arrows:=0,
LabelDot3D(Xsup*vecI,"$1$","SO",0,0.1),
LabelDot3D(Ysup*vecJ,"$2$","SE",0,0.1),
LabelDot3D(Zsup*vecK,"$3$","N",0,0.1),
LabelDot3D(a,"$a$","S",1,0.2),LabelDot3D(b,"$b$","NE",1,0.2),
LabelDot3D(c,"$c$","E",1,0.2),
LabelDot3D([0,z],"$g_2$","E",0,0.75), LabelDot3D([i*z,0],"$g_1$","NE",0,0.55)]
EricEspace3.png
EricEspace3.png (10.18 Kio) Consulté 28592 fois

Re: Des figures bêtes en 3D

MessagePublié: 12 Août 2009 16:49
par Eric
Je te remercie. Je vais regarder cela de près. Au besoin, je chargerai la dernière version (j'ai la 7.2 sur ma machine).

Re: Des figures bêtes en 3D

MessagePublié: 13 Août 2009 10:22
par Eric
Parfait !! Je te remercie !

Dans la foulée, j'ai recopié ce que tu as fait en simplifiant pour une quatrième figure.

Code: Tout sélectionner
[theta:=22*deg, phi:=40*deg,
SetMatrix3D(matrix3d(rot3d(M, [Origin, \n], -pi/6))),
view3D(-4,4,-4,4,-4,4), V:=vecK, A:=[3*exp(-i*pi/2),0], B:=[3.5*exp(i*pi/2),0],
A':=normalize(A), B':=normalize(B),
Build3D(
        bdDroite( [Origin, V], [arrows:=1])
        ),
Display3D(), Width:=8,
Arrows:=1,Arc3D(vecI,Origin,vecI,1,1,vecK),
Arrows:=0,
LineStyle:=solid, Point3D(Origin),
LabelDot3D(A',"$x$","NO",1,0.1), LabelDot3D(B',"$y=gkg^{-1}x$","SE",1,0.1),
LabelDot3D(Zsup*vecK,"$gn$","NE")
]


Le problème est que je voudrais que le morceau d'axe qui passe sous le cercle disparaisse. Comment faire cela ?

Re: Des figures bêtes en 3D

MessagePublié: 13 Août 2009 10:35
par P.Fradin
Bonjour Eric,

Je te propose ceci:

Code: Tout sélectionner
[theta:=22*deg, phi:=40*deg,
SetMatrix3D(matrix3d(rot3d(M, [Origin, \n], -pi/6))),
view3D(-4,4,-4,4,-4,4), V:=vecK, A:=[exp(-i*pi/2),0], B:=[exp(i*pi/2),0],
Width:=8, Arrows:=1,
Ligne3D([Origin, Zsup*V],0), Arc3D(vecI,Origin,vecI,1,1,vecK),
Arrows:=0, LineStyle:=solid, Point3D(Origin),
LabelDot3D(A,"$x$","NO",1,0.1), LabelDot3D(B,"$y=gkg^{-1}x$","SE",1,0.1),
LabelDot3D(Zsup*V,"$gn$","NE")
]


Comme il n'y a pas de gestion de parties cachées on peut tracer le segment flêché sans Build3D.

EricEspace4.png
EricEspace4.png (5.62 Kio) Consulté 28560 fois

Re: Des figures bêtes en 3D

MessagePublié: 13 Août 2009 10:47
par Eric
Je veux quand même voir la "queue" de l'axe, ce qui se voit à gauche parce que non recouvert par le cercle (je sais, je suis difficile).

Re: Des figures bêtes en 3D

MessagePublié: 13 Août 2009 11:09
par P.Fradin
Alors c'est un disque :lol: !

Code: Tout sélectionner
[theta:=22*deg, phi:=40*deg,
SetMatrix3D(matrix3d(rot3d(M, [Origin, \n], -pi/6))),
view3D(-4,4,-4,4,-4,4), V:=vecK, A:=[exp(-i*pi/2),0], B:=[exp(i*pi/2),0],
Width:=8,
Ligne3D([Zinf*V,Origin],0), FillStyle:=full,
Arrows:=1, Arc3D(vecI,Origin,vecI,1,1,vecK), FillStyle:=none,
Ligne3D([Origin, Zsup*V],0),
Arrows:=0, LineStyle:=solid, Point3D(Origin),
LabelDot3D(A,"$x$","NO",1,0.1), LabelDot3D(B,"$y=gkg^{-1}x$","SE",1,0.1),
LabelDot3D(Zsup*V,"$gn$","NE")
]


EricEspace4b.png
EricEspace4b.png (5.23 Kio) Consulté 28553 fois

Re: Des figures bêtes en 3D

MessagePublié: 13 Août 2009 11:33
par Eric
P.Fradin a écrit:Alors c'est un disque :lol: !


Effectivement, ça doit s'appeler comme ça ... :oops:

Re: Des figures bêtes en 3D

MessagePublié: 27 Déc 2009 16:05
par Eric
Je rouvre ce fil pour une figure 3D.

Je souhaite visualiser la projection stéréographique. Pratiquement, je voudrais avoir une sphère centrée en 0 (j'ai trouvé la commande Sphere pour ça), une visualisation du plan complexe (et je n'ai pas tout compris aux paramètres du bouton Plan dans le module 3D) et une demi-droite partant du pôle nord (N), coupant la sphère en a et le plan complexe en S(a).

Comment faire une telle scène ?

Re: Des figures bêtes en 3D

MessagePublié: 27 Déc 2009 16:43
par P.Fradin
Quelque chose comme ça?:

Code: Tout sélectionner
[
view(-8,8,-8,8,), Marges(0,0,0,0), size(8),
view3D(-5,7,-5,7,-3,5),
FillStyle:=full, FillColor:=lightgray,
plan:= [M(0,0,-3),vecK],
DrawPlan( plan, vecJ, 12,12,-3),
Arrows:=1, Axes3D(0,0,-3), Arrows:=0,
FillColor:=white,
Dsphere(Origin, 3,2), Nord:=M(0,0,3), a:=3*normalize( M(1,1,0) ),
Ligne3D([Nord, M(0,0,Zsup)],0),
Sa:=interDP( [Nord,a-Nord], plan),
Width:=8, LineStyle:=dotted,
Ligne3D([Nord,a],0),
Ligne3D([M(Xinf,0,-3),M(Xsup,0,-3),jump,M(0,Yinf,-3),M(0,Ysup,-3),jump,M(0,0,Zinf),M(0,0,Zsup)],0),
LineStyle:=solid,
Ligne3D([a,Sa],0),
LabelDot3D(Nord, "$N$", "NE", 1), LabelDot3D(a, "$a$", "NE", 1),
LabelDot3D(Sa, "$S(a)$", "E", 1)
]


projStereog.png
projStereog.png (10.93 Kio) Consulté 28328 fois

Re: Des figures bêtes en 3D

MessagePublié: 27 Déc 2009 17:16
par Eric
J'ai collé ton code dans un élément utilisateur mais je n'obtiens pas la même chose que toi. Il y a une translation par rapport à l'origine.

Re: Des figures bêtes en 3D

MessagePublié: 27 Déc 2009 17:19
par Eric
Après chargement de la mise à jour de Scene3D, ça va mieux.

comment ajouter le Label "$\mathds{C}$" dans un coin du plan ?

Re: Des figures bêtes en 3D

MessagePublié: 27 Déc 2009 17:27
par Eric
Autre question sur la même figure. Je ne vois pas la commande qui affiche x, y et z. Comment faire pour que ceux-ci deviennent $x$, $y$ et $z$ (et se retrouvent donc un italique au final) ?

Re: Des figures bêtes en 3D

MessagePublié: 27 Déc 2009 17:57
par P.Fradin
Pour les axes, j'ai du remettre à jour scene3d.mac encore une fois (normalement les dollars y sont) ...

Pour la légende:

Code: Tout sélectionner
[
view(-8,8,-8,8,), Marges(0,0,0,0), size(8),
view3D(-5,7,-5,7,-3,5),
FillStyle:=full, FillColor:=lightgray,
plan:= [M(0,0,-3),vecK],
DrawPlan( plan, vecJ, 12,12,-3),
Arrows:=1, Axes3D(0,0,-3), Arrows:=0,
FillColor:=white,
Dsphere(Origin, 3,2), Nord:=M(0,0,3), a:=3*normalize( M(1,1,0) ),
Ligne3D([Nord, M(0,0,Zsup)],0),
Sa:=interDP( [Nord,a-Nord], plan),
Width:=8, LineStyle:=dotted,
Ligne3D([Nord,a],0),
Ligne3D([M(Xinf,0,-3),M(Xsup,0,-3),jump,M(0,Yinf,-3),M(0,Ysup,-3),jump,M(0,0,Zinf),M(0,0,Zsup)],0),
LineStyle:=solid,
Ligne3D([a,Sa],0),
LabelDot3D(Nord, "$N$", "NE", 1), LabelDot3D(a, "$a$", "NE", 1),
LabelDot3D(Sa, "$S(a)$", "E", 1),
LabelDot3D( M(5,-6,-3), "$\mathcal C$","E")
]


projStereo.png
projStereo.png (12.03 Kio) Consulté 28296 fois

Re: Des figures bêtes en 3D

MessagePublié: 27 Déc 2009 18:12
par Eric
Super !

Re: Des figures bêtes en 3D

MessagePublié: 02 Avr 2010 10:39
par Eric
Salut Patrick

J'ai une nouvelle scène en 3D à réaliser (les auteurs russes ont modifié la solution d'un exercice ... et la figure qui allait avec ...).
cyl2.jpg
cyl2.jpg (54.1 Kio) Consulté 28104 fois


Il s'agit de l'intersection d'un cylindre et d'un plan dans lequel trois points sont représentés.

Comment procèdes-tu pour réaliser cela ?

Re: Des figures bêtes en 3D

MessagePublié: 02 Avr 2010 12:28
par P.Fradin
Salut Eric,

Je te propose ceci:

Code: Tout sélectionner
[
theta:=50*deg, phi:=60*deg, view(-4,4,-4,4), Marges(0,0,0,0), size(9),
C:=Cylindre( M(0,0,-2), 4*vecK,3, 45),
P:=[Origin, M(1,0,3)],
A:=[M(2,0,0), M(-1.5,1.5,0), M(-1.5,-1.5,0)],
A:=proj3dO(A,P,vecK),
I:=Intersection(P,C,F),
FillStyle:=bdiag,FillColor:=black,
LineStyle:=noline, Ligne3D( F,1),
LineStyle:=solid, Width:=8, FillStyle:=none, HideStyle:=dashed,
DrawAretes(I,0),
Dcylindre( M(0,0,-2), 4*vecK,3,0), Point3D(A)
]


cylindre3.png
cylindre3.png (18.59 Kio) Consulté 28096 fois

Re: Des figures bêtes en 3D

MessagePublié: 02 Avr 2010 13:53
par Eric
Je te remercie, c'est parfait (j'ai juste changé les dimensions).