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é 19860 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
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: 298
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: 298
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é 19855 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
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: 298
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é 19850 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
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: 298
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: 298
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: 298
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é 19832 fois
P.Fradin
Avatar de l’utilisateur
P.Fradin
Administrateur du site
 
Messages: 1887
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: 298
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: 298
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: 1887
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: 298
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: 1887
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: 298
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 5 invités

cron