Outils d'utilisateurs

Outils du Site


cp:complement

Lors de l’utilisation de donymodule.mp, Fabrice Eudes a souhaité savoir (à juste titre puisque la documentation est incomplète :-/), comment utiliser la gestion des faces cachées en géométrie spatiale.

Attention, cela ne fonctionne qu’avec des solides convexes (mais on peut mettre plusieurs solides dans la même figure). Je ne détaillerai pas ici les justifications mathématiques, juste l’utilisation à en faire dans donymodule.mp.

Elle se fait en trois étapes :

Définir les sommets

  • On utilise le paramètre NbS pour indiquer le nombre de sommets. Comme certains solides classiques sont déjà prédéfinis, on veillera à coder
    NbS:=8
  • Ensuite, on définit les sommets du solide :
Sommet1:=(0,0,0);
...
Sommet8:=(5,3,4);

Définir les faces

  • On utilise le paramètre NF pour indiquer le nombre de faces. La remarque sur le paramètre NbS est aussi valable.
  • Ensuite, on définit les faces du solide :
Fc[100]:=3;Fc[101]:=1;Fc[102]:=2;Fc[103]:=5;
...
Fc[800]:=4;Fc[801]:=5;Fc[802]:=6;Fc[803]:=7;Fc[804]:=8;

avec les conventions suivantes :

  • S'il s'agit de la k-ième face, alors Fc[k*100] indique le nombre de sommets composant la face;
  • Fc[k*100+1],…,Fc[k*100+…] indique le numéro des sommets (comme défini par Sommet[n]) dans le sens trigonométrique de lecture de la face concernée. (J'avoue ;-) que j'ai parfois du mal avec cette partie)

Le dessin, le dessin,...le dessin !

Il ne reste plus qu'à indiquer que l'on souhaite le tracé de ce solide par la commande

DessineObjet

C'est dur :-X

Un exemple complet

C'est le code source d'une figure utilisée dans les Bases de syracuse.

input geometriesyr16;
figureespace(-10u,-10u,10u,10u);
Initialisation(5,30,20,750);
color S,A,B,C;
S=3/4*(0,0,1);
A=3/4*(0,0,0);
B=3/4*(0,4/3,0);
C=3/4*(4/3,4/3,0);
NbS:=4;
Sommet1:=A;
Sommet2:=B;
Sommet3:=C;
Sommet4:=S;
NF:=4;
Fc[100]:=3;Fc[101]:=2;Fc[102]=3;Fc[103]:=1;
Fc[200]:=3;Fc[201]:=2;Fc[202]=1;Fc[203]:=4;
Fc[300]:=3;Fc[301]:=4;Fc[302]=1;Fc[303]:=3;
Fc[400]:=3;Fc[401]:=4;Fc[402]=3;Fc[403]:=2;
DessineObjet;
trace codeperp(A,B,C,10);
trace codeperp(S,A,B,15);
trace codeperp(S,A,C,10);
trace appelation(A,B,2mm,btex 8 etex);
trace appelation(A,S,2mm,btex 6 etex);
trace appelation(C,B,-2mm,btex 5 etex);
nomme.llft(A);
nomme.top(S);
nomme.rt(B);
nomme.lrt(C);
finespace;
end

et voici les résultats

avec Initialisation(5,30,20,750); on obtient



et avec Initialisation(5,70,20,750); on obtient



Suivant la position de l'observateur, les arêtes sont en traits pleins ou en pointillés. C'est ce que l'on voulait. ;-)

cp/complement.txt · Dernière modification: 2007/05/09 22:45 par cp