# Initiation à BRL-CAD/Éléments de géométrie

L'utilisation de BRL-CAD nécessite de connaître un certain nombre d'éléments de géométrie vectorielle et analytique dans l'espace. Nous exposons ici succinctement les concepts, et nous invitons le lecteur ayant des lacune à consulter
* wikiversity:fr:Géométrie dans l'espace ;
* Propriétés métriques des droites et plans ;
* w:fr:Géométrie analytique.

## Triangles rectangles

Les triangles rectangles sont une des bases fondamentales de la géométrie euclidienne : un vecteur et sa projection sur un axe forment un triangle rectangle. Deux propriétés sont importantes pour nous :
* le théorème de Pythagore : $c={\sqrt {a^{2}+b^{2}}}$ ;
* les relations trigonométriques :
** $\sin {\hat {\mathrm {A} }}={\frac {a}{c}}$,
** $\cos {\hat {\mathrm {A} }}={\frac {b}{c}}$.

## Coordonnées cartésiennes d'un point, composantes d'un vecteur

Nous nous plaçons dans le cas d'un repère orthonormé direct (O, x, y, z), les vecteurs de la base étant $({\vec {\imath }},{\vec {\jmath }},{\vec {k}})$.
Les coordonnées cartésiennes (x, y, z) d'un point M sont les distance algébriques (positives ou négatives) à parcourir selon les axes pour aller de O à M.
Un vecteur est une flèche, définie par une direction — orientation de la droite la supportant —, un sens et une longueur. Les composantes ${\begin{pmatrix}v_{x}\\v_{y}\\v_{z}\end{pmatrix}}$ du vecteur ${\vec {v}}$ sont les distance algébriques (positives ou négatives) à parcourir selon les axes pour aller de l'origine à l'extrémité du vecteur. On a par ailleurs
    ${\vec {v}}=v_{x}\cdot {\vec {\imath }}+v_{y}\cdot {\vec {\jmath }}+v_{z}\cdot {\vec {k}}$.
La norme $\|{\vec {v}}\|$ de ce vecteur — sa longueur — vaut (théorème de Pythagore)
    $\|{\vec {v}}\|={\sqrt {v_{x}^{2}+v_{y}^{2}+v_{z}^{2}}}$.
Les coordonnées (x, y, z) d'un point M sont les composantes ${\begin{pmatrix}x\\y\\z\end{pmatrix}}$ du vecteur ${\overrightarrow {\mathrm {OM} }}$ (flèche allant de O à M).
Soient deux points M$_1$(x$_1$, y$_1$, z$_1$) et M$_2$(x$_2$, y$_2$, z$_2$). Le vecteur ${\overrightarrow {\mathrm {M_{1}M_{2}} }}$ a pour composantes
    ${\overrightarrow {\mathrm {M_{1}M_{2}} }}{\begin{pmatrix}x_{2}-x_{1}\\y_{2}-y_{1}\\z_{2}-z_{1}\end{pmatrix}}$.
La longueur de ce vecteur est
    $\|{\overrightarrow {\mathrm {M_{1}M_{2}} }}\|={\sqrt {(x_{2}-x_{1})^{2}+(y_{2}-y_{1})^{2}+(z_{2}-z_{1})^{2}}}$.
Cela permet de déterminer la distance entre deux points.

## Coordonnées sphériques

Dans de nombreux cas, on connaît la longueur ρ d'un objet et son orientation exprimée sous la forme de deux angles qu'il fait par rapport aux axes de référence : l'azimut θ et l'élévation δ. Si une des extrémités de l'objet est à l'origine du repère, le triplet (ρ, θ, δ) forme les coordonnées sphériques de l'autre extrémité. Les coordonnées cartésiennes s'obtiennent par
    $\left\{{\begin{matrix}x=&\rho \cos \delta \cos \theta \\y=&\rho \cos \delta \sin \theta \\z=&\rho \sin \delta \\\end{matrix}}\right.$

## Vecteur normal à un plan

Dans BRL-CAD, on définit un demi-espace par :
* les composantes d'un vecteur normal au plan P délimitant le demi-espace, pointant vers l'extérieur ;
* la distance entre l'origine O du repère au plan P.
Explicitons ces notions.
Pour désigner l'orientation d'un plan, on indique les composante d'un de ses vecteurs normaux, en général un vecteur normal unitaire. Si ${\vec {u}}$ et ${\vec {v}}$ sont deux vecteurs du plan non parallèles entre eux, alors un vecteur normal est le produit vectoriel des deux vecteurs :
    ${\vec {n}}={\vec {u}}\wedge {\vec {v}}$.
Le produit vectoriel se fait par produits croisés.
Si l'on travaille avec un plan P passant par trois points non alignés A$_1$(x$_1$, y$_1$, z$_1$), A$_2$(x$_2$, y$_2$, z$_2$), A$_3$(x$_3$, y$_3$, z$_3$), on peut prendre comme base du plan les vecteurs ${\overrightarrow {\mathrm {A_{1}A_{2}} }}$ et ${\overrightarrow {\mathrm {A_{1}A_{3}} }}$. Le vecteur ${\vec {n}}={\overrightarrow {\mathrm {A_{1}A_{2}} }}\wedge {\overrightarrow {\mathrm {A_{1}A_{3}} }}$ est donc un vecteur normal du plan.
Si l'on note a, b et c les composante du vecteur normal
    ${\vec {n}}={\begin{pmatrix}a\\b\\c\end{pmatrix}}$
alors le plan a une équation cartésienne
    ax + by + cz + d = 0
le paramètre d étant établi en remplaçant (x, y, z) par les coordonnées d'un des points, par exemple A$_1$. La distance d(O, P) de l'origine du repère O au plan P vaut alors
    $d(\mathrm {O} ,\mathrm {P} )={\frac {|d|}{\sqrt {a^{2}+b^{2}+c^{2}}}}$.
    Pour plus de détails voir : w:fr:Distance d'un point à un plan.

## Coniques

Les coniques sont des courbes planes, appelées ainsi parce qu'elle peuvent s'obtenir par l'intersection entre un cône de révolution et un plan. Un certain nombre de solides de BRL-CAD font référence à ces courbes.

### Ellipse et ellipsoïde

Dans BRL-CAD, l'ellipse sert à définir les ellipsoïdes de révolution — solide obtenu en faisant tourner une ellipse autour d'un de ses axes —, les cônes tronqués — les ellipses étant les sections délimitant les extrémités des troncs de cône —, les cylindres — l'ellipse étant une base du cylindre —, les tores — section droite du tore — et les hyperboloïdes ou paraboloïdes elliptiques.
On peut tracer une ellipse avec deux points fixes et une corde de longueur définie attachée à ces points, le crayon maintenant la corde tendue. Les deux points sont appelés « foyer ». Dans l'espace, cette méthode génère une ellipsoïde de révolution dont l'un des axes passe par les deux foyers.
Le cercle est le cas particulier, dit « dégénéré », où les foyers sont confondus, ou les demi-axes sont de même longueur. BRL-CAD dispose en général de formes primitives pour ces cas particuliers (sphère, ellipsoïde de révolution, tronc de cône de section circulaire, cylindre de section circulaire, tore de section circulaire), mais les objets sont enregistrés dans la base de donnée comme étant elliptiques. Il n'y a pas de primitive pour les hyperboloïdes et paraboloïdes de révolution, il faut les considérer comme des hyperboloïdes et paraboloïdes elliptiques dégénérés.
Une ellipse possède deux axes, un grand et un petit. Le demi-grand axe et le demi-petit axe, notés a et b dans la figure ci-contre, sont respectivement la distance la plus grande et la distance la plus petite entre le centre de l'ellipse et un point de l'ellipse. Dans certains cas, BRL-CAD définit l'ellipse par la donnée :
* de son centre (vertex) ;
* les vecteurs demi-axe ${\vec {\mathrm {A} }}$ et ${\vec {\mathrm {B} }}$.
Dans d'autres cas, il la définit par la donnée :
* de son centre (vertex) ;
* du vecteur demi-grand axe ${\vec {\mathrm {A} }}$, qui est un vecteur directeur du grand axes et dont la longueur est le demi-grand axe ;
* du rapport b entre demi-petit axe et demi-grand axe.
Le paramètre b n'est pas celui de la figure, on a b$_{BRL-CAD}$ = b$_{figure}$/a$_{figure}$.

## Solides élémentaires

* w:Cube, w:Parallélépipède rectangle, w:Polyèdre ;
* w:Cylindre, w:Cylindre (solide) ;
* w:Cône (géométrie) ;
* w:Tronc (géométrie) ;
* w:Sphère, w:Ellipsoïde ;
* w:Tore.

## Notes

Prototypage rapide avec MGED < ↑ > Utilisation de Archer