Le calculateur a calculé 32°, pourquoi la cible est-elle dans la direction opposée ?
Deux directions opposées peuvent avoir la même pente. En ne laissant qu'un ratio, vous jetez les symboles dont vous avez réellement besoin.
Algorithmes généraux et calcul numérique
Vous savez que la cible est en bas à gauche, mais le programme dessine une flèche pointant vers le haut et vers la droite. Le calcul est peut-être correct : si vous divisez d’abord deux nombres négatifs, le rapport positif obtenu ne peut pas vous dire dans quel quadrant se trouve la cible.
Devinez d'abord
Est-il possible que les rapports y/x des deux lignes montant vers la droite et descendant vers la gauche soient les mêmes ?
Afficher la réponse et les explications
possible — Les deux composantes changent de signe en même temps, le rapport reste inchangé, mais la direction diffère de 180°.
Ensuite, connectez l'expérience et la science
Identifiez d’abord le quadrant où se trouve la cible
La position du point bleu est déterminée par x et y. L'atan à paramètre unique ne lit que le rapport et les deux signes négatifs s'annuleront dans la division.
La plage de retour de atan(y/x) n'est que de −90° à 90°
Donnez respectivement les deux composants à atan2
atan2(y,x) conserve les signes positifs et négatifs et peut faire la distinction entre le coin inférieur gauche et le coin supérieur droit ; son ordre des paramètres doit être confirmé selon le document linguistique.
Ce projet utilise Math.atan2(y,x)
La direction est correcte et l'unité d'angle doit être utilisée.
L'entrée de la fonction trigonométrique JavaScript est en radians. Si vous attribuez directement un degré comme 212 au péché, il sera confondu avec 212 radians.
Radians = degrés × π/180
Ne comptez pas sur de faux chiffres pour surmonter des circonstances particulières.
La direction sur l’axe peut être définie, mais pas le vecteur zéro. L'arrondi et la troncature des nombres négatifs sont également différents, et les codes de calendrier ne peuvent notamment pas être mélangés.
atan2(0,0) n'a pas de direction géométrique ; étage(−7,83)=−8
Développer le calcul
θ弧Dépenser = atan2(y,x) θDépenser = θ弧Dépenser × 180/π θ圈内 = ((θDépenser mod 360)+360) mod 360
atan2 passe y d'abord, puis x ; il conserve les informations sur les quadrants. Il n'y a pas de direction géométrique lorsque x=y=0, et même si le programme renvoie une valeur, elle ne peut pas être utilisée comme direction.
essaie-le
Regardez d’abord l’exemple en bas à gauche du livre original, puis remplacez les deux composants par des nombres positifs. Les rapports de pente sont les mêmes, mais les directions doivent différer d'un demi-tour ; essayez enfin le vecteur zéro.
Pas besoin de mémoriser les symboles
- atan(y/x)
- Rien qu’en regardant le rapport, il est impossible de distinguer des directions distantes de 180°.
- atan2(y,x)
- Gardez respectivement deux composants et jugez le quadrant
- θ / θπ/180
- Valeur d'angle (degrés)/valeur en radian correspondante
- floor / trunc
- Arrondir vers l'infini négatif / troncature vers zéro ne sont pas la même opération
Algorithme, précision et champ d'application
Chapitre supplémentaire 1 Corriger le piège du quadrant et de l'unité de langue. En utilisant le livre original A=−0.5712, B=−0.9139, l'interface y=A, x=B ; atan(A/B) est d'environ 32° et la direction correcte est d'environ 212°. atan à paramètre unique n'effectue pas de démonstration de division lorsque x=0 ; atan2 peut toujours déterminer la direction sur l'axe, mais (0,0) n'a pas de direction géométrique et vous ne pouvez pas utiliser JavaScript atan2(0,0)=0 pour forger la réponse. L'image de droite compare les résultats après avoir converti le même angle en radians et donné par erreur les degrés directement à Math.sin ; il montre également la plage de 0 à 180° lorsque seul le cos est déduit. L'arrondi négatif du plancher/tronc est cohérent avec le chapitre 7. L'ancien cours d'introduction sur les angles comportait déjà les degrés minutes secondes moins le signe, les heures d'angle et les cercles ; il ne sera pas répété ici. Le portail mathématique implémente également le test de normalisation grand angle du livre original, les polynômes de Horner et la sommation des tableaux périodiques numériques, et les vérifications sont cohérentes avec l'expansion directe ; il ne déduit pas les anciens tests de vitesse des modèles aux garanties de performances JavaScript modernes. L'implémentation de branches sûres et de limites supérieures d'itération peut également être trouvée dans le cours général de recherche de racines.
vérification de ma compréhension
Quelle fonction est utilisée dans ce projet pour conserver les signes de deux composants ?
atan2(y,x) — atan2 reçoit respectivement y et x sans éliminer au préalable les informations du quadrant.
Lorsque θ est exprimé en degrés, Math.sin(θ) peut-il être utilisé directement ?
Non, change d'abord le radian — L'entrée sin de JavaScript est en radians.
Les deux composantes sont 0, comment doit-on indiquer la direction correcte ?
pas de définition — Le vecteur zéro n'a pas de direction ; le nombre renvoyé par la fonction ne peut pas remplacer la définition géométrique.
Conservez d'abord les composants et les panneaux de direction, puis convertissez les unités ; le nombre donné par le programme ne signifie pas que le nombre a la signification géométrique correcte.
Jean Meeus · Astronomical Algorithms, 2nd ed. · Non. 1 chapitre
Algorithmes généraux et calcul numérique · Tous les cours interactifs