| calculer un angle entre deux droites | |
|
|
Auteur | Message |
---|
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: calculer un angle entre deux droites Dim 4 Juil 2010 - 20:24 | |
| bonjours a tous, j'ai un petit probleme d'angle, j'aimerai trouver un angle entre deux droites, comme ceci j'ai chercher sur google, mais j'ai trouver que ca : http://www.javafr.com/forum/sujet-CALCULER-ANGLE-PARTIR-DEUX-DROITES_419848.aspxmais il me donne n'importe quoi pourriez vous m'aidez ? PS : ici c'est un angle entre deux droites, mais si vous avez un autre technique pour trouver l'angle, allez y |
|
| |
PHENIXprod Utilisateur confirmé: Rang ****
Messages : 835
| Sujet: Re: calculer un angle entre deux droites Dim 4 Juil 2010 - 20:43 | |
| Tu calcule la direction de la première droite, de la seconde, tu les compare et les soustrait non? Tu peux calculer la direction d'une droite avec point_direction. |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: calculer un angle entre deux droites Dim 4 Juil 2010 - 21:11 | |
| c'est ce que je fais actuellement mais il y a une petit erreur, c'est quand la direction passe de 0 a 360, ca fausse tout, heureusement que c'est pas fréquent, que ca se vois pas comme sa, mais c'est toujours ca |
|
| |
supmaster004 Utilisateur confirmé: Rang *****
Messages : 2189 Localisation : x=23.256842 y=43.456879 Projet Actuel : Faire des parodies de jeux en 1h
| Sujet: Re: calculer un angle entre deux droites Dim 4 Juil 2010 - 22:05 | |
| y a une solution pour eviter les passages de modulo bon ça nécessite pas mal de théorie. hum hum [prepa] alors d'abord tu veux l'angle absolu entre les deux droites. soit le vecteur directeur de ta camera: - Code:
-
xcam=cos(obj_cam.direction*pi/180) ycam=-sin(obj_cam.direction*pi/180) tu peux utiliser lenghtdir si tu veux de mème avec le carré - Code:
-
xcar=cos(point_direction(camera.x,camera.y,carre.x,carre.y)*pi/180) ycar=-sin(point_direction(camera.x,camera.y,carre.x,carre.y)*pi/180) voilà maintenant regardons la formule du produit scalaire ps=xcam*xcar+ycam*ycar ps=|cam|*|car|*cos(theta) eh oui! avec cam et car des vecteurs normés donc |cam|=|car|=1 on a donc - Code:
-
theta=arccos(xcam*xcar+ycam*ycar) theta est une valeur absolue (et en radians en plus ) il faut donc l'algebriser et là, je te sors la formule qui tue tout, sin(theta)=det(cam,car) avec det un déterminant d'ordre 2 (si si) il suffit donc d'en connaitre le signe - Code:
-
deter=xcam*ycar-xcar*ycam
angle=0 if deter>0 angle=theta*180/pi if deter<0 angle=-theta*180/pi voilà, tu met dans ton step exclusivement les trucs entre balises de code, le reste c'est la démo :lng: [/prepa] "angle" est ce que tu cherches en degrés edit: ce que je viens de te dire, ça marche que dans une base directe, ce qui n'est pas le cas de gm avec ses angles inversés par rapport aux axes x,y donc si ça marche pas, c'est qu'il faut inverser les signes <,> dans la dernière partie du code |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: calculer un angle entre deux droites Dim 4 Juil 2010 - 23:35 | |
| wow... je vais voir ca, c'est beacoup de calcul tout ca |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: calculer un angle entre deux droites Lun 5 Juil 2010 - 0:37 | |
| difference_angles(angle1, angle2) - Code:
-
return (((floor(argument1-argument0+.5) mod 360)+540) mod 360)-180
ou si tu veux que des angles positifs - Code:
-
return ((((floor(argument1-argument0+.5) mod 360)+540) mod 360)+180)mod 360
|
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: calculer un angle entre deux droites Lun 5 Juil 2010 - 0:40 | |
| - onilink_ a écrit:
- difference_angles(angle1, angle2)
- Code:
-
return (((floor(argument1-argument0+.5) mod 360)+540) mod 360)-180
ou si tu veux que des angles positifs - Code:
-
return ((((floor(argument1-argument0+.5) mod 360)+540) mod 360)+180)mod 360
ah ouais bien ! c'etait tout con de faire disparaitre l'erreur dit plus tot ! |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: calculer un angle entre deux droites Lun 5 Juil 2010 - 0:44 | |
| au moins la tu niveau perf y a pas mieux, parce que les fonctions arccos et compagnies :gniah: Enfin tout dépend du nombre d'utilisations aussi... |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: calculer un angle entre deux droites Lun 5 Juil 2010 - 11:10 | |
| En fait je fait un ramassage de cube a la HL2, d'ailleur je suppose que vous avez compris que c'était en 3D, je voulais aussi demander si c'était possible de faire la même chose mais en 3D, sinon c'est pas grave, j'ai crée une fonction d3d_point_distance pour compenser ca |
|
| |
Contenu sponsorisé
| Sujet: Re: calculer un angle entre deux droites | |
| |
|
| |
| calculer un angle entre deux droites | |
|