Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Angle entre deux point
Ninestars Hors ligne Membre Points: 2413 Défis: 22 Message

Angle entre deux point

Posté le 20/10/2012 17:16

Bonjour.
Je souhaite déterminer l'angle entre deux points définis par leurs coordonnés x et y.
A(xa;ya) et B(xb;yb)
On peut utiliser
tan-1 ((xa-xb)/(ya-yb)
mais le signe des différences fait tout capoter
Est-ce qu'il existe une fonction toute faite comme Arctan2 dans certains langages, ou il faut tout refaire ?
Merci d'avance.


Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 20/10/2012 18:44 | #


Signe des différences? T'as pensé à Abs?
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 20/10/2012 19:21 | #


Un angle n'est pas déterminé par 3 points?
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 20/10/2012 22:21 | #


Si. Il n'est pas possible de déterminé un angle entre deux points. Mais à mon avis, il veut dire entre deux points et l'origine
Ninestars Hors ligne Membre Points: 2413 Défis: 22 Message

Citer : Posté le 21/10/2012 00:36 | #


Tout à fait Cartix, l'angle entre l'axe des abscisses et la droite AB
Ne0tux Hors ligne Membre d'honneur Points: 3494 Défis: 265 Message

Citer : Posté le 21/10/2012 09:46 | #



Utilise les coordonnées polaires !

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Ninestars Hors ligne Membre Points: 2413 Défis: 22 Message

Citer : Posté le 21/10/2012 10:36 | #


J'ai trouvé comment avoir l'angle, il faut faire
tan-1( Abs(yb-ya) / (xa-xb) -> A
Int A->A
MOD(A,180)->A
ya-yb<0=>360-A->A

Et en plus prendre en compte les cas particuliers pour la division...
Le problème c'est que c'est vraiment lent pour mon jeu en temps réel. Donc j'ai pensé passer par les vecteurs et ça devrait fonctionner
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 22/10/2012 19:04 | #


Fais des listes de calculs préétablis!
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 10/11/2012 16:22 | #


J'arrive un peu après la bataille mais t'as pensé à arg(x+iy) ?
Ce qui donne pour ton cas :
arg((xa+iya)/(xb+iyb))->A
Cela ne marche pas si les points sont confondus avec l'origine.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Ninestars Hors ligne Membre Points: 2413 Défis: 22 Message

Citer : Posté le 10/11/2012 18:11 | #


Pas bête du tout Puro
Merci beaucoup puisque c est encore d actualité !
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 11/11/2012 00:23 | #


Personnellement, ce que j'utilise (en C surtout ) (ce code est directement tiré de l'une de mes fonctions, je n'ai pas modifié les variables, c'est donc un calcul d'angle sur 3 dimensions):
acos((vecteurAB.x*vecteurAC.x+vecteurAB.y*vecteurAC.y
+vecteurAB.z*vecteurAC.z)/((sqrt(vecteurAB.x*vecteurAB.x+vecteurAB.y*vecteurAB.y
+vecteurAB.z*vecteurAB.z))*(sqrt(vecteurAC.x*vecteurAC.x+
vecteurAC.y*vecteurAC.y+vecteurAC.z*vecteurAC.z)))


Ajouté le 11/11/2012 à 00:30 :
Cela dit, je me relis, ce code est indigeste ^^, donc je vais le rendre lisible:

[green]//s est le produit scalaire de AB et AC (si je ne me trompe pas, je confond parfois)[/green]
s=vecteurAB.x*vecteurAC.x+vecteurAB.y*vecteurAC.y+vecteurAB.z*vecteurAC.z
[green]//b et c sont les distance entre B et A, et entre C et A[/green]
b=sqrt(vecteurAB.x*vecteurAB.x+vecteurAB.y*vecteurAB.y+vecteurAB.z*vecteurAB.z)
c=sqrt(vecteurAC.x*vecteurAC.x+vecteurAC.y*vecteurAC.y+vecteurAC.z*vecteurAC.z)
return acos(s/(b*c))

Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Ninestars Hors ligne Membre Points: 2413 Défis: 22 Message

Citer : Posté le 11/11/2012 10:23 | #


Tu as une petite erreur dans le code, tu as mis deux fois z
Cette manière est beaucoup trop lente en basic pour que je l'utilise.
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 11/11/2012 14:31 | #


il s'est trompé entre z et y
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 11/11/2012 14:42 | #


oui, pardon, j'avais pas vu cette erreur, effectivement, a la première ligne, j'ai confondu z et y.

Ajouté le 11/11/2012 à 14:52 :
J\'ai corrigé.
Ninestars a écrit :
Cette manière est beaucoup trop lente en basic pour que je l\'utilise.

Effectivement, mais si on utilise les propriétés des listes, c\'est très rentable (de mon point de vue en tout cas):
cos^-1 ((Sum (List \"AB\"List \"AC\"))/([SQRT]Sum (List \"AB\"²))([SQRT]Sum (List \"AC\"²)))

Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Ninestars Hors ligne Membre Points: 2413 Défis: 22 Message

Citer : Posté le 11/11/2012 17:24 | #


Tu mes quoi dans tes listes ?
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 11/11/2012 17:28 | #


les valeurs de x,y et z (respectivement, aux cases 1,2 et 3) mais l'ordre et le nombre de variables importe peux (j'aurais pu mettre y dans la case 1 et x dans la case 2, sans z) ce calcul est universel (ou presque, en tout cas, il marche autant pour la 3D que pour la 2D)
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 57 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd