polarspace.tex

<< Complément sur les matrices

Table des matières

Rotation en trois dimensions >>

Chapitre 7

Systèmes de coordonnées polaires

Tout d’abord, nous devons noter que l’univers est sphérique.

— Nicolas Copernic (1473–1543)

Le système de coordonnées cartésien n’est pas le seul système permettant de cartographier l’espace et de définir des positions avec précision. Une alternative au système cartésien est le système de coordonnées polaires, qui est le sujet de ce chapitre. Si vous n’êtes pas très familier avec les coordonnées polaires, il peut sembler qu’il s’agit d’un sujet ésotérique ou avancé (surtout à cause de la trigonométrie), et vous pourriez être tenté de passer outre. Ne faites pas cette erreur. Il existe de nombreux problèmes très pratiques dans des domaines comme l’IA et le contrôle de caméra dont les solutions (et les difficultés inhérentes !) peuvent être facilement comprises dans le cadre des coordonnées polaires.

Ce chapitre est organisé en sections comme suit :

7.1Espace polaire 2D

Cette section présente le concept de base des coordonnées polaires, en utilisant deux dimensions pour nous échauffer. La section 7.1.1 montre comment utiliser les coordonnées polaires pour décrire une position. La section 7.1.2 aborde l’aliasage des coordonnées polaires. La section 7.1.3 montre comment convertir entre coordonnées polaires et cartésiennes en 2D.

7.1.1Localisation de points à l’aide des coordonnées polaires 2D

Rappelons qu’un espace de coordonnées cartésien 2D possède une origine, qui établit la position de l’espace de coordonnées, et deux axes passant par l’origine, qui établissent l’orientation de l’espace. Un espace de coordonnées polaires 2D possède également une origine (appelée le pôle), dont le but est fondamentalement le même — elle définit le « centre » de l’espace de coordonnées. Cependant, un espace de coordonnées polaires n’a qu’un seul axe, parfois appelé l’axe polaire, généralement représenté comme un rayon issu de l’origine. Il est d’usage dans la littérature mathématique que l’axe polaire pointe vers la droite dans les diagrammes, correspondant ainsi à l’axe +x+ x dans un système cartésien, comme indiqué dans la figure 7.1.

image

Figure 7.1Un espace de coordonnées polaires 2D

Il est souvent pratique d’utiliser des conventions différentes de celles-ci, comme indiqué dans la section 7.3.3. Jusqu’alors, notre discussion adopte les conventions traditionnelles de la littérature mathématique.

Dans le système de coordonnées cartésien, nous décrivions un point 2D à l’aide de deux distances signées, xx et yy . Le système de coordonnées polaires utilise une distance et un angle. Par convention, la distance est généralement assignée à la variable rr (abréviation de « rayon ») et l’angle est généralement appelé θ\theta . La paire de coordonnées polaires (r,θ)(r,\theta) spécifie un point dans l’espace 2D comme suit :

Localisation du point décrit par les coordonnées polaires 2D (𝐫,𝛉)(\mathbf{r},\mathbf{\theta})

Étape 1.Partez de l’origine, en faisant face à la direction de l’axe polaire, et tournez d’un angle θ\theta . Les valeurs positives de θ\theta sont généralement interprétées comme une rotation dans le sens antihoraire, les valeurs négatives comme une rotation dans le sens horaire.

Étape 2.Avancez maintenant depuis l’origine d’une distance de rr unités. Vous êtes arrivé au point décrit par les coordonnées polaires (r,θ)(r,\theta) .

Ce processus est illustré dans la figure 7.2.

image

Figure 7.2 Localisation d’un point à l’aide des coordonnées polaires 2D

image

Figure 7.3 Exemples de points étiquetés avec des coordonnées polaires 2D

En résumé, rr définit la distance du point à l’origine, et θ\theta définit la direction du point par rapport à l’origine. La figure 7.3 montre plusieurs points et leurs coordonnées polaires. Vous devriez étudier cette figure jusqu’à être convaincu de son fonctionnement.

Vous aurez peut-être remarqué que les diagrammes des espaces de coordonnées polaires contiennent des lignes de grille, mais que ces lignes sont légèrement différentes de celles utilisées dans les diagrammes des systèmes de coordonnées cartésiens. Chaque ligne de grille dans un système de coordonnées cartésien est composée de points ayant la même valeur pour l’une des coordonnées. Une ligne verticale est composée de points ayant tous la même coordonnée xx , et une ligne horizontale est composée de points ayant tous la même coordonnée yy . Les lignes de grille dans un système de coordonnées polaires sont similaires :

Une remarque concernant les mesures d’angles. Avec les coordonnées cartésiennes, l’unité de mesure n’avait pas vraiment d’importance. On pouvait interpréter les diagrammes en pieds, mètres, miles, yards, années-lumière, longueurs de barbe, ou picas, peu importait.1 Si vous prenez des données de coordonnées cartésiennes et que vous les interprétez avec des unités physiques différentes, cela fait simplement paraître ce que vous regardez plus grand ou plus petit, mais la forme est proportionnellement la même. Cependant, interpréter la composante angulaire des coordonnées polaires avec des unités angulaires différentes peut produire des résultats considérablement déformés.

Peu importe que vous utilisiez des degrés ou des radians (ou des grads, des mils, des minutes, des signes, des sextants ou des Furmans), tant que vous êtes cohérent. Dans ce livre, nous donnons presque toujours les mesures angulaires spécifiques en degrés avec le symbole o^{o} après le nombre. Nous faisons cela parce que nous sommes des êtres humains, et la plupart des êtres humains qui ne sont pas professeurs de mathématiques trouvent plus facile de travailler avec des nombres entiers plutôt qu’avec des fractions de π\pi . D’ailleurs, le choix du nombre 360 a été spécifiquement conçu pour éviter les fractions dans de nombreux cas courants. Cependant, les machines à calculer2 préfèrent travailler avec des angles exprimés en radians, et donc les extraits de code de ce livre utilisent des radians plutôt que des degrés.

7.1.2Aliasage

Espérons que vous commencez à bien comprendre comment fonctionnent les coordonnées polaires et à quoi ressemble l’espace de coordonnées polaires. Mais il peut y avoir quelques pensées persistantes en arrière-fond. Consciemment ou inconsciemment, vous avez peut-être remarqué une différence fondamentale entre l’espace cartésien et l’espace polaire. Peut-être avez-vous imaginé un espace cartésien 2D comme un continuum parfaitement régulier, comme une feuille impeccable de gélatine, s’étendant infiniment dans toutes les directions, chaque bouchée infiniment fine identique aux autres. Certes, il y a des endroits « spéciaux », comme l’origine et les axes, mais ce sont juste des marques au fond du moule — la gélatine elle-même est la même là que partout ailleurs. Mais quand vous avez imaginé le tissu de l’espace de coordonnées polaires, quelque chose était différent. L’espace de coordonnées polaires a des « coutures », des discontinuités où les choses sont un peu « rapiécées ». Dans le moule de gélatine infiniment grand, il y a plusieurs feuilles de gélatine empilées les unes sur les autres. Quand vous posez votre cuillère en un endroit particulier pour prendre une bouchée, vous vous retrouvez souvent avec plusieurs bouchées ! Il y a un fil dans le bloc de gélatine, une singularité qui nécessite des précautions particulières.

Que votre image mentale de l’espace polaire ait été de la gélatine ou un autre dessert appétissant, vous vous posiez probablement certaines de ces questions :

  1. La distance radiale rr peut-elle être négative ?

  2. θ\theta peut-il sortir de l’intervalle [180o,+180o]\lbrack - 180^{o},{+ 180^{o}}\rbrack ?

  3. La valeur de l’angle θ\theta directement « à l’ouest » de l’origine (c’est-à-dire pour les points où x<0x < 0 et y=0y = 0 en coordonnées cartésiennes) est ambiguë. Vous avez peut-être remarqué qu’aucun de ces points n’est étiqueté dans la figure 7.3. Est-ce que θ\theta est égal à +180o+ 180^{o} ou 180o- 180^{o} pour ces points ?

  4. Les coordonnées polaires de l’origine elle-même sont également ambiguës. Clairement r=0r = 0 , mais quelle valeur de θ\theta devrait-on utiliser ? N’importe quelle valeur ne fonctionnerait-elle pas ?

La réponse à toutes ces questions est « oui ».3 En fait, nous devons faire face à une réalité assez dure concernant l’espace polaire.

Pour tout point donné, il existe une infinité de paires de coordonnées polaires qui peuvent être utilisées pour décrire ce point.

Ce phénomène est connu sous le nom d’aliasage. Deux paires de coordonnées sont dites alias l’une de l’autre si elles ont des valeurs numériques différentes mais font référence au même point dans l’espace. Notez que l’aliasage ne se produit pas dans l’espace cartésien — chaque point dans l’espace se voit attribuer exactement une paire de coordonnées (x,y)(x,y) ; la correspondance entre les points et les paires de coordonnées est biunivoque.

Avant de discuter de certaines difficultés créées par l’aliasage, précisons une tâche pour laquelle l’aliasage ne pose aucun problème : interpréter une paire de coordonnées polaires particulière (r,θ)(r,\theta) et localiser le point dans l’espace auquel ces coordonnées font référence. Quelles que soient les valeurs de rr et θ\theta , nous pouvons trouver une interprétation sensée.

Lorsque r<0r < 0 , il est interprété comme un déplacement « en arrière » — un déplacement dans la direction opposée à celle dans laquelle nous irions si rr était positif. Si θ\theta est en dehors de l’intervalle [180o,+180o]\lbrack - 180^{o},{+ 180^{o}}\rbrack , ce n’est pas une raison de paniquer ; nous pouvons toujours déterminer la direction résultante.4 En d’autres termes, bien qu’il puisse exister des coordonnées polaires « inhabituelles », il n’existe pas de coordonnées polaires « invalides ». Un point donné dans l’espace correspond à de nombreuses paires de coordonnées, mais une paire de coordonnées désigne sans ambiguïté exactement un point dans l’espace.

Une façon de créer un alias pour un point (r,θ)(r,\theta) est d’ajouter un multiple de 360o360^{o} à θ\theta . Cela ajoute une ou plusieurs « révolutions » complètes, mais ne change pas la direction résultante définie par θ\theta . Ainsi (r,θ)(r,\theta) et (r,θ+k360o)(r,\theta + k360^{o}) décrivent le même point, où kk est un entier. Nous pouvons également générer un alias en ajoutant 180o180^{o} à θ\theta et en négativant rr ; ce qui signifie que nous faisons face à l’autre direction, mais nous nous déplaçons du montant opposé.

En général, pour tout point (r,θ)(r,\theta) autre que l’origine, toutes les coordonnées polaires qui sont des alias de (r,θ)(r,\theta) peuvent s’exprimer comme

((1)kr,θ+k180o),\left( ( - 1)^{k}r,\theta + k180^{o} \right),

kk est un entier quelconque.

Ainsi, malgré l’aliasage, nous pouvons tous nous mettre d’accord sur le point décrit par les coordonnées polaires (r,θ)(r,\theta) , quelles que soient les valeurs de rr et θ\theta utilisées. Mais qu’en est-il du problème inverse ? Étant donné un point arbitraire 𝐩\mathbf{p} dans l’espace, pouvons-nous tous nous mettre d’accord sur les coordonnées polaires (r,θ)(r,\theta) à utiliser pour décrire 𝐩\mathbf{p} ? Nous venons de dire qu’il existe une infinité de paires de coordonnées polaires pouvant être utilisées pour décrire la position 𝐩\mathbf{p} . Laquelle utilisons-nous ? La réponse courte est : « N’importe laquelle qui fonctionne est valable, mais il n’y en a qu’une seule qui est la préférable. »

C’est comme réduire des fractions. Nous convenons tous que 13/2613/26 est une fraction parfaitement valide, et il n’y a aucun désaccord sur la valeur de cette fraction. Néanmoins, 13/2613/26 est une fraction « inhabituelle » ; la plupart d’entre nous préféreraient que cette valeur soit exprimée comme 1/21/2 , ce qui est plus simple et plus facile à comprendre. Une fraction est dans le format « préférable » quand elle est exprimée en termes les plus réduits, ce qui signifie qu’il n’existe pas d’entier supérieur à 1 qui divise à la fois le numérateur et le dénominateur. Nous ne devons pas réduire 13/2613/26 à 1/21/2 , mais par convention nous le faisons normalement. Le degré d’engagement d’une personne envers cette convention est généralement basé sur le nombre de points que son professeur de mathématiques lui a enlevés pour ne pas avoir réduit les fractions à leur forme irréductible.5

Pour les coordonnées polaires, la façon « préférable » de décrire un point donné est connue sous le nom de coordonnées canoniques pour ce point. Une paire de coordonnées polaires 2D (r,θ)(r,\theta) est dans l’ensemble canonique si rr est non négatif et θ\theta est dans l’intervalle (180o,180o]( - 180^{o},180^{o}\rbrack . Notez que l’intervalle est semi-ouvert : pour les points directement « à l’ouest » de l’origine (x<0,y=0x < 0,y = 0), nous utiliserons θ=+180o\theta = + 180^{o} . De plus, si r=0r = 0 (ce qui n’est vrai qu’à l’origine), nous assignons généralement θ=0\theta = 0 . Si vous appliquez toutes ces règles, alors pour tout point donné dans l’espace 2D, il y a exactement une façon de représenter ce point en coordonnées polaires canoniques. Nous pouvons résumer cela de façon concise avec une notation mathématique. Une paire de coordonnées polaires (r,θ)(r,\theta) est dans l’ensemble canonique si toutes les conditions suivantes sont vraies :

Conditions satisfaites par les coordonnées canoniques

r0Nous ne mesurons pas les distances « en arrière ».180o<θ180oL’angle est limité à 1/2 révolution.Nous utilisons {+180\degrees} pour « ouest ».r=0θ=0À l’origine, mettre l’angle à zéro.\begin{matrix} & {r \geq 0} & & \text{Nous\ ne\ mesurons\ pas\ les\ distances\ «~en\ arrière~».} \\ & {{- 180^{o}} < \theta \leq 180^{o}} & & \begin{matrix} \text{L'angle\ est\ limité\ à\ 1/2\ révolution.} \\ \text{Nous\ utilisons\ \{+180\textbackslash degrees\}\ pour\ «~ouest~».} \\ \end{matrix} \\ & {r = 0\ \ \Rightarrow\ \ \theta = 0} & & \text{À\ l'origine,\ mettre\ l'angle\ à\ zéro.} \\ \end{matrix}

L’algorithme suivant peut être utilisé pour convertir une paire de coordonnées polaires en sa forme canonique :

Conversion d’une paire de coordonnées polaires (𝐫,𝛉)(\mathbf{r},\mathbf{\theta}) en forme canonique

  1. Si r=0r = 0 , assigner θ=0\theta = 0 .

  2. Si r<0r < 0 , négativer rr et ajouter 180o180^{o} à θ\theta .

  3. Si θ180o\theta \leq - 180^{o} , ajouter 360o360^{o} à θ\theta jusqu’à ce que θ>180o\theta > - 180^{o} .

  4. Si θ>180o\theta > 180^{o} , soustraire 360o360^{o} de θ\theta jusqu’à ce que θ180o\theta \leq 180^{o} .

Le listing 7.1 montre comment cela pourrait être fait en C. Comme discuté dans la section 7.1.1, notre code informatique stocke normalement les angles en radians.

// Distance radiale
float r;

// Angle en RADIANS
float theta;

// Déclaration d'une constante pour 2*pi (360 degrés)
const float TWOPI = 2.0f*PI;

// Vérifier si on est exactement à l'origine
if (r == 0.0f) {

    // À l'origine - mettre theta à zéro
    theta = 0.0f;
} else {

    // Gérer la distance négative
    if (r < 0.0f) {
        r = -r;
        theta += PI;
    }

    // Theta hors limites ? Notez que ce test if() n'est pas
    // strictement nécessaire, mais on essaie d'éviter les
    // opérations en virgule flottante si elles ne sont pas
    // nécessaires. Pourquoi subir une perte de précision en
    // virgule flottante si on n'en a pas besoin ?
    if (fabs(theta) > PI) {

        // Décalage de PI
        theta += PI;

        // Ramener dans l'intervalle 0...TWOPI
        theta -= floor(theta / TWOPI) * TWOPI;

        // Annuler le décalage, ramenant l'angle dans -PI...PI
        theta -= PI;
    }
}

Les lecteurs pointilleux remarqueront peut-être que si ce code garantit que θ\theta est dans l’intervalle fermé [π,+π]\lbrack - \pi,{+ \pi}\rbrack , il n’évite pas explicitement le cas où θ=π\theta = - \pi . La valeur de π\pi n’est pas exactement représentable en virgule flottante. En fait, comme π\pi est un nombre irrationnel, il ne peut jamais être représenté exactement en virgule flottante, ni avec un nombre fini de chiffres dans quelque base que ce soit ! La valeur de la constante PI dans notre code n’est pas exactement égale à π\pi , c’est le nombre le plus proche de π\pi représentable par un float. Utiliser l’arithmétique à double précision peut nous rapprocher de la valeur exacte, mais cela reste imprécis. Vous pouvez donc considérer cette fonction comme renvoyant une valeur de l’intervalle ouvert (π,+π)( - \pi, + \pi) .

7.1.3Conversion entre coordonnées cartésiennes et polaires en 2D

Cette section décrit comment convertir entre les systèmes de coordonnées cartésien et polaire en 2D. Au fait, si vous vous demandiez quand nous allions faire usage de la trigonométrie que nous avons passée en revue dans la section 1.4.5, c’est maintenant.

La figure 7.4 montre la géométrie impliquée dans la conversion entre coordonnées polaires et cartésiennes en 2D.

image

Figure 7.4 Conversion entre coordonnées cartésiennes et polaires

La conversion des coordonnées polaires (r,θ)(r,\theta) en coordonnées cartésiennes correspondantes découle presque immédiatement des définitions du sinus et du cosinus :

Conversion des coordonnées polaires 2D en cartésiennes

x=rcosθ;y=rsinθ.\begin{matrix} x & {= r\cos\theta;} & y & {= r\sin\theta.} \\ \end{matrix}

Notez que l’aliasage n’est pas un problème ; l’équation (7.1) fonctionne même pour des valeurs « inhabituelles » de rr et θ\theta .

Le calcul des coordonnées polaires (r,θ)(r,\theta) à partir des coordonnées cartésiennes (x,y)(x,y) est la partie délicate. En raison de l’aliasage, il n’y a pas qu’une seule bonne réponse ; il existe une infinité de paires (r,θ)(r,\theta) décrivant le point (x,y)(x,y) . En général, nous voulons les coordonnées canoniques.

Nous pouvons facilement calculer rr en utilisant le théorème de Pythagore :

r=x2+y2.r = \sqrt{x^{2} + y^{2}}.

Puisque la fonction racine carrée renvoie toujours la racine positive, nous n’avons pas à nous inquiéter que rr fasse sortir nos coordonnées polaires calculées de l’ensemble canonique.

Calculer rr était assez simple, maintenant résolvons pour θ\theta :

yx=rsinθrcosθ,yx=sinθcosθ,y/x=tanθ,θ=arctan(y/x).\begin{matrix} \frac{y}{x} & {= \frac{r\sin\theta}{r\cos\theta},} \\ \frac{y}{x} & {= \frac{\sin\theta}{\cos\theta},} \\ {y/x} & {= \tan\theta,} \\ \theta & {= \arctan(y/x).} \\ \end{matrix}

Malheureusement, cette approche présente deux problèmes. Le premier est que si x=0x = 0 , la division est indéfinie. Le second est que la fonction arctan\arctan a une plage uniquement de [90o,+90o]\lbrack - 90^{o},{+ 90^{o}}\rbrack . Le problème fondamental est que la division y/xy/x supprime effectivement certaines informations utiles. xx et yy peuvent être positifs ou négatifs, donnant quatre possibilités différentes, correspondant aux quatre quadrants différents pouvant contenir le point. Mais la division y/xy/x donne une valeur unique. Si nous négativons xx et yy , nous nous déplaçons dans un quadrant différent du plan, mais le rapport y/xy/x ne change pas.

En raison de ces problèmes, l’équation complète pour la conversion des coordonnées cartésiennes en polaires nécessite des « tests conditionnels » pour gérer chaque quadrant, et est un peu compliquée pour les « mathématiciens ». Heureusement, les « informaticiens » disposent de la fonction atan2, qui calcule correctement l’angle θ\theta pour tous xx et yy , à l’exception du cas délicat à l’origine. En empruntant cette notation, définissons une fonction atan2atan2 que nous pouvons utiliser dans ce livre dans notre notation mathématique :

La fonction 𝐚𝐭𝐚𝐧2\mathbf{a}\mathbf{t}\mathbf{a}\mathbf{n}2 utilisée dans ce livre

atan2(y,x)={0,x=0,y=0,+90o,x=0,y>0,90o,x=0,y<0,arctan(y/x),x>0,arctan(y/x)+180o,x<0,y0,arctan(y/x)180o,x<0,y<0.\begin{matrix} {{atan2}(y,x) = \left\{ \begin{matrix} {0,} & {x = 0,y = 0,} \\ {+ 90^{o},} & {x = 0,y > 0,} \\ {- 90^{o},} & {x = 0,y < 0,} \\ {\arctan(y/x),} & {x > 0,} \\ {\arctan(y/x) + 180^{o},} & {x < 0,y \geq 0,} \\ {\arctan(y/x) - 180^{o},} & {x < 0,y < 0.} \\ \end{matrix} \right.} \\ \end{matrix}

Faisons deux observations clés concernant l’équation (7.2). Premièrement, en suivant la convention de la fonction atan2 présente dans les bibliothèques standard de la plupart des langages informatiques, les arguments sont dans l’ordre « inverse » : y,xy,x . Vous pouvez soit vous rappeler qu’il est inversé, soit trouver commode de vous souvenir de la similitude lexicale entre atan2(y,x){atan2}(y,x) et arctan(y/x)\arctan(y/x) . Ou retenez que tanθ=sinθ/cosθ\tan\theta = \sin\theta/\cos\theta , et θ=atan2(sinθ,cosθ)\theta = {atan2}(\sin\theta,\cos\theta) .

Deuxièmement, dans de nombreuses bibliothèques logicielles, la fonction atan2 est indéfinie à l’origine, quand x=y=0x = y = 0 . La fonction atan2atan2 que nous définissons pour utilisation dans nos équations dans le texte de ce livre est définie de telle sorte que atan2(0,0)=0{atan2}(0,0) = 0 . Dans nos extraits de code, nous utilisons la fonction de bibliothèque atan2 et gérons explicitement l’origine comme un cas spécial, mais dans nos équations, nous utilisons la fonction abstraite atan2atan2 , qui est définie à l’origine. (Notez la différence de police.)

Revenons à la tâche en cours : calcul de l’angle polaire θ\theta à partir d’un point des coordonnées cartésiennes 2D. Armés de la fonction atan2atan2 , nous pouvons facilement convertir des coordonnées cartésiennes 2D en forme polaire :

Conversion de coordonnées cartésiennes 2D en coordonnées polaires

r=x2+y2;θ=atan2(y,x).\begin{matrix} r & {= \sqrt{x^{2} + y^{2}};} & \theta & {= {atan2}(y,x).} \\ \end{matrix}

Le code C du listing 7.2 montre comment convertir une paire de coordonnées cartésiennes (x,y)(x,y) en coordonnées polaires canoniques correspondantes (r,θ)(r,\theta) .

// Entrée : coordonnées cartésiennes
float x,y;

// Sortie : distance radiale polaire, et angle en RADIANS
float r, theta;

// Vérifier si on est à l'origine
if (x == 0.0f && y == 0.0f) {

    // À l'origine - mettre les deux coordonnées polaires à zéro
    r = 0.0f;
    theta = 0.0f;
} else {

    // Calculer les valeurs. Quelle merveilleuse fonction atan2 !
    r = sqrt(x*x + y*y);
    theta = atan2(y,x);
}

7.2Pourquoi utiliser les coordonnées polaires ?

Avec toutes les complications liées à l’aliasage, aux degrés et radians, et à la trigonométrie, pourquoi quelqu’un utiliserait-il des coordonnées polaires alors que les coordonnées cartésiennes fonctionnent très bien sans aucun fil dans la gélatine ? En réalité, vous utilisez probablement les coordonnées polaires plus souvent que les coordonnées cartésiennes. Elles apparaissent fréquemment dans la conversation informelle.

Par exemple, l’un des auteurs vient d’Alvarado, au Texas. Lorsque les gens demandent où se trouve Alvarado, il leur dit : « À environ 24 km au sud-est de Burleson. » Il décrit l’emplacement d’Alvarado en utilisant des coordonnées polaires, en spécifiant une origine (Burleson), une distance (24 km) et un angle (sud-est). Bien sûr, la plupart des gens qui ne sont pas du Texas (et beaucoup de gens qui le sont) ne savent pas non plus où se trouve Burleson, il est donc plus naturel de changer de système de coordonnées polaires et de dire : « À environ 80 km au sud-ouest de Dallas. » Heureusement, même les gens hors des États-Unis connaissent généralement Dallas.6 Au fait, tout le monde au Texas ne porte pas un chapeau de cowboy et des santiags. En revanche, nous utilisons bien les mots « y’all » et « fixin’, ».7

En résumé, les coordonnées polaires apparaissent souvent parce que les gens pensent naturellement aux emplacements en termes de distance et de direction. (Bien sûr, nous ne sommes souvent pas très précis lorsque nous utilisons des coordonnées polaires, mais la précision n’est pas vraiment le point fort du cerveau.) Les coordonnées cartésiennes ne sont tout simplement pas notre langue maternelle. C’est l’inverse pour les ordinateurs — en général, lorsque l’on utilise un ordinateur pour résoudre des problèmes géométriques, il est plus facile d’utiliser des coordonnées cartésiennes que polaires. Nous discutons à nouveau de cette différence entre humains et ordinateurs dans le chapitre 8 où nous comparons différentes méthodes pour décrire l’orientation en 3D.

L’une des raisons de notre affinité pour les coordonnées polaires est peut-être que chaque coordonnée polaire a une signification concrète par elle-même. Un pilote de chasse peut dire à un autre : « Bogey, six heures !8 » Au milieu d’un combat aérien, ces courageux pilotes de chasse utilisent en réalité des coordonnées polaires. « Six heures » signifie « derrière vous » et correspond essentiellement à l’angle θ\theta que nous avons étudié. Notez que le pilote n’avait pas besoin de préciser une distance, vraisemblablement parce que l’autre pilote pouvait se retourner et voir par lui-même plus vite que l’autre ne pourrait le lui dire. Ainsi, une seule coordonnée polaire (dans ce cas, une direction) est déjà une information utile. Le même type d’exemples peut être donné pour l’autre coordonnée polaire, la distance (rr). Comparez cela avec l’utilité d’une seule coordonnée cartésienne. Imaginez un pilote de chasse dire : « Bogey, x=300 mx = 300\text{~m} ! » Cette information est plus difficile à traiter et moins utile.

Dans les jeux vidéo, l’une des occasions les plus courantes où les coordonnées polaires apparaissent est lorsque nous voulons orienter une caméra, une arme ou autre chose vers une cible. Ce problème est facilement résolu en utilisant une conversion de coordonnées cartésiennes en polaires, puisque ce sont généralement les angles dont nous avons besoin. Même lorsque les données angulaires peuvent être évitées à ces fins (nous pourrions être en mesure d’utiliser entièrement des opérations vectorielles, par exemple, si l’orientation de l’objet est spécifiée à l’aide d’une matrice), les coordonnées polaires restent utiles. Généralement, les caméras, les tourelles et les bras des assassins ne peuvent pas se déplacer instantanément (aussi bon que soit l’assassin), mais les cibles se déplacent. Dans cette situation, nous « suivons » généralement la cible d’une certaine manière. Ce suivi (quel que soit le type de système de contrôle utilisé, qu’il s’agisse d’un simple limiteur de vitesse, d’un retard ou d’un système du second ordre) se fait généralement mieux dans l’espace polaire plutôt que, par exemple, en interpolant une position cible dans l’espace 3D.

Les coordonnées polaires sont également souvent rencontrées avec des systèmes d’acquisition de données physiques qui fournissent des mesures brutes de base en termes de distance et de direction.

Une dernière occasion méritant d’être mentionnée où les coordonnées polaires sont plus naturelles à utiliser que les coordonnées cartésiennes est lorsqu’on se déplace sur la surface d’une sphère. Quand quelqu’un ferait-il cela ? Vous le faites probablement en ce moment même. Les coordonnées latitude/longitude utilisées pour décrire précisément les emplacements géographiques ne sont pas vraiment des coordonnées cartésiennes ; ce sont des coordonnées polaires. (Pour être plus précis, il s’agit d’un type de coordonnées polaires 3D appelées coordonnées sphériques, dont nous parlerons dans la section 7.3.2.) Bien sûr, si vous regardez une zone relativement petite par rapport à la taille de la planète et que vous n’êtes pas trop loin de l’équateur, vous pouvez utiliser la latitude et la longitude comme coordonnées cartésiennes sans trop de problèmes. Nous le faisons tout le temps à Dallas.

7.3Espace polaire 3D

Les coordonnées polaires peuvent être utilisées en 3D comme en 2D. Comme vous l’avez probablement déjà deviné, les coordonnées polaires 3D ont trois valeurs. Mais la troisième coordonnée est-elle une autre distance linéaire (comme rr) ou un autre angle (comme θ\theta) ? En fait, nous pouvons choisir l’une ou l’autre ; il existe deux types différents de coordonnées polaires 3D. Si nous ajoutons une distance linéaire, nous avons les coordonnées cylindriques, qui font l’objet de la section suivante. Si nous ajoutons un autre angle, nous avons les coordonnées sphériques, abordées dans les sections ultérieures. Bien que les coordonnées cylindriques soient moins couramment utilisées que les coordonnées sphériques, nous les décrivons en premier car elles sont plus faciles à comprendre.

La section 7.3.1 traite d’un type de coordonnées polaires 3D, les coordonnées cylindriques, et la section 7.3.2 traite de l’autre type, les coordonnées sphériques. La section 7.3.3 présente quelques conventions alternatives de coordonnées polaires souvent plus adaptées au code de jeux vidéo. La section 7.3.4 décrit les types spéciaux d’aliasage pouvant se produire dans l’espace de coordonnées sphériques. La section 7.3.5 montre comment convertir entre les coordonnées sphériques et les coordonnées cartésiennes 3D.

7.3.1Coordonnées cylindriques

image

Figure 7.5 Coordonnées cylindriques

Pour étendre les coordonnées cartésiennes en 3D, on part du système 2D, utilisé pour travailler dans le plan, et on ajoute un troisième axe perpendiculaire à ce plan. C’est essentiellement ainsi que les coordonnées cylindriques étendent les coordonnées polaires en 3D. Appelons ce troisième axe l’axe zz , comme nous le faisons avec les coordonnées cartésiennes. Pour localiser le point décrit par les coordonnées cylindriques (r,θ,z)(r,\theta,z) , nous commençons par traiter rr et θ\theta comme pour les coordonnées polaires 2D, puis nous nous déplaçons « vers le haut » ou « vers le bas » en fonction de la coordonnée zz . La figure 7.5 montre comment localiser un point (r,θ,z)(r,\theta,z) à l’aide des coordonnées cylindriques.

La conversion entre les coordonnées cartésiennes 3D et les coordonnées cylindriques est simple. La coordonnée zz est la même dans l’une ou l’autre représentation, et nous convertissons entre (x,y)(x,y) et (r,θ)(r,\theta) via les techniques 2D de la section 7.1.3.

Nous n’utilisons pas beaucoup les coordonnées cylindriques dans ce livre, mais elles sont utiles dans certaines situations lorsqu’on travaille dans un environnement de forme cylindrique ou qu’on décrit un objet de forme cylindrique. De même que les gens utilisent souvent les coordonnées polaires sans le savoir (voir la section 7.2), les gens qui ne connaissent pas le terme « coordonnées cylindriques » peuvent tout de même les utiliser. Sachez que même lorsque les gens reconnaissent qu’ils utilisent des coordonnées cylindriques, la notation et les conventions varient largement. Par exemple, certains utilisent la notation (ρ,ϕ,z)(\rho,\phi,z) . De plus, l’orientation des axes et la définition de la rotation positive sont définies selon ce qui est le plus pratique pour une situation donnée.

7.3.2Coordonnées sphériques

Le type le plus courant de système de coordonnées polaires 3D est un système de coordonnées sphériques. Alors qu’un ensemble de coordonnées cylindriques a deux distances et un angle, un ensemble de coordonnées sphériques a deux angles et une distance.

Rappelons l’essentiel du fonctionnement des coordonnées polaires en 2D. Un point est spécifié en donnant une direction (θ\theta) et une distance (rr). Les coordonnées sphériques fonctionnent également en définissant une direction et une distance ; la seule différence est qu’en 3D il faut deux angles pour définir une direction. Il y a aussi deux axes polaires dans un espace sphérique 3D. Le premier axe est « horizontal » et correspond à l’axe polaire en coordonnées polaires 2D ou à +x+ x dans nos conventions cartésiennes 3D. L’autre axe est vertical, correspondant à +y+ y dans nos conventions cartésiennes 3D.

Différentes personnes utilisent des conventions et des notations différentes pour les coordonnées sphériques, mais la plupart des mathématiciens se sont mis d’accord sur le fait que les deux angles sont nommés θ\theta et ϕ\phi .9 Les mathématiciens s’accordent également en général sur la façon dont ces deux angles sont interprétés pour définir une direction. L’ensemble du processus fonctionne ainsi :

Localisation de points en 3D à l’aide des coordonnées polaires

Étape 1.Commencez debout à l’origine, face à la direction de l’axe polaire horizontal. L’axe vertical pointe de vos pieds vers votre tête. Pointez votre bras droit10 directement vers le haut, dans la direction de l’axe polaire vertical.

Étape 2.Tournez dans le sens antihoraire d’un angle θ\theta (de la même façon que nous l’avons fait pour les coordonnées polaires 2D).

Étape 3.Faites pivoter votre bras vers le bas d’un angle ϕ\phi . Votre bras pointe maintenant dans la direction spécifiée par les angles polaires θ\theta et ϕ\phi .

Étape 4.Déplacez-vous depuis l’origine dans cette direction d’une distance rr . Vous êtes arrivé au point décrit par les coordonnées sphériques (r,θ,ϕ)(r,\theta,\phi) .

La figure 7.6 montre comment cela fonctionne.

image

Figure 7.6 Coordonnées sphériques utilisées par les mathématiciens

D’autres personnes utilisent des notations différentes. La convention dans laquelle les symboles θ\theta et ϕ\phi sont inversés est fréquemment utilisée, notamment en physique. D’autres auteurs, peut-être désireux de remplacer toutes les lettres romaines par des lettres grecques, utilisent ρ\rho au lieu de rr comme nom de la distance radiale. Nous présentons quelques conventions un peu plus pratiques à des fins de jeux vidéo dans la section 7.3.3.

L’angle horizontal θ\theta est connu sous le nom d’azimut, et ϕ\phi est le zénith. D’autres termes que vous avez probablement entendus sont longitude et latitude. La longitude est essentiellement la même que θ\theta , et la latitude est l’angle d’inclinaison, 90oϕ90^{o} - \phi . Ainsi, le système latitude/longitude pour décrire les emplacements sur la planète Terre est en réalité un type de système de coordonnées sphériques. Nous nous intéressons souvent uniquement à la description de points sur la surface de la planète, et donc la distance radiale rr , qui mesurerait la distance jusqu’au centre de la Terre, n’est pas nécessaire. On peut considérer rr comme étant approximativement équivalent à l’altitude, bien que la valeur soit décalée par le rayon de la Terre11 pour rendre le niveau du sol ou de la mer égal à zéro, selon ce qu’on entend exactement par « altitude ».

7.3.3Quelques conventions polaires utiles dans les mondes virtuels 3D

Le système de coordonnées sphériques décrit dans la section précédente est le système traditionnel en main droite utilisé par les mathématiciens, et les formules de conversion entre les coordonnées cartésiennes et sphériques sont plutôt élégantes sous ces hypothèses. Cependant, pour la plupart des gens dans l’industrie du jeu vidéo, cette élégance n’est qu’un avantage mineur à peser contre les inconvénients irritants suivants des conventions traditionnelles :

Décrivons quelques conventions de coordonnées sphériques mieux adaptées à nos besoins. Nous n’avons aucune objection contre les conventions standard pour la distance radiale rr , et nous préservons donc à la fois le nom et la sémantique de cette coordonnée. Nos griefs concernent principalement les deux angles, que nous renommons et redéfinissons tous les deux.

image

Figure 7.7 Angles de cap et de tangage utilisés dans ce livre

L’angle horizontal θ\theta est renommé hh , abréviation de heading (cap), similaire à un cap de boussole. Un cap de zéro indique une direction « en avant » ou « vers le nord », selon le contexte. Cela correspond aux conventions aéronautiques standard. Si nous supposons nos conventions cartésiennes 3D décrites dans la section 1.3.4, alors un cap de zéro (et donc notre axe polaire principal) correspond à +z+ z . De plus, puisque nous préférons un système de coordonnées en main gauche, la rotation positive tourne dans le sens horaire vue d’en haut.

L’angle vertical ϕ\phi est renommé pp , abréviation de pitch (tangage), et mesure dans quelle mesure nous regardons vers le haut ou vers le bas. La valeur de tangage par défaut de zéro indique une direction horizontale, ce que la plupart d’entre nous attendons intuitivement. Peut-être moins intuitivement, un tangage positif tourne vers le bas, ce qui signifie que le tangage mesure en réalité l’angle de déclinaison. Cela peut sembler un mauvais choix, mais il est cohérent avec la règle de la main gauche (voir la figure 1.14). Nous verrons plus loin comment la cohérence avec la règle de la main gauche porte ses fruits, valant bien cette légère contrariété intuitive.

La figure 7.7 montre comment le cap et le tangage conspire pour définir une direction.

7.3.4Aliasage des coordonnées sphériques

La section 7.1.2 a examiné le phénomène gênant de l’aliasage des coordonnées polaires 2D : des paires de coordonnées numériques différentes sont des alias l’une de l’autre lorsqu’elles font référence au même point dans l’espace. Trois types fondamentaux d’aliasage ont été présentés, que nous rappelons ici car ils sont également présents dans le système de coordonnées sphériques 3D.

Le premier moyen infaillible de générer un alias est d’ajouter un multiple de 360o360^{o} à l’un ou l’autre angle. Il s’agit vraiment de la forme d’aliasage la plus triviale, causée par la nature cyclique des mesures angulaires.

Les deux autres formes d’aliasage sont un peu plus intéressantes car elles sont causées par l’interdépendance des coordonnées. En d’autres termes, la signification d’une coordonnée, rr , dépend des valeurs de l’autre (ou des autres) coordonnée(s), les angles. Cette dépendance crée une forme d’aliasage et une singularité :

Ainsi, les coordonnées sphériques présentent un comportement d’aliasage similaire parce que la signification de rr change selon les valeurs des angles. Cependant, les coordonnées sphériques souffrent également de formes supplémentaires d’aliasage parce que l’angle de tangage pivote autour d’un axe qui varie selon l’angle de cap. Cela crée une forme supplémentaire d’aliasage et une singularité supplémentaire, analogues à celles causées par la dépendance de rr sur la direction.

Tout comme nous l’avons fait en 2D, nous pouvons définir un ensemble de coordonnées sphériques canoniques tel que tout point donné dans l’espace 3D est mappé sans ambiguïté à exactement un triplet de coordonnées dans l’ensemble canonique. Nous plaçons des restrictions similaires sur rr et hh comme nous l’avons fait pour les coordonnées polaires. Deux contraintes supplémentaires liées à l’angle de tangage sont ajoutées. Premièrement, le tangage est restreint à l’intervalle [90o,+90o]\lbrack - 90^{o}, + 90^{o}\rbrack . Deuxièmement, comme la valeur de cap est sans intérêt lorsque le tangage atteint les valeurs extrêmes dans le cas de blocage de cardan, nous imposons h=0h = 0 dans ce cas. Les conditions satisfaites par les points dans l’ensemble canonique sont résumées par les critères ci-dessous. (Notez que ces critères supposent nos conventions de cap et de tangage, et non les conventions mathématiques traditionnelles avec θ\theta et ϕ\phi .)

Conditions satisfaites par les coordonnées sphériques canoniques, en supposant les conventions pour les coordonnées sphériques de ce livre

r0Nous ne mesurons pas les distances « en arrière ».180o<h180oLe cap est limité à 1/2 révolution.Nous utilisons {+180\degrees} pour « sud ».90op90oLes limites du tangage sont tout droit vers le haut et vers le bas.On ne peut pas « se renverser ».r=0h=p=0À l’origine, les angles sont mis à zéro.|p|=90oh=0En regardant directement vers le haut ou le bas,le cap est mis à zéro.\begin{matrix} & {r \geq 0} & & \text{Nous\ ne\ mesurons\ pas\ les\ distances\ «~en\ arrière~».} \\ & {{- 180^{o}} < h \leq 180^{o}} & & \begin{matrix} \text{Le\ cap\ est\ limité\ à\ 1/2\ révolution.} \\ \text{Nous\ utilisons\ \{+180\textbackslash degrees\}\ pour\ «~sud~».} \\ \end{matrix} \\ & {{- 90^{o}} \leq p \leq 90^{o}} & & \begin{matrix} \text{Les\ limites\ du\ tangage\ sont\ tout\ droit\ vers\ le\ haut\ et\ vers\ le\ bas.} \\ \text{On\ ne\ peut\ pas\ «~se\ renverser~».} \\ \end{matrix} \\ & {r = 0\ \ \Rightarrow\ \ h = p = 0} & & \text{À\ l'origine,\ les\ angles\ sont\ mis\ à\ zéro.} \\ & {|p| = 90^{o}\ \ \Rightarrow\ \ h = 0} & & \begin{matrix} \text{En\ regardant\ directement\ vers\ le\ haut\ ou\ le\ bas,} \\ \text{le\ cap\ est\ mis\ à\ zéro.} \\ \end{matrix} \\ \end{matrix}

L’algorithme suivant peut être utilisé pour convertir un triplet de coordonnées sphériques en sa forme canonique :

Conversion d’un triplet de coordonnées sphériques (𝐫,𝐡,𝐩)(\mathbf{r},\mathbf{h},\mathbf{p}) en forme canonique

  1. Si r=0r = 0 , assigner h=p=0h = p = 0 .

  2. Si r<0r < 0 , négativer rr , ajouter 180o180^{o} à hh , et négativer pp .

  3. Si p<90op < - 90^{o} , ajouter 360o360^{o} à pp jusqu’à ce que p90op \geq - 90^{o} .

  4. Si p>270op > 270^{o} , soustraire 360o360^{o} de pp jusqu’à ce que p270op \leq 270^{o} .

  5. Si p>90op > 90^{o} , ajouter 180o180^{o} à hh et poser p=180opp = 180^{o} - p .

  6. Si h180oh \leq - 180^{o} , ajouter 360o360^{o} à hh jusqu’à ce que h>180oh > - 180^{o} .

  7. Si h>180oh > 180^{o} , soustraire 360o360^{o} de hh jusqu’à ce que h180oh \leq 180^{o} .

Le listing 7.3 montre comment cela pourrait être fait en C. Rappelons que les ordinateurs préfèrent les radians.

// Distance radiale
float r;

// Angles en radians
float heading, pitch;

// Déclaration de quelques constantes
const float TWOPI = 2.0f*PI; // 360 degrés
const float PIOVERTWO = PI/2.0f; // 90 degrés

// Vérifier si on est exactement à l'origine
if (r == 0.0f) {

    // À l'origine - mettre les angles à zéro
    heading = pitch = 0.0f;
} else {

    // Gérer la distance négative
    if (r < 0.0f) {
        r = -r;
        heading += PI;
        pitch = -pitch;
    }

    // Tangage hors limites ?
    if (fabs(pitch) > PIOVERTWO) {

        // Décalage de 90 degrés
        pitch += PIOVERTWO;

        // Ramener dans l'intervalle 0...TWOPI
        pitch -= floor(pitch / TWOPI) * TWOPI;

        // Hors limites ?
        if (pitch > PI) {

            // Retourner le cap
            heading += PI;

            // Annuler le décalage et poser aussi pitch = 180-pitch
            pitch = 3.0f*PI/2.0f - pitch; // p = 270 degrés - p

        } else {

            // Annuler le décalage, ramenant pitch dans l'intervalle
            // -90 degrés ... +90 degrés
            pitch -= PIOVERTWO;
        }
    }

    // Blocage de cardan ? Test avec une tolérance relativement petite
    // proche des limites de la précision simple.
    if (fabs(pitch) >= PIOVERTWO*0.9999) {
        heading = 0.0f;
    } else {

        // Envelopper le cap, en évitant les calculs si possible
        // pour préserver la précision
        if (fabs(heading) > PI) {

            // Décalage de PI
            heading += PI;

            // Ramener dans l'intervalle 0...TWOPI
            heading -= floor(heading / TWOPI) * TWOPI;

            // Annuler le décalage, ramenant l'angle dans -PI...PI
            heading -= PI;
        }
    }
}

7.3.5 Conversion entre coordonnées sphériques et cartésiennes

image

Figure 7.8 Coordonnées sphériques et cartésiennes pour les mathématiciens

Voyons si nous pouvons convertir des coordonnées sphériques en coordonnées cartésiennes 3D. Examinons la figure 7.8, qui montre à la fois les coordonnées sphériques et cartésiennes. Nous développons d’abord les conversions en utilisant les conventions traditionnelles en main droite pour les espaces cartésien et sphérique, puis nous montrons les conversions applicables à nos conventions en main gauche.

Remarquez dans la figure 7.8 que nous avons introduit une nouvelle variable dd , qui est la distance horizontale entre le point et l’axe vertical. D’après le triangle rectangle avec hypoténuse rr et cathètes dd et zz , nous obtenons

z/r=cosϕ,z=rcosϕ.\begin{matrix} {z/r} & {= \cos\phi,} \\ z & {= r\cos\phi.} \\ \end{matrix}

et il nous reste à calculer xx et yy .

Considérons que si ϕ=90o\phi = 90^{o} , nous avons essentiellement des coordonnées polaires 2D. Assignons xx^{\prime} et yy^{\prime} pour représenter les coordonnées xx et yy qui résulteraient si ϕ=90o\phi = 90^{o} . D’après la section 7.1.3, nous avons

x=rcosθ,y=rsinθ.\begin{matrix} x^{\prime} & {= r\cos\theta,} & y^{\prime} & {= r\sin\theta.} \\ \end{matrix}

Remarquez que quand ϕ=90o\phi = 90^{o} , d=rd = r . À mesure que ϕ\phi diminue, dd diminue, et par les propriétés des triangles semblables, x/x=y/y=d/rx/x^{\prime} = y/y^{\prime} = d/r . En regardant à nouveau drz\bigtriangleup drz , nous observons que d/r=sinϕd/r = \sin\phi . En rassemblant tout cela, nous avons

Conversion des coordonnées sphériques des mathématiciens en coordonnées cartésiennes 3D

x=rsinϕcosθ,y=rsinϕsinθ,z=rcosϕ.\begin{matrix} x & {= r\sin\phi\ \cos\theta,} & y & {= r\sin\phi\ \sin\theta,} & z & {= r\cos\phi.} \\ \end{matrix}

Ces équations s’appliquent pour les mathématiciens en système main droite. Si nous adoptons nos conventions pour les espaces cartésien (voir la section 1.3.4) et sphérique (voir la section 7.3.3), les formules suivantes doivent être utilisées :

Conversion sphérique-cartésienne pour les conventions utilisées dans ce livre

x=rcospsinh,y=rsinp,z=rcospcosh.\begin{matrix} x & {= r\cos p\ \sin h,} & y & {= - r\sin p,} & z & {= r\cos p\ \cos h.} \\ \end{matrix}

La conversion des coordonnées cartésiennes en coordonnées sphériques est plus compliquée, en raison de l’aliasage. Nous savons qu’il existe plusieurs ensembles de coordonnées sphériques qui correspondent à toute position 3D donnée ; nous voulons les coordonnées canoniques. La dérivation qui suit utilise nos conventions préférées inspirées de l’aviation dans l’équation (7.3) car ce sont les conventions les plus couramment utilisées dans les jeux vidéo.

Comme pour les coordonnées polaires 2D, le calcul de rr est une application directe de la formule des distances :

r=x2+y2+z2.r = \sqrt{x^{2} + y^{2} + z^{2}}.

Comme précédemment, la singularité à l’origine, où r=0r = 0 , est traitée comme un cas spécial.

L’angle de cap est étonnamment simple à calculer en utilisant notre fonction atan2atan2 :

h=atan2(x,z).h = {atan2}(x,z).

L’astuce fonctionne parce que atan2atan2 n’utilise que le rapport de ses arguments et leurs signes. En examinant l’équation (7.3), nous remarquons que le facteur d’échelle rcospr\cos p est commun à la fois à xx et à zz . De plus, en utilisant les coordonnées canoniques, nous supposons r>0r > 0 et 90op90o- 90^{o} \leq p \leq 90^{o} ; ainsi, cosp0\cos p \geq 0 et le facteur d’échelle commun est toujours non négatif. Le cas de blocage de cardan est pris en charge par notre définition de atan2atan2 .

Finalement, une fois que nous connaissons rr , nous pouvons résoudre pour pp à partir de yy :

y=rsinp,y/r=sinp,p=arcsin(y/r).\begin{matrix} y & {= - r\sin p,} \\ {- y/r} & {= \sin p,} \\ p & {= \arcsin( - y/r).} \\ \end{matrix}

La fonction arcsin\arcsin a une plage de [90o,90o]\lbrack - 90^{o},90^{o}\rbrack , qui coïncide heureusement avec la plage de pp dans l’ensemble canonique.

Le listing 7.4 illustre l’ensemble de la procédure.

// Coordonnées cartésiennes d'entrée
float x,y,z;

// Distance radiale de sortie
float r;

// Angles de sortie en radians
float heading, pitch;

// Déclaration de quelques constantes
const float TWOPI = 2.0f*PI; // 360 degrés
const float PIOVERTWO = PI/2.0f; // 90 degrés

// Calculer la distance radiale
r = sqrt(x*x + y*y + z*z);

// Vérifier si on est exactement à l'origine
if (r > 0.0f) {

    // Calculer le tangage
    pitch = asin(-y/r);

    // Vérifier le blocage de cardan, car la fonction atan2 de la
    // bibliothèque est indéfinie à l'origine (2D)
    if (fabs(pitch) >= PIOVERTWO*0.9999) {
        heading = 0.0f;
    } else {
        heading = atan2(x,z);
    }
} else {

    // À l'origine - mettre les angles à zéro
    heading = pitch = 0.0f;
}

7.4Utilisation des coordonnées polaires pour spécifier des vecteurs

Nous avons vu comment décrire un point à l’aide des coordonnées polaires, et comment décrire un vecteur à l’aide des coordonnées cartésiennes. Il est également possible d’utiliser la forme polaire pour décrire des vecteurs. En réalité, dire que nous pouvons « aussi » utiliser la forme polaire revient un peu à dire qu’un ordinateur est contrôlé par un clavier mais peut « aussi » être contrôlé par la souris. Les coordonnées polaires décrivent directement les deux propriétés clés d’un vecteur — sa direction et sa longueur. En forme cartésienne, ces valeurs sont stockées indirectement et obtenues seulement après quelques calculs qui se ramènent essentiellement à une conversion en forme polaire. C’est pourquoi, comme nous l’avons discuté dans la section 7.2, les coordonnées polaires sont la monnaie courante dans les conversations quotidiennes.

Mais ce ne sont pas seulement les non-spécialistes qui préfèrent la forme polaire. Il est intéressant de noter que la plupart des manuels de physique contiennent une brève introduction aux vecteurs, et cette introduction est menée dans un cadre de coordonnées polaires. Cela se fait malgré le fait que cela rend les mathématiques considérablement plus compliquées.

Quant aux détails du fonctionnement des vecteurs polaires, nous les avons déjà couverts. Considérons notre « algorithme » FIXME lien pour localiser un point décrit par des coordonnées polaires 2D. Si vous supprimez la phrase « partez de l’origine » et laissez le reste intact, les instructions décrivent comment visualiser le déplacement (vecteur) décrit par des coordonnées polaires quelconques. C’est la même idée que dans la section 2.4 : un vecteur est lié au point de mêmes coordonnées car il nous donne le déplacement de l’origine vers ce point.

Nous avons également déjà appris les mathématiques pour convertir les vecteurs entre les formes cartésienne et polaire. Les méthodes abordées dans la section 7.1.3 ont été présentées en termes de points, mais elles sont tout aussi valables pour les vecteurs.

Exercices

  1. Tracez et étiquetez les points ayant les coordonnées polaires suivantes :

    𝐚=(2,60o)𝐛=(5,195o)𝐜=(3,45o)𝐝=(2.75,300o)𝐞=(4,π/6rad)𝐟=(1,4π/3rad)𝐠=(5/2,π/2rad)\begin{matrix} \mathbf{a} & {= (2,60^{o})} & \mathbf{b} & {= (5,195^{o})} \\ \mathbf{c} & {= (3, - 45^{o})} & \mathbf{d} & {= ( - 2.75,300^{o})} \\ \mathbf{e} & {= (4,\pi/6\ {rad})} & \mathbf{f} & {= (1,4\pi/3\ {rad})} \\ \mathbf{g} & {= ( - 5/2, - \pi/2\ {rad})} & & \\ \end{matrix}

  2. Convertissez les coordonnées polaires 2D suivantes en forme canonique :

    1. (a) (4,207o)(4,207^{o})

    2. (b) (5,720o)( - 5, - 720^{o})

    3. (c) (0,45.2o)(0,45.2^{o})

    4. (d) (12.6,11π/4rad)(12.6,11\pi/4\ {rad})

  3. Convertissez les coordonnées polaires 2D suivantes en forme cartésienne :

    1. (a) (1,45o)(1,45^{o})

    2. (b) (3,0o)(3,0^{o})

    3. (c) (4,90o)(4,90^{o})

    4. (d) (10,30o)(10, - 30^{o})

    5. (e) (5.5,πrad)(5.5,\pi\ {rad})

  4. Convertissez les coordonnées polaires de l’exercice 2 en forme cartésienne.

  5. Convertissez les coordonnées cartésiennes 2D suivantes en forme polaire (canonique) :

    1. (a) (10,20)(10,20)

    2. (b) (12,5)( - 12, - 5)

    3. (c) (0,4.5)(0,4.5)

    4. (d) (3,4)( - 3,4)

    5. (e) (0,0)(0,0)

    6. (f) (5280,0)( - 5280,0)

  6. Convertissez les coordonnées cylindriques suivantes en forme cartésienne :

    1. (a) (4,120o,5)(4,120^{o},5)

    2. (b) (2,45o,1)(2,45^{o}, - 1)

    3. (c) (6,π/6,3)(6, - \pi/6, - 3)

    4. (d) (3,3π,1)(3,3\pi,1)

  7. Convertissez les coordonnées cartésiennes 3D suivantes en forme cylindrique (canonique) :

    1. (a) (1,1,1)(1,1,1)

    2. (b) (0,5,2)(0, - 5,2)

    3. (c) (3,4,7)( - 3,4, - 7)

    4. (d) (0,0,3)(0,0, - 3)

  8. Convertissez les coordonnées sphériques (r,θ,ϕ)(r,\theta,\phi) suivantes en forme cartésienne selon la convention mathématique standard :

    1. (a) (4,π/3,3π/4)(4,\pi/3,3\pi/4)

    2. (b) (5,5π/6,π/3)(5, - 5\pi/6,\pi/3)

    3. (c) (2,π/6,π)(2, - \pi/6,\pi)

    4. (d) (8,9π/4,π/6)(8,9\pi/4,\pi/6)

  9. Interprétez les coordonnées sphériques (a)–(d) de l’exercice précédent comme des triplets (r,h,p)(r,h,p) , en passant à nos conventions jeu vidéo.

    1. 1.Convertissez en coordonnées canoniques (r,h,p)(r,h,p) .

    2. 2.Utilisez les coordonnées canoniques pour convertir en forme cartésienne (en utilisant les conventions jeu vidéo).

  10. Convertissez les coordonnées cartésiennes 3D suivantes en forme sphérique (canonique) en utilisant notre convention modifiée :

    1. (a) (2,23,2)(\sqrt{2},2\sqrt{3}, - \sqrt{2})

    2. (b) (23,6,4)(2\sqrt{3},6, - 4)

    3. (c) (1,1,1)( - 1, - 1, - 1)

    4. (d) (2,23,4)(2, - 2\sqrt{3},4)

    5. (e) (3,3,22)( - \sqrt{3}, - \sqrt{3},2\sqrt{2})

    6. (f) (3,4,12)(3,4,12)

  11. À quoi ressemblent les « lignes de grille » dans l’espace sphérique ? En supposant les conventions sphériques utilisées dans ce livre, décrivez la forme définie par l’ensemble de tous les points satisfaisant les critères suivants. Ne restreignez pas les coordonnées à l’ensemble canonique.

    1. (a)Un rayon fixe r=r0r = r_{0} , mais des valeurs arbitraires pour hh et pp .

    2. (b)Un cap fixe h=h0h = h_{0} , mais des valeurs arbitraires pour rr et pp .

    3. (c)Un tangage fixe p=p0p = p_{0} , mais des valeurs arbitraires pour rr et hh .

  12. Lors d’une soirée de bouclage, un développeur de jeux décida de prendre l’air et de faire une promenade. Le développeur quitta le studio en marchant vers le sud et marcha 5 km. Elle tourna ensuite vers l’est et marcha encore 5 km. Réalisant que tout cet air frais lui faisait tourner la tête, elle décida de retourner au studio. Elle tourna vers le nord, marcha 5 km et se retrouva de retour au studio, prête à écraser les derniers bugs de programmation restants sur sa liste. Malheureusement, un ours affamé l’attendait à la porte, et elle fut dévorée vivante.14 De quelle couleur était l’ours ?

Pour l’exécution du voyage vers les Indes,
je n’ai pas fait usage de l’intelligence, des mathématiques ni des cartes.

— Christophe Colomb (1451–1506)

  1. Il pourrait y avoir des employés à la NASA qui pensent autrement, puisque la sonde Mars Climate Orbiter de 125 millions de dollars a dévié de sa trajectoire à cause d’un bug impliquant une confusion entre les unités métriques et impériales. Peut-être devrions-nous dire que connaître les unités de mesure spécifiques n’est pas nécessaire pour comprendre les concepts des coordonnées cartésiennes.

  2. Comme les professeurs de mathématiques.

  3. Même la question 3.

  4. Avertissement : de très grandes valeurs de θ\theta peuvent provoquer des étourdissements si l’étape 1 de la figure 7.2 est suivie littéralement.

  5. En parlant de professeurs de mathématiques et de fractions réduites, l’un des auteurs se souvient de son professeur de mathématiques au collège engagé dans un vif débat sur la question de savoir si une fraction mixte comme 23/52\ 3/5 est « plus simple » que la fraction impropre correspondante 13/513/5 . Heureusement, la réponse à ce mystère profond n’est pas nécessaire dans le contexte de l’aliasage des coordonnées polaires.

  6. Cela est dû aux deux malheureuses revendications de célébrité de Dallas : l’assassinat du président Kennedy et un feuilleton télévisé portant le nom de la ville, qui a eu inexplicablement un attrait international.

  7. Ces deux faits n’ont rien à voir avec les mathématiques, mais tout à voir avec la correction d’idées fausses.

  8. Les auteurs n’ont jamais rien entendu de tel de première main. Cependant, ils l’ont vu dans des films.

  9. ϕ\phi est la lettre grecque phi, qui se prononce « fi » par la plupart des gens. Certains préfèrent la faire rimer avec « fly » (en anglais).

  10. Nous ne voulons pas faire preuve de préjugé envers nos lecteurs gauchers ; vous pouvez imaginer utiliser votre bras gauche si vous le souhaitez. Cependant, il s’agit d’un système de coordonnées en main droite, donc vous vous sentirez peut-être plus à l’aise avec votre bras droit imaginaire. Gardez votre bras gauche pour plus tard, lorsque nous discuterons de quelques conventions en main gauche.

  11. Le rayon de la Terre est d’environ 6 371 km (3 959 miles) en moyenne.

  12. On dit que le nom Euler est un test mathématique en un seul mot : si vous savez comment le prononcer, c’est que vous avez appris des mathématiques. Veuillez rendre les auteurs de ce livre fiers en réussissant ce test, et en le prononçant « oy-leur », et non « you-ler ».

  13. Vous avez lu la première partie du chapitre 1, n’est-ce pas ?

  14. Nous savons que ce scénario est totalement impossible. Je veux dire, un développeur de jeux qui se promène pendant le bouclage ?!

<< Complément sur les matrices

Retour en haut

Rotation en trois dimensions >>