Trouver Un Point (X, Y)

Trouver Un Point (X, Y) - C++ - Programmation

Marsh Posté le 29-04-2006 à 20:36:21    

bonjour à tous... j'ai un méga problème non pas de c++ directement, mais bien de mathématique...
 
pour un programme que je suis en train de faire, je dois faire une fonction qui calcule l'emplacement d'un point, a partir d'un autre point, d'une distance et d'un angle...
 
 

Code :
  1. ClPositionPosition TrouverPoint(ClPosition p_position, double p_distance, double p_angle)
  2. {
  3. }

 

le problème que j'ai, c'est que l'angle (mesuré a partir du haut, et vers la droite) peut être entre 0 et 90, ce qui serait assé facile à calculer, mais aussi entre 90 et 180, entre 180 et 270, et entre 270 et 359.99...
 

Code :
  1. /* degrés :
  2.   *     0/360
  3.   *       |
  4.   *270----|-----90
  5.   *       |
  6.   *      180
  7.   */

 

pour calculer entre 0 et 90, il suffit de faire le sinus de (l'angle - 90) pour trouver la hauteur(Y), et le cosinus de la même valeure pour trouver la longueure(X)... mais lorsque l'angle est plus grand que 90... je ne sait plus comment faire... J'AI BESOIN D'AIDE!!!!
 
merci à l'avance... si on en viens a boute :P

Reply

Marsh Posté le 29-04-2006 à 20:36:21   

Reply

Marsh Posté le 29-04-2006 à 20:49:53    

karminator98 a écrit :

bonjour à tous... j'ai un méga problème non pas de c++ directement, mais bien de mathématique...


 
Il te faut une révision du cercle trigonométrique :
http://fr.wikipedia.org/wiki/Trigo [...] 3.A9trique
http://fr.wikipedia.org/wiki/Cercl [...] 3%A9trique
 
courage, soit fort.
Je t'avoue que c'est un peu loin pour moi la trigo, mais les liens devraient suffire à ta résolution.


Message édité par brojnev le 29-04-2006 à 20:50:17
Reply

Marsh Posté le 30-04-2006 à 00:32:00    

Si tu n'as pas de problème entre 0 et 90°, tu ne devrais pas en avoir du tout. Les fonctions sin, cos, tan, atan et atan2 donnent les bonnes valeurs pour tout les angles. cependant elles doivent êtres appelées avec un angle exprimé en radian (angle en radian = angle en degrés x pi / 180). et les angles sont mesurés à partir de l'axe horizontal positif et dans le sens positif (inverse des aiguilles d'une montre).
 


                    90
                     |                
                     |  
                     |
  (-) 180 -----------|--------- 0  (+)
                     |
                     |
                     |
                    270


        Le point de départ étant le centre du cercle, il suffit d'y ajouter les valeurs cos(x) * distances à X et soustraire sin(x) * distance à Y, pour avoir le point résultant.
     


Message édité par videaste95 le 30-04-2006 à 00:39:05
Reply

Marsh Posté le 01-05-2006 à 11:56:35    

C'est tres simple:
 
1) Prends donc l'inverse du cosinus, du sinus ou de la tangente (je prefererais l'un des 2 premiers car il y a moins de pb), tu obtiens un angle. Supposons tu le fais avec cosinus inverse.
 
2) Selon les signes respectifs de X et Y, tu peux determiner dans quel quadrant tu te trouve, et donc lever l'indetermination.
 
C'est du au fait que les fonctions cosinus et sinus ne sont pas bijective sur [0, 2Pi[

Reply

Marsh Posté le 02-05-2006 à 20:04:50    

nah... laissez-faire, j'ai demander de l'aide a mon prof de math, et mon problème est résolu... :P
ce que je cherchais a faire est ceci :
 
 

Code :
  1. X= distance * sin(((90-A)*PI)/180);
  2. Y= distance * cos(((90-A)*PI)/180);

 

mais merci quand même pour l'aide... :)

Reply

Marsh Posté le 02-05-2006 à 21:07:22    

:lol: sauf que tu mélange radians et degrès. note que sin() et cos() fonctionnent en radians.
edit:  [:casediscute]


Message édité par nargy le 03-05-2006 à 22:16:26
Reply

Marsh Posté le 03-05-2006 à 21:53:50    

c'est exactement pour ca que j'ai fait multiplié par pi et divisé par 180, pour tranfsormer le tout en radians ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed