\subsection{Le module \emph{luadraw\_spherical}} Ce module permet de dessiner un certain nombre d'objets sur une sphère (comme par exemple des cercles, des triangles sphériques, \ldots) sans avoir à gérer à la main les parties visibles ou non visibles. Le dessin se fait en trois temps: \begin{enumerate} \item On définit les caractéristiques de la sphère (centre, rayon, couleur,...) \item On définit les objets à ajouter dans la scène, grâce à des méthodes dédiées. \item On affiche le tout avec la méthode \cmd{g:Dspherical()}. \end{enumerate} Bien sûr, toutes les méthodes de dessin 2D et 3D restent utilisables. \textbf{Utilisation} : ce module ajoute de nouvelles méthodes graphiques à la classe \emph{ld.graph3d}, il ne renvoie rien, les fonctions introduites par ce module vont dans l'espace de noms \emph{luadraw}. \subsubsection{Fonctions globales du module} \begin{itemize} \item \cmd{ld.sM(x, y, z)}: renvoie un point de la sphère, c'est le point $I$ de la sphère tel que la demi-droite $[O,I)$ ($O$ étant le centre de la sphère) passe par le point $A$ de coordonnées cartésiennes $(x,y,z)$. C'est le projeté du point $M(x,y,z)$ sur la sphère partant du centre. \item \cmd{ld.sM(theta, phi)}: où \argu{theta} et \argu{phi} sont des angles en degrés, renvoie un point de la sphère donc les coordonnées sphériques sont \emph{(R,theta,phi)} où $R$ est le rayon de la sphère. \item \cmd{ld.toSphere(A)}: renvoie le projeté du point \argu A sur la sphère partant du centre. \end{itemize} \subsubsection{Définition de la sphère} La sphère est définie avec la méthode \cmd{g:Define\_sphere( options )}, où \argu{options} est une table permettant d'ajuster chaque paramètre. Ceux-ci sont les suivants (avec leur valeur par défaut): \begin{itemize} \item \opt{center=\val{pt3d.Origin}}, \item \opt{radius=\val{3}}, \item \opt{color=\val{"orange"}}, \item \opt{opacity=\val{1}}, \item \opt{mode=\val{ld.mBorder}}, mode d'affichage de la sphère (valeurs possibles; \val{ld.mWireframe} ou \val{ld.mGrid} ou \val{ld.mBorder}), \item \opt{edgecolor=\val{"lightgray"}}, \item \opt{edgestyle="\val{solid"}}, \item \opt{hiddenstyle=\val{ld.Hiddenlinestyle}}, \item \opt{hiddencolor=\val{"gray"}}, \item \opt{edgewidth=\val{4}}, \item \opt{show=\true}, pour montrer ou non la sphère, \item \opt{insidelabelcolor=\val{"darkgray"}} : définit la couleur des labels dont le point d'ancrage est intérieur à la sphère. \item \opt{arrowBstyle=\val{"->"}} : type de flèche en fin de ligne \item \opt{arrowAstyle=\val{"<-"}} : type de flèche en début de ligne \item \opt{arrowABstyle=\val{"<->"}} : très peu utilisée car la plupart du temps les lignes tracées sur la sphère doivent être découpées. \item \opt{hiddendelayed=\false}: avec la valeur \false les lignes cachées sont dessinées à la fin de l'instruction \cmd{g:Dspherical()}, avec la valeur \true elles sont dessinées à la toute fin du graphique en cours ce qui peut être utile si vous avez ajouté après la sphère des éléments qui cachent une partie de celle-ci (cependant on peut modifier ce comportement localement avec l'option \opt{hidden=\true/\false}). \end{itemize} La méthode \cmd{g:Clear\_spherical()} permet de supprimer les objets qui ont été ajoutés à la scène, et remet les valeurs par défaut. \subsubsection{Ajouter un cercle : g:DScircle} \def\writeoptions{L'argument \argu{options} est une table dont les champs qui définissent les options, qui sont (avec leur valeur par défaut)}% La méthode \cmd{g:DScircle(P, options)} permet d'ajouter un cercle sur la sphère, l'argument \argu{P} est une table de la forme $\{A,n\}$ qui représente un plan (passant par $A$ et normal à $n$, deux points 3D). Le cercle est alors défini comme l'intersection de ce plan avec la sphère. \writeoptions : \begin{itemize} \item \opt{style=