Découper une sphère

Voir le sujet précédent Voir le sujet suivant Aller en bas

Découper une sphère

Message  Eric Kouris le Lun 27 Oct - 12:18

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?

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  P.Fradin le Lun 27 Oct - 13:26

Salut Eric,

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.

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  Eric Kouris le Lun 27 Oct - 13:36

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.

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  P.Fradin le Lun 27 Oct - 13:40

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:


_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  Eric Kouris le Lun 27 Oct - 13:45

Effectivement, j'ai "ça" ... Very Happy

Sinon, je n'ai pas vu dans le code où changer l'angle de vue pour avoir une scène un peu plus "plate".

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  P.Fradin le Lun 27 Oct - 13:56

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.

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  Eric Kouris le Lun 27 Oct - 14:09

Ok, me voilà rendu là

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) ?

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  P.Fradin le Lun 27 Oct - 16:39

Là tu compliques méchamment l'affaire! Bon, je te propose le code, plus compliqué, suivant:

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):


_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  Eric Kouris le Lun 27 Oct - 17:13

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.

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  P.Fradin le Ven 31 Oct - 2:25

Je relance ce sujet pour proposer une version fil de fer de cette figure:

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:

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  Eric Kouris le Ven 31 Oct - 10:49

Je trouvais le fil de fer pas terrible mais je vais devoir réviser mon jugement ... Va falloir choisir et ça devient difficile.

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  P.Fradin le Ven 31 Oct - 11:41

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: http://texgraph.forumpro.fr/questions-reponses-f3/une-autre-scene-3d-t138.htm

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  P.Fradin le Ven 31 Oct - 11:48

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)
]


_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  Eric Kouris le Ven 31 Oct - 21:19

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: http://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.

Eric Kouris

Nombre de messages : 150
Age : 49
Date d'inscription : 26/03/2008

Voir le profil de l'utilisateur http://pagesperso-orange.fr/styren/

Revenir en haut Aller en bas

Re: Découper une sphère

Message  Contenu sponsorisé Aujourd'hui à 5:59


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum