Découper une sphère
2 participants
Page 1 sur 1
Découper une sphère
Salut Patrick
J'avance dans mon projet. Je m'attaque à des représentations 3D. Ca ne doit pas être bien sorcier mais je n'ai aps vu de commande pour faire une demi-sphère.
Le but serait d'arriver à cela:
Merci d'avance,
Eric
Ps: ceci correspond à l'exercice suivant :
Après être tombée dans un espace à 1000 dimensions, Alice se vit demandée comment faire des montures de verres de lunette minces (des zones sphériques) de telle sorte que leur largeur soit égale au dixième de leur diamètre. "Rien de plus simple" répondit Alice. "Vous devez souffler les sphères puis couper ce qui est en trop". Quel est le pourcentage de déchet avec cette technique?
J'avance dans mon projet. Je m'attaque à des représentations 3D. Ca ne doit pas être bien sorcier mais je n'ai aps vu de commande pour faire une demi-sphère.
Le but serait d'arriver à cela:
Merci d'avance,
Eric
Ps: ceci correspond à l'exercice suivant :
Après être tombée dans un espace à 1000 dimensions, Alice se vit demandée comment faire des montures de verres de lunette minces (des zones sphériques) de telle sorte que leur largeur soit égale au dixième de leur diamètre. "Rien de plus simple" répondit Alice. "Vous devez souffler les sphères puis couper ce qui est en trop". Quel est le pourcentage de déchet avec cette technique?
Re: Découper une sphère
Salut Eric,
Je te propose ce code (élément graphique Utilisateur:
Dans cet exemple les facettes sont lissées, je te conseille un export eps (mais pas pdf, affichage trop long), le mieux pour moi, dans ce genre d'image, c'est un jpeg. Voici l'image obtenue avec le bouton Snapshot dans la barre d'outils Standard:
Mais on n'est pas obligé de lisser les facettes! On peut aussi faire en sorte que les trois parties soient pleines (ce qui me semblerait plus réaliste) et légèrement transparentes comme du verre.
Je te propose ce code (élément graphique Utilisateur:
- Code:
[
view(-6,6,-5,5), Marges(0,0,0,0),
delta:=1.5, T:=2,
S:=Sphere(Origin, 4, 25,25),
P1:=[M(0,-delta,0),-vecJ], P2:=[M(0,delta,0),-vecJ],
S'1:=ClipFacet(S,P1,S2),
S'2:=ClipFacet(S2,P2,S'3),
S'1:=shift3d(S'1,-T*vecJ),
S'3:=shift3d(S'3,T*vecJ),
stock:=[S'1,S'2,S'3],
DrawSmoothFacet(stock, [color:=steelblue] ),
Arrows:=2, LineStyle:=dashed,
Ligne3D([-(delta+T)*vecJ+M(0,0,4),(delta+T)*vecJ+M(0,0,4)],0)
]
Dans cet exemple les facettes sont lissées, je te conseille un export eps (mais pas pdf, affichage trop long), le mieux pour moi, dans ce genre d'image, c'est un jpeg. Voici l'image obtenue avec le bouton Snapshot dans la barre d'outils Standard:
Mais on n'est pas obligé de lisser les facettes! On peut aussi faire en sorte que les trois parties soient pleines (ce qui me semblerait plus réaliste) et légèrement transparentes comme du verre.
Re: Découper une sphère
C'est vraiment joli. Merci ! Je vais étudier le code.
Ça passe très bien en pgf avec compilation dans Latex. Par contre, je gommerais bien les facettes.
Ça passe très bien en pgf avec compilation dans Latex. Par contre, je gommerais bien les facettes.
Re: Découper une sphère
Oui, c'est possible, mais le pgf ne connait pas l'algorihme de Gouraud qui fait le lissage des facettes (seul le postscript le connait), donc en pgf tu auras ça:
Re: Découper une sphère
Effectivement, j'ai "ça" ...
Sinon, je n'ai pas vu dans le code où changer l'angle de vue pour avoir une scène un peu plus "plate".
Sinon, je n'ai pas vu dans le code où changer l'angle de vue pour avoir une scène un peu plus "plate".
Re: Découper une sphère
Pour changer l'angle de vue, tu vas dans l'onglet Supplément 3D et tu verras des flèches rouges. Tu peux aussi indiquer directement les angles theta et phi si tu les connais.
Re: Découper une sphère
Ok, me voilà rendu là
Peut-on ajouter une ligne de contour autour des différents éléments pour les faire ressortir (je pars du principe que le résultat final sera en noir et blanc ou niveau de gris) ?
- Code:
% TeXgraph version 1.94 beta-7.2
% Fenetre Xmin Xmax Ymin Ymax Xscale Yscale
100#-6#6#-4.5#4.5#1#1##
% Marges gauche droite haut bas cadre gestion_couleur comptgraph
101#0#0#0#0#0#1#1##
% Affectation des Variables theta et phi et type de perspective
18##[theta:=0.3491, phi:=1.3963,OriginalCoord(1),IdMatrix(),IdMatrix3D(),ModelView(ortho)]##
% Déclaration des Macros
% Déclaration des Eléments graphiques
% objet1 (Utilisateur)
18##[tMin:=-5,tMax:=5]##
14#objet1#[
view(-6,6,-4.5,4.5), Marges(0,0,0,0),
delta:=0.65, T:=2,
S:=Sphere(Origin, 4, 25,25),
P1:=[M(0,-delta,0),-vecJ], P2:=[M(0,delta,0),-vecJ],
S'1:=ClipFacet(S,P1,S2),
S'2:=ClipFacet(S2,P2,S'3),
S'1:=shift3d(S'1,-T*vecJ),
S'3:=shift3d(S'3,T*vecJ),
stock:=[S'1,S'2,S'3],
DrawSmoothFacet(stock, [color:=whitesmoke] ),
Arrows:=2, LineStyle:=dashed,
Ligne3D([-(delta+T)*vecJ+M(0,0,4),(delta+T)*vecJ+M(0,0,4)],0)
]#-1##
Peut-on ajouter une ligne de contour autour des différents éléments pour les faire ressortir (je pars du principe que le résultat final sera en noir et blanc ou niveau de gris) ?
Re: Découper une sphère
Là tu compliques méchamment l'affaire! Bon, je te propose le code, plus compliqué, suivant:
ce qui me donne le jpeg suivant (avec le bouton snapshot):
- Code:
[
view(-6,6,-5,5), Marges(0,0,0,0),
delta:=1.5, T:=2,
S:=Sphere(Origin, 4, 25,25), P1:=[M(0,-delta,0),-vecJ], P2:=[M(0,delta,0),-vecJ],
S'1:=ClipFacet(S,P1,S2), {découpage de la sphère}
S'2:=ClipFacet(S2,P2,S'3),
S'1:=shift3d(S'1,-T*vecJ), {translation de S'1 et S'3}
S'3:=shift3d(S'3,T*vecJ),
S''1:= SortFacet(S'1,1), {on trie les facettes visibles uniquement pour calculer le bord}
S''2:= SortFacet(S'2,1),
S''3:= SortFacet(S'3,1),
B':=Merge3d(Bord([S''1,S''2,S''3])), {bord des facettes visibles}
stock:=[S'1,S'2,S'3],
B:=Merge3d(Bord(stock)), {certaines parties de ce bord sont à gérer dans la scène}
Build3D(
bdWall(P1), bdWall(P2),
bdFacet(stock, [color:=steelblue, gouraud:=1]),
bdLine(B, [width:=12])
),
Display3D(),
Width:=12, Ligne3D(B',0), {bord facettes visibles}
Arrows:=2, LineStyle:=dashed,
Ligne3D([-(delta+T)*vecJ+M(0,0,4),(delta+T)*vecJ+M(0,0,4)],0)
]
ce qui me donne le jpeg suivant (avec le bouton snapshot):
Re: Découper une sphère
Effectivement, je me rends compte de la difficulté maintenant en voyant le temps de réponse de mon ordinateur (et je dispose d'un quadcore ...).
Encore merci. Je te prépare une autre question de 3D.
Encore merci. Je te prépare une autre question de 3D.
Re: Découper une sphère
Je relance ce sujet pour proposer une version fil de fer de cette figure:
Il y a un segment parasite sur la figure mais uniquement dans l'interface graphique et cela ne dépend pas de moi ...
Cela donne à l'export:
- Code:
[
view(-6,6,-5,5), Marges(0,0,0,0), R:=4,
delta:=0.75, T:=2,
C1:=M(0,-T,0), P1:=C1-delta*vecJ, r:=sqrt(R^2-delta^2),
u:=normalize(Prodvec(\n,vecJ)), A1:=P1+r*u, A1':=P1-r*u,
FillStyle:=full, FillColor:=whitesmoke, Width:=12,
Arc3D(A1,C1,A1',R,1,\n),
FillColor:=lightgray, Cercle3D(P1,r,vecJ),
P3:=M(0,-delta,0), A3:=P3-r*u, A3':=P3+r*u,
P4:=-P3, A4:=-A3', A4':=-A3,
Ligne([Proj3D(A3),
Get(Arc3D(A4,P4,A4',r,1,vecJ)),
Get(Arc3D(A3',P3,A3,r,-1,vecJ))],0),
FillColor:=whitesmoke,
Ligne([Get(Arc3D(A4,P4,A4',r,-1,vecJ)),
Get(Arc3D(A3',P3,A3,r,1,vecJ)),
],0),
C2:=M(0,T,0), P2:=C2+delta*vecJ, r:=sqrt(R^2-delta^2),
A2:=P2+r*u, A2':=P2-r*u,
Cercle3D(P2,r,vecJ), Arc3D(A2,C2,A2',R,-1,\n),
FillStyle:=none,
Arrows:=2, LineStyle:=dashed, Width:=4,
Ligne3D([-(delta+T)*vecJ+M(0,0,R+.5),(delta+T)*vecJ+M(0,0,R+.5)],0)
]
Il y a un segment parasite sur la figure mais uniquement dans l'interface graphique et cela ne dépend pas de moi ...
Cela donne à l'export:
Re: Découper une sphère
Je trouvais le fil de fer pas terrible mais je vais devoir réviser mon jugement ... Va falloir choisir et ça devient difficile.
Re: Découper une sphère
Salut Eric,
Les versions fil de fer sont en général plus difficiles à faire. D'ailleurs il y a deux trucs qui ne vont pas sur la figure pour la partie "cylindrique":
- le trait du bas est manquant
- les bords haut et bas devraient être bombés (sphériques en fait)
Je revois ça tout de suite.
A ce propos, verrais-tu un inconvénient à ce que je change le titre de ce sujet en "Sphère découpée"?
Pour l'autre figure 3D (dont je changerais bien le titre également), il y aussi une version fil de fer que j'ai proposée dans le fil: https://texgraph.forumpro.fr/questions-reponses-f3/une-autre-scene-3d-t138.htm
Les versions fil de fer sont en général plus difficiles à faire. D'ailleurs il y a deux trucs qui ne vont pas sur la figure pour la partie "cylindrique":
- le trait du bas est manquant
- les bords haut et bas devraient être bombés (sphériques en fait)
Je revois ça tout de suite.
A ce propos, verrais-tu un inconvénient à ce que je change le titre de ce sujet en "Sphère découpée"?
Pour l'autre figure 3D (dont je changerais bien le titre également), il y aussi une version fil de fer que j'ai proposée dans le fil: https://texgraph.forumpro.fr/questions-reponses-f3/une-autre-scene-3d-t138.htm
Re: Découper une sphère
Voilà c'est réparé:
- Code:
[
view(-6,6,-5,5), Marges(0,0,0,0), R:=4,
delta:=0.75, T:=2,
C1:=M(0,-T,0), P1:=C1-delta*vecJ, r:=sqrt(R^2-delta^2),
u:=normalize(Prodvec(\n,vecJ)), A1:=P1+r*u, A1':=P1-r*u,
FillStyle:=full, FillColor:=whitesmoke, Width:=12,
Arc3D(A1,C1,A1',R,1,\n),
FillColor:=lightgray, Cercle3D(P1,r,vecJ),
P3:=M(0,-delta,0), A3:=P3-r*u, A3':=P3+r*u,
P4:=-P3, A4:=-A3', A4':=-A3,
Ligne([Get(Arc3D(A3,Origin,A4,R,1)),
Get(Arc3D(A4,P4,A4',r,1,vecJ)),
Get(Arc3D(A4',Origin,A3',R,1)),
Get(Arc3D(A3',P3,A3,r,-1,vecJ))],0),
FillColor:=whitesmoke,
Ligne([Get(Arc3D(A3,Origin,A4,R,1)),
Get(Arc3D(A4,P4,A4',r,-1,vecJ)),
Get(Arc3D(A4',Origin,A3',R,1)),
Get(Arc3D(A3',P3,A3,r,1,vecJ)),
],1),
C2:=M(0,T,0), P2:=C2+delta*vecJ, r:=sqrt(R^2-delta^2),
A2:=P2+r*u, A2':=P2-r*u,
Cercle3D(P2,r,vecJ), Arc3D(A2,C2,A2',R,-1,\n),
FillStyle:=none,
Arrows:=2, LineStyle:=dashed, Width:=4,
Ligne3D([-(delta+T)*vecJ+M(0,0,R+.5),(delta+T)*vecJ+M(0,0,R+.5)],0)
]
Re: Découper une sphère
P.Fradin a écrit:Salut Eric,
A ce propos, verrais-tu un inconvénient à ce que je change le titre de ce sujet en "Sphère découpée"?
Pour l'autre figure 3D (dont je changerais bien le titre également), il y aussi une version fil de fer que j'ai proposée dans le fil: https://texgraph.forumpro.fr/questions-reponses-f3/une-autre-scene-3d-t138.htm
Pas de problème, surtout si cela peut aider d'autres personnes à trouver facilement ce qu'elles cherchent.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|