Ce fichier est une nouvelle évolution de la série geometriesyr. C'est une série de fichiers de macros pour MetaPost; macros destinées à faciliter le tracé de figures géométriques. Après la version 15 qui a apporté le dessin à main levée, cette nouvelle version apporte, outre quelques macros supplémentaires de dessin, un module qui permet la géométrie spatiale.
On ne trouvera ici qu'une présentation de la partie géométrie spatiale. Pour les autres parties, reportez-vous ici. Cependant, il existe une gallerie spéciale dessin à main levée.
Cette idée fait bien évidemment suite à celle sur le tracé à main levée. De quel autre type de tracés avais-je besoin ? Les quelques solides étudiés en collège, l'utilisation de théorèmes fondamentaux dans ces solides,... tout ça m'a amené à me pencher sur le problème.
Je ne souhaitais pas devoir régler tout moi même, ou alors utiliser un subterfuge pour obtenir, finalement, une figure qui ne respecte pas forcément les régles de représentation de la géométrie spatiale.
Mais quelles règles respecter ? Je me suis alors rappelé que Manuel Luque avait conseillé de lire Graphismes scientifiques sur ordinateur de Raymond Dony. Lecture très instructive car elle m'a permi de mettre en place les diverses projections sur l'écran (projection perspective ou parallèle) et de commencer à créer quelques images (on pourra aller voir les différents albums sur la géométrie dans l'espace sur cette page).
03/10/2006: Suite à une remarque de Didier Aldebert, voici une précision — le paramètre pour changer de projection est typerepre
qui prendra les valeurs proj
(pour la projection perspective; valeur par défaut) et persp
(pour la projection parallèle). Attention, c'est un type string
donc on codera typerepre:="persp";
.
Mais il manquait quelque chose : les intersections entre droites, entre droites et plans, entre plans. J'ai alors utilisé le module Metapost de géométrie dans l'espace de Denis Roegel. Je n'ai eu qu'à l'adapter à ma programmation des méthodes de R. Dony. Je n'ai donc que peu de mérites; tout avait déjà été fait.
[ Archive à télécharger ] (05/04/2008 -- dernière version)
L'installation de l'archive doit se faire dans un endroit approprié de l'arborescence TeX
, par exemple $texmf/metapost/
.
Avant de débuter la présentation, les commandes de geometriesyr16
étant nombreuses, cette carte ne sera pas inutile.
Elle a été construite avec le package leaflet
.
Le but secondaire de cet ensemble de macros était que le tracé spatial s'inclue naturellement dans l'écriture des autres types de tracés faits avec geometriesyr15.mp. Donc il est fait appel aux mêmes fichiers que ce dernier et également au fichier donymodule.mp qui contient toutes les routines nécessaires aux différents calculs à effectuer dans le cadre du tracé spatial.
Aux macros figure(xa,xb,ya,yb)
- fin
et figuremainlevee(xa,xb,ya,yb)
- finespace
vient s'ajouter maintenant figureespace(xa,xb,ya,yb)
- finespace
. Cela permet, comme les autres, d'inclure le schéma à l'intérieur d'un cadre (Je dois avouer que dans le cas d'un tracé spatial, les dimensions du cadre sont, a priori, difficiles à envisager.) dont le sommet inférieur gauche a pour coordonnées (xa,ya)
et le sommet supérieur droit (xb,yb)
. J'ai conservé la possibilité de pouvoir moduler, au sein du même fichier, plusieurs types de tracés différents et éventuellement alternés.
Dans le cas du tracé spatial, les points mathématiques doivent être définis comme des couleurs. Par exemple color A; A=(0,0,0)
; point A
dont on accèdera aux composantes avec les commandes redpart(A)
, greenpart(A)
, bluepart(A)
.
Une autre différence est, avant le moindre tracé, l'appel à la macro
Initialisation(5,30,20,500)
Elle définit la position de l'oeil de l'observateur. En peu de mots, cet exemple signifie que (5,30,20)
représente les coordonnées sphériques de l'observateur dans le repère objet; 500 représente la distance à l'écran.
À noter également que les macros ou paramètres d'affichage de geometriesyr15
marque_p;pointe(A,B,C);nomme.pos(A);
sont compatibles avec le tracé spatial.
Comme déjà signalé, les points doivent être définis comme des couleurs.
La macro Projette(A)
permet de récupérer les coordonnées de projection (sur l'écran) d'un point A
de l'espace.
Seule la commande
iso(A,B,C,...);
pour obtenir l'isobarycentre des points de l'espace A
, B
, C
,... a été adapté au tracé spatial.
On dispose de définitions propres à la 3e dimension :
(AB)
et (CD)
par la macro IntersectionDroite(A,B,C,D)
(ABC)
et d'une droite(DE)
(un test est fait pour justifier l'existence) par la macro IntersectionPlanDroite(A,B,C,D,E)
A
sur un plan(BCD)
avec la macro ProjectionsurPlan(A,B,C,D)
Pour un dessin de géométrie dans l'espace, la seule façon d'obtenir un cercle avec ce package est d'utiliser la macro
cercles(A,B,O,C,D)
Cela correspond au tracé du cercle de centre A
et passant par B
dans le plan(OCD)
où les vecteurs OC et OD sont des vecteurs orthogonaux. Ils seront ensuite normés par la macro.
Les constructions classiques sont disponibles :
trace segment(A,B); trace demidroite(A,B); trace droite(A,B);
On dispose aussi d'une construction propre à la géométrie spatiale
IntersectionPlanPlan(A,B,C,D,E,F)
qui, je crois, porte bien son nom pour obtenir l'intersection (un test est fait pour vérifier l'existence) des plans (ABC)
et (DEF)
.
On peut utiliser l'addition de couleurs pour la translation et une commande telle 2[A,O]
pour obtenir le symétrique de A
par rapport au point O
.
Voici la liste des codages disponibles, ils sont tous à utiliser avec la commande trace
. Ce ne sont pas les seuls mais, actuellement, ce sont les seuls compatibles avec le tracé spatial.
codeperp(A,B,C,5)
produit un angle droit en B
avec pour épaisseur 5.codesegments(A,B,C,D,n)
code les segments [AB]
et [CD]
avec le codage d'ordre n
: 1, 2, 3 pour autant de traits; 4 pour la croix et 5 pour le cercle.Codelongueur(A,B,C,D,...,n)
code les segments [AB]
, [CD]
,... avec le codage d'ordre n
: 1, 2, 3 pour autant de traits; 4 pour la croix et 5 pour le cercle. Le nombre de lettres présentes dans l'appel de la macro doit être pair. L'ordre dans l'appel n'a pas d'importance, on aurait pu taper Codelongueur(n,A,B,C,D,...)
. L'hachurage est toujours présent et seules les macros appelation(A,B,2mm,btex nom etex)
et cotationmil(A,B,2mm,10,btex nom etex)
ont été adaptées.
Il existe aussi les macros Cube(A,B,C,D,E,F,G,H)
et Pave(A,B,C,D,E,F,G,H)(6,4,3)
pour tracer, avec gestion des faces cachées (par défaut le paramètre pointilles
est "oui"
), un cube et un pavé droit en indiquant la profondeur (6 unités), la largeur (4 unités) et la hauteur (3 unités)
Il faudrait implanter les coordonnées sphériques, les arcs de cercles, quelques solides supplémentaires (pyramide, polygones réguliers), le dessin de plan, et certainement d'autres choses auxquelles je ne pense pas.
04/10/2006 Suite à une demande de Didier Aldebert, création de la macro ProjectionsurDroite
qui permet d'obtenir le projeté orthogonal d'un point sur une droite. Cette macro est disponible dans l'exemple 9.