Mes premiers pas en 3D

N'oubliez pas de consulter les sujets avant de poser votre question, merci.

Re: Mes premiers pas en 3D

Messagepar P.Fradin » 25 Août 2022 11:29

Bonjour Eric,

Comme ceci :
Code: Tout sélectionner
[//command
      view(-8.9,5.6,-4.7,4.6),
      Marges(0,0,0,0), size(7.5), viewDir(30,60),
      V:= [4-1.5*i,-4.5],

      C:=Sphere(1-i,3,30,30),
      P2:=[M(0,0,3)+V/2,vecJ+6*vecK],
      Delta := [M(2,-5,-4), V],
      sphere2 := ClipFacet(C,P2,sphere1),

      C2:= Intersection(P2,C), // C2 est une liste d'arêtes
      I := interDP([Delta,V],P2),

      FillStyle:=full, FillOpacity:=0.5, Width:=2,
      DrawSmoothFacet(sphere1, [color:=white,backculling :=0]),

      DrawPlan(P2,vecI,12,9.5),
      //draw("line", Proj3D(L), [close:=1, FillColor:=white,Width:=10]),
      HideStyle:=userdash, Width:=10, DrawAretes(C2),
      DrawSmoothFacet(sphere2,
       [color:=white, FillStyle:=none, Width:=2,backculling :=0]),
    ]

plan-sphere.png
plan-sphere.png (13.27 Kio) Consulté 35428 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1891
Inscription: 29 Oct 2008 15:04

Re: Mes premiers pas en 3D

Messagepar Eric » 25 Août 2022 11:43

Je te remercie.
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar Eric » 26 Août 2022 12:01

Bonjour Patrick

Sur le code suivant
Code: Tout sélectionner
[//command
  view(-4.9,2,-3.4,3.6),
      Marges(0,0,0,0), size(5.5), viewDir(30,70),
      V:= [4-1.5*i,-4.5],
      O:=[0.5-1.5*i,0],
      C:=Sphere(O,3,40,40),
      P2:=[M(0,0,4)+V/2,vecJ+6*vecK],

      C2:= Intersection(P2,C), // C2 est une liste d'arêtes

      FillStyle:=full, FillOpacity:=0.5, Width:=2,
      DrawSmoothFacet(C, [color:=white,backculling :=0]),

   HideStyle:=userdash, Width:=8, DrawAretes(C2),

  LabelSize:=footnotesize,
  LabelDot(Proj3D(O),"$O$","O",1,0.15),
]                                                     


j’essaie (sans grand succès) de faire apparaitre le centre du cercle, la droite passant par ce centre et le centre de la sphère et les points d'intersection de cette droite avec la sphère.
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar P.Fradin » 26 Août 2022 13:16

Bonjour Eric,

Voici ce que je te propose :
Code: Tout sélectionner
[//command
      view(-4.9,2,-3.4,3.6),
          Marges(0,0,0,0), size(5.5), viewDir(30,70),
          V:= [4-1.5*i,-4.5],
          O:=[0.5-1.5*i,0],
          C:=Sphere(O,3,40,40),
          P2:=[M(0,0,4)+V/2,vecJ+6*vecK],

          C2:= Intersection(P2,C), // C2 est une liste d'arêtes
          I := proj3d(O,P2), // centre du cercle

          //FillStyle:=full, FillOpacity:=0.5, Width:=2,
          //DrawSmoothFacet(C, [color:=white,backculling :=0]),
          Build3D(
                  bdSphere(O, 3, [grid:=[40,40], opacity:=0.9]),
                  bdDroite([O,I-O], [width:=8])
                  ),
          Display3D(),

       HideStyle:=userdash, Width:=8, DrawAretes(C2),
       LineStyle:=userdash, Droite(Proj3D(O), Proj3D(I)),

      LabelSize:=footnotesize,
      LabelDot(Proj3D(O),"$O$","O",1,0.15),
      LabelDot(Proj3D(I),"$I$","O",1,0.15),

droite-sphere.png
droite-sphere.png (15.47 Kio) Consulté 35423 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1891
Inscription: 29 Oct 2008 15:04

Re: Mes premiers pas en 3D

Messagepar Eric » 26 Août 2022 21:24

Je te remercie.
Comment récupérer les points d'intersection de la droite (OI) et de la sphère ?
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar P.Fradin » 26 Août 2022 22:30

Pour les points d'intersection, c'est juste un petit calcul de maths !
Code: Tout sélectionner
[//command
      view(-4.9,2,-3.4,3.6),
          Marges(0,0,0,0), size(5.5), viewDir(30,80),
          V:= [4-1.5*i,-4.5],
          O:=[0.5-1.5*i,0], R:=3,
          C:=Sphere(O,R,40,40),
          P2:=[M(0,0,4)+V/2,vecJ+6*vecK],

          C2:= Intersection(P2,C), // C2 est une liste d'arêtes
          I := proj3d(O,P2), // centre du cercle
          a := R/Norm(I-O),
          A := O+a*(I-O), //points d'inertsection avec la sphere
          B := O-a*(I-O),
          //FillStyle:=full, FillOpacity:=0.5, Width:=2,
          //DrawSmoothFacet(C, [color:=white,backculling :=0]),
          Build3D(
                  bdSphere(O, 3, [grid:=[40,40], opacity:=0.9]),
                  bdDroite([O,I-O], [width:=8])
                  ),
          Display3D(),

       HideStyle:=userdash, Width:=8, DrawAretes(C2),
       LineStyle:=userdash, Droite(Proj3D(O), Proj3D(I)),

      LabelSize:=footnotesize,
      LabelDot(Proj3D(O),"$O$","O",1,0.15),
      LabelDot(Proj3D(I),"$I$","O",1,0.15),
      LabelDot(Proj3D(A),"$A$","NO",1,0.15),
      LabelDot(Proj3D(B),"$B$","SO",1,0.15),
    ]

droite-sphere2.png
droite-sphere2.png (15.18 Kio) Consulté 35418 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1891
Inscription: 29 Oct 2008 15:04

Re: Mes premiers pas en 3D

Messagepar Eric » 26 Août 2022 22:41

Je te remercie. Je cherchais quelque chose de plus subtil, une commande implémentée dans TexGraph.
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar Eric » 26 Août 2022 22:50

J'ai ajouté quelques fioritures.

Code: Tout sélectionner
[//command
  view(-4.7,1.7,-3.2,3.4),
  Marges(0,0,0,0), size(4.5), viewDir(30,70),
  V:= [4-1.5*i,-4.5],
  O:=[0.5-1.5*i,0], R:=3,
  C:=Sphere(O,R,40,40),
  P2:=[M(0,0,4)+V/2,vecJ+6*vecK],

  C2:= Intersection(P2,C), // C2 est une liste d'arêtes
  C3:=Sommets(C2),
  I:= proj3d(O,P2), // centre du cercle
  a:= R/Norm(I-O),
  A:= O+a*(I-O), //points d'intersection avec la sphere
  B:= O-a*(I-O),
          //FillStyle:=full, FillOpacity:=0.5, Width:=2,
          //DrawSmoothFacet(C, [color:=white,backculling :=0]),
  Build3D(
     bdSphere(O, 3, [grid:=[40,40], opacity:=0.9]),
     bdDroite([O,I-O], [width:=6])
     ),
  Display3D(),

  HideStyle:=userdash, Width:=6, DrawAretes(C2),
  LineStyle:=userdash, Droite(Proj3D(O), Proj3D(I)),
  Width:=3,
  LineStyle:=solid,
  angleD(Proj3D(A),Proj3D(I),Proj3D(C3[83,2]),0.2),
  draw("line", Proj3D([C3[83,2],I]),
   [LineStyle:=userdash]),

  LabelSize:=footnotesize,DotSize:=5+5*i,DotStyle:=times,
  LabelDot(Proj3D(O),"$O$","O",1,0.15),
  LabelDot(Proj3D(I),"$H$","O",0,0.15),
  LabelDot(Proj3D(C3[83,2]),"$M$","S",0,0.15),
  LabelDot(Proj3D(C3[13,2]),"$\Gamma$","O",0,0.15),
  LabelDot(Proj3D(A),"$P$","NE",1,0.2),
  LabelDot(Proj3D(B),"$P'$","SO",1,0.2),
]
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar Eric » 28 Août 2022 10:20

Bonjour Patrick

J'ai fait la figure suivante (qui utilise la macro pour tracer des polyèdres réguliers).
Code: Tout sélectionner
[
  view(-3,3,-2.8,2.8), Marges(0,0,0,0), size(6),
  FillStyle:=full,FillColor:=white, HideStyle:=dashed,
  //theta:=10,phi:=20, // attention ce sont des radians !
  viewDir(-148,84), // là ce sont des degrés
  P:=Octaedre(Origin,2.5), // P est une liste de facettes
  DrawPoly(P,4,0.5),
  S := Sommets(P), // récuperation des sommets
  O:=(S[1,2]+S[11,2])/2,
  V:=Prodvec(S[11,2]-S[7,2],S[9,2]-S[7,2]),
  P:=[S[7,2],V],
  I:= proj3d(O,P),J:=(S[11,2]+S[7,2])/2,

  Width:=3,
  draw("line", Proj3D([S[7,2],S[3,2]]),
   [LineStyle:=userdash]),
  draw("line", Proj3D([S[1,2],S[11,2]]),
   [LineStyle:=userdash]),
  draw("line", Proj3D([O,I]),
   [LineStyle:=userdash]),
  draw("line", Proj3D([S[9,2],J]),
   [LineStyle:=userdash]),
  angleD(Proj3D(O),Proj3D(I),Proj3D(S[9,2]),0.2),

  LabelSize:=footnotesize,
  LabelDot(Proj3D(S[1,2]),"$B$",[0.45,-2+i],0),
  LabelDot(Proj3D(S[3,2]),"$C$","E",0,0.15),
  LabelDot(Proj3D(S[11,2]),"$D$",[0.4,2-i],0),
  LabelDot(Proj3D(S[7,2]),"$A$","O",0,0.15),
  LabelDot(Proj3D(S[9,2]),"$E$","N",0,0.15),
  LabelDot(Proj3D(S[5,2]),"$F$","S",0,0.15),
  LabelDot(Proj3D(O),"$O$","S",0,0.25),
  LabelDot(Proj3D(I),"$I$","O",0,0.1),
  LabelDot(Proj3D(J),"$J$",[0.25,1-2*i],0),



A partir de cette figure, je voudrais tracer la sphère inscrite, c'est à dire celle de centre O et passant par I. Je sens qu'il faut utiliser une commande build3D, mais comment faire concrètement ?
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar P.Fradin » 28 Août 2022 10:57

Bonjour Éric,

Voici une proposition (toujours en chargeant le modèle PolyedresII):
Code: Tout sélectionner
[
  view(-3,3,-2.8,2.8), Marges(0,0,0,0), size(6),
  FillStyle:=full,FillColor:=white, HideStyle:=dashed,
  //theta:=10,phi:=20, // attention ce sont des radians !
  viewDir(-148,84), // là ce sont des degrés
  P:=Octaedre(Origin,2.5), // P est une liste de facettes
  S := Sommets(P), // récuperation des sommets
  O:=Origin, //(S[1,2]+S[11,2])/2, O est l'orgine non ?
  V:=Prodvec(S[11,2]-S[7,2],S[9,2]-S[7,2]),
  P1:=[S[7,2],V],
  I:= proj3d(O,P1),J:=(S[11,2]+S[7,2])/2,
  Build3D(
          bdFacet(P, [opacity:=0.7, border:=1]),
          bdSphere(O, Norm(I-O), contrast:=0.5),
          ),
  Display3D(),
//  DrawPoly(P,4,0.5),
  Width:=3,
  draw("line", Proj3D([ S[7,2],S[3,2],jump, S[1,2],S[11,2], jump, O,I, jump,
               S[9,2],J ]),  [LineStyle:=userdash]),
  angleD(Proj3D(O),Proj3D(I),Proj3D(S[9,2]),0.2),

  LabelSize:=footnotesize,
  LabelDot(Proj3D(S[1,2]),"$B$",[0.45,-2+i],0),
  LabelDot(Proj3D(S[3,2]),"$C$","E",0,0.15),
  LabelDot(Proj3D(S[11,2]),"$D$",[0.4,2-i],0),
  LabelDot(Proj3D(S[7,2]),"$A$","O",0,0.15),
  LabelDot(Proj3D(S[9,2]),"$E$","N",0,0.15),
  LabelDot(Proj3D(S[5,2]),"$F$","S",0,0.15),
  LabelDot(Proj3D(O),"$O$","S",0,0.25),
  LabelDot(Proj3D(I),"$I$","O",0,0.1),
  LabelDot(Proj3D(J),"$J$",[0.25,1-2*i],0),
]

octaedre-sphere.png
octaedre-sphere.png (17.53 Kio) Consulté 35400 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1891
Inscription: 29 Oct 2008 15:04

Re: Mes premiers pas en 3D

Messagepar Eric » 28 Août 2022 13:55

Je te remercie !
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar Eric » 01 Sep 2022 15:04

Bonjour Patrick

Sur la figure suivante, j'ai construit un tétraèdre régulier (avec la macro pour les polyèdres réguliers) et quelques segments à l'intérieur.
Code: Tout sélectionner
[
  view(-1.8,2.8,-2.1,2.2), Marges(0,0,0,0), size(6),
  FillStyle:=full,FillColor:=white, HideStyle:=dashed,
  //theta:=10,phi:=20, // attention ce sont des radians !
  viewDir(35,70), // là ce sont des degrés
  P:=Tetraedre(Origin,2.5,A,B,C), // P est une liste de facettes
  DrawPoly(P,4,0.5),
  S := Sommets(P), // récuperation des sommets
  V:=Prodvec(S[1,2]-S[7,2],S[3,2]-S[7,2]),
  V':=Prodvec(S[1,2]-S[7,2],S[5,2]-S[7,2]),
  P1:=[S[7,2],V],P2:=[S[7,2],V'],
  I:= proj3d(S[5,2],P1),
  I':= proj3d(S[3,2],P2),
  O:=interDD([I,V],[I',V']),

  H:=(S[1,2]+S[7,2])/2,

  Width:=3,
  draw("line", Proj3D([S[5,2],I]),[LineStyle:=userdash]),
  draw("line", Proj3D([S[3,2],I']),[LineStyle:=userdash]),
  draw("line", Proj3D([S[5,2],H]),
   [LineStyle:=userdash]),
  angleD(Proj3D(S[5,2]),Proj3D(I),Proj3D(S[3,2]),0.2),
  angleD(Proj3D(S[3,2]),Proj3D(I'),Proj3D(S[5,2]),0.2),

  LabelSize:=footnotesize,
  LabelDot(Proj3D(S[1,2]),"$B$","O",0,0.1),
  LabelDot(Proj3D(S[3,2]),"$C$","E",0,0.1),
  LabelDot(Proj3D(S[7,2]),"$A$","S",0,0.15),
  LabelDot(Proj3D(S[5,2]),"$D$","O",0,0.15),
  LabelDot(Proj3D(O),"$O$","NE",0,0.2),
  LabelDot(Proj3D(I),"$I$","S",0,0.1),
  LabelDot(Proj3D(I'),"$I'$","O",0,0.1),
  LabelDot(Proj3D(H),"$H$","SO",0,0.1),
]           


Je ne comprends pas pourquoi l'arête [AD] apparait en pointillé alors qu'elle est visible et, au contraire, l'arête [BC] est en trait plein alors qu'elle est cachée.
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar P.Fradin » 01 Sep 2022 18:45

Bonjour Eric,

Je ne comprends pas ton instruction Tetradre(Origin, 2.5) !
Cela ne correspond pas à la syntaxe de la commande dans l'aide.
Quel tétraèdre veux tu dessiner ?
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1891
Inscription: 29 Oct 2008 15:04

Re: Mes premiers pas en 3D

Messagepar Eric » 02 Sep 2022 10:17

J'ai modifié en Tetraedre(Origin,2.5,A,B,C), ce qui ne change rien à l'affichage. Pour le reste de ma remarque, c'est juste un effet d'optique. J'avais l'impression que l'arête [AD] se trouve en avant alors qu'elle est bien cachée.
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar P.Fradin » 02 Sep 2022 17:14

Les variables A B et C ne servent qu'à récupérer les faces, arêtes et sommets sous un format particulier pouvant être utilisé directement dans un Build3D, ce n'est pas ce qui t'intéresses ici, donc on les enlève.
La bonne syntaxe est Tetraedre(centre, sommet) où centre est un point 3D (Origin est un point bien un point 3D, c'est [0,0]), mais 2.5 n'est pas un point 3D, il faudrait mettre [2.5,0] si c'est le point de coordonnées (2.5,0,0) que tu veux (un point 3D est de la forme [x+i*y,z]).
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1891
Inscription: 29 Oct 2008 15:04

Re: Mes premiers pas en 3D

Messagepar Eric » 02 Sep 2022 17:27

J'ai corrigé (ce qui n'a aucun effet sur la figure... tant mieux). Effectivement, c'est mieux d'utiliser la syntaxe correcte pour éviter les mauvaises surprises.
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar Eric » 12 Mai 2024 10:58

Bonjour Patrick

Ce matin, j'essaie de faire une figure correspondant au texte suivant et je n'arrive à rien.
Un prisme triangulaire est coupée par deux plans (non parallèles) de sorte que les deux sections triangulaires ABC et A'B'C' n'ont pas de point commun.

Comment dois-je m'y prendre ?
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar P.Fradin » 12 Mai 2024 11:27

Bonjour Eric,

J'espère avoir bien compris la demande. Voici une proposition :
Code: Tout sélectionner
[//command
A := Origin, B := M(3,0,0), C := M(1,3,0), //Plan1 xOy
V := M(1,1,6), // direction du prisme
Pr := Prisme([A,B,C], V),
Plan2 := [M(0,0,4), -M(0,2,2)],
Pr' := Section(Plan2, Pr), // section du prisme par le Plan2
Build3D(
        bdFacet(Pr',[border:=1,color:=lightblue, hidden:=1])
       ),
Display3D() 


prisme.png
prisme.png (16.13 Kio) Consulté 13281 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1891
Inscription: 29 Oct 2008 15:04

Re: Mes premiers pas en 3D

Messagepar Eric » 12 Mai 2024 11:42

C'est exactement ce que je veux obtenir. Je vais ajouter des noms aux sommets (je devrais y arriver).

L'exercice qui va avec est : montrer que le volume du polyèdre est égal à la somme des volumes des tétraèdres ayant une base commune (une des faces triangulaires du polyèdre) et pour quatrièmes sommets respectifs les sommets de la face opposée.

Je te remercie.
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar Eric » 12 Mai 2024 14:10

Voici le résultat. J'ai ajouté deux traits qui jouent un rôle dans la solution.
Comment supprimer le remplissage en gris ou bien mettre un dégradé ?
Pièces jointes
Vol4_ex18.teg
(1.13 Kio) Téléchargé 388 fois
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Re: Mes premiers pas en 3D

Messagepar P.Fradin » 12 Mai 2024 14:55

À ce moment là si tu ne veux pas le remplissage, il suffit de faire le dessin en fil de fer (et donc plus besoin de Build3D) :
Code: Tout sélectionner
[//command
 view(-2,2.75,-1.5,2.75), Marges(0,0,0,0), size(5.5),
 A := Origin, B := M(3,0,0), C := M(1,3,0), //Plan1 xOy
V := M(1,1,6), // direction du prisme
Pr := Prisme([A,B,C], V),
Plan2 := [M(0,0,4), -M(0,2,2)],
Pr' := Section(Plan2, Pr), // section du prisme par le Plan2
S := Sommets(Pr'),

Width:=12, HideStyle:=dotted, DrawPoly(Pr',0), Width:=6,

draw("line", Proj3D([B,S[9,2]]),
   [LineStyle:=userdash]),
draw("line", Proj3D([C,S[7,2]]),
   [LineStyle:=userdash]),

  LabelSize:=footnotesize,
  LabelDot(Proj3D(A),"$A$","S",0,0.15),
  LabelDot(Proj3D(B),"$B$","O",0,0.15),
  LabelDot(Proj3D(C),"$C$","E",0,0.15),
  LabelDot(Proj3D(S[11,2]),"$C'$","E",0,0.15),
  LabelDot(Proj3D(S[9,2]),"$A'$","O",0,0.15),
  LabelDot(Proj3D(S[7,2]),"$B'$","O",0,0.05),
]


Vol4_ex18.png
Vol4_ex18.png (4.42 Kio) Consulté 13270 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1891
Inscription: 29 Oct 2008 15:04

Re: Mes premiers pas en 3D

Messagepar Eric » 12 Mai 2024 20:19

Je te remercie.
Eric
 
Messages: 302
Inscription: 07 Août 2009 21:05
Localisation: Asnieres

Précédent

Revenir vers Questions - Réponses

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron