TeXgraph
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-28%
Le deal à ne pas rater :
Précommande : Smartphone Google Pixel 8a 5G Double Sim 128Go ...
389 € 539 €
Voir le deal

Fenêtre de Viviani

Aller en bas

Fenêtre de Viviani Empty Fenêtre de Viviani

Message  P.Fradin Dim 16 Mar - 21:25

Voici un exemple utilisant les commandes Build3D et Display3D, ainsi que le modèle scene3d.mod:

1) Charger le modèle scene3d.mod,

2) Créer la macro Clip3D avec la commande (celle-ci fera partie de la prochaine version):

Code:

{Clip3D( facettes à clipper, facettes, in/out(0/1)}
[$S:=%1,
 if %3=Nil then $int:=0 else int:=%3 fi,
 if int=0 then {intérieur}
    $aux:=MapBy(
                [$A:=$facette[1,2], $B:=facette[3,2], $C:=facette[5,2],
                $Plan:=[A, -Prodvec(B-A,C-A)],
                if Plan<>Nil then S:=ClipFacet(S,Plan) fi
                ],facette,%2,jump
              ),
    S
 else  {exterieur}
 MapBy(
      [$A:=$facette[1,2], $B:=facette[3,2], $C:=facette[5,2],
        $u:=Prodvec(B-A,C-A),
        if u<>Nil then
          ClipFacet(S,[A,u]),
          S:=ClipFacet(S,[A,-u]) fi
      ],facette,%2,jump
      )
 fi]

3) Créer un élément Utilisateur avec la commande:

Code:

[S:=Sphere(Origin,4,40,40),
 C:=cylindre(M(2,0,-5),10*vecK,2,30),
 S':=Clip3D(S,C,1),
 bord:=curveTube( 2*M((1+cos(t)),sin(t),2*sin(t/2)),0.1,-2*pi,2*pi,50,4),
 
Build3D( [1,Rgb(0.74,0.73,1)+0.3*i,C],
              [1,darkseagreen,S'],
              [1-i,red, bord]),

 Display3D()]

Explication:

-> on crée une sphère S de centre O et de rayon 4 (avec 40*40=1600 facettes),

-> on crée un cylindre C partant du point de coordonnées (2,0,-5) [centre d'une face circulaire], de hauteur 10 fois le vecteur vecK, de rayon 2 et avec 30 facettes. Ce cylindre contient donc l'axe Oz et il est tangent à la sphère au point (4,0,0),

-> on clippe la sphère avec le cylindre et on garde la partie extérieure au cylindre, on obtient un solide S',

-> la courbe paramétrée par f(t)=(2+2cos(t), 2sin(t) 4sin(t/2)) est l'intersection de la sphère S et du cylindre C, on crée à partir de cette courbe un tube (bord) de rayon 0.1 pour t allant de -2pi à 2pi avec 50 lignes pour t et 4 facettes,

-> la commande Build3D construit la scene avec le cylindre C transparent (opacité=0.3), la sphère clippée S', et le bord sans nuance de couleur ( paramètre -i) de manière à ne pas distinguer les facettes,

-> la commande Display3D affiche la scène:

Fenêtre de Viviani 0803160726132644979
P.Fradin
P.Fradin
Admin

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

http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser