| [Résolu par arthuro] Extreme physique et la rotation | |
|
|
Auteur | Message |
---|
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: [Résolu par arthuro] Extreme physique et la rotation Mer 3 Juil 2013 - 15:15 | |
| Bonjour, Apres plusieurs tentative et une dizaines de feuilles mis à la poubelle. Je viens vers vous en quête d'aide. J'ai : - Code:
-
_dir = degtorad(point_direction(x,y,mouse_x,mouse_y)-90); _c_dir = ep_body_get_rot(global.world,corps)
c = sign(_dir-_c_dir); vr = max(-0.05,min(0.05,c-vr));
ep_body_set_velocity_center(global.world,corps,vh,vv,vr); Qui sert (sans être super optimisé et pas tellement esthétique) à faire tourner un objet, selon un angle (ici l'angle objet x,y à souri x,y). Le problème avec Extreme Physics, c'est qu'il n'y a pas de fonction qui ressemble à : - Code:
-
point_direction(x1,y1,x2,y2); Hormis : - Code:
-
ep_body_set_position(...); Seulement, ce dernier fausse tout, étant donner qu'il ne sert pas vraiment à ça. Je ne trouve pas de résonnement logique à faire, pour que l'objet pointe en direction de la sourie, sans devoir faire une chose aussi moche... Merci. _________________ Caohimin Communauté Barbarre Nauséabonde Ahuri
Dernière édition par Caohimin le Jeu 4 Juil 2013 - 14:35, édité 1 fois |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Mer 3 Juil 2013 - 16:19 | |
| Peut-tu reformuler ta question, j'ai du mal à cerner ta demande. - Citation :
Le problème avec Extreme Physics, c'est qu'il n'y a pas de fonction qui ressemble à : Code: point_direction(x1,y1,x2,y2);
Tu programme sous game maker, donc tu possède cette fonction, que veut tu d'autre? |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Mer 3 Juil 2013 - 16:33 | |
| Extreme physique possède sa propre gestion de collision, donc? De mouvement. Sous GM pour faire qu'un objet regarde la sourie : - Code:
-
image_angle = point_distance(x,y,mouse_x,mouse_y); Cependant, lorsque l'on ajoute l'extension Extreme Physics, le script si dessus, ne sert a rien... Evidemment étant donner que E.T. (non pas ce E.T. la...), gère lui même les collisions, les mouvements... _________________ Caohimin Communauté Barbarre Nauséabonde Ahuri |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Mer 3 Juil 2013 - 17:06 | |
| Donc tu cherche à faire tourner l'objet, pas la direction entre les 2 points, c'est ca ? J'ai jamais utilisé extrem physics, mais si ep_body_get_rot() existe, je suppose qu'il y a aussi ep_body_set_rot(), non ? (et désolé si c'est faux...) _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Mer 3 Juil 2013 - 17:08 | |
| Non il n'existe pas Ce n'est pas si simple que ça. Ce que je demande, c'est de l'aide sur comment faire la fonction qui ressemble à : - Code:
-
point_direction(x,y,mouse_x,mouse_y); mais avec les fonctions d'ont j'ai accès, c'est à dire : - Code:
-
ep_body_set_velocity_center(global.world,corps,vv,vh,vr); global.world = variable qui contient l'id du monde physique. corps = variable qui contient l'id du corps de l'objet. vv = variable de la vitesse verticale. vh = variable de la vitesse horizontale. vr = vitesse de rotation. A savoir, qu'il ne suffit pas de donné un angle pour que l'objet le suive, mais une vitesse de rotation, d'où la difficulté. _________________ Caohimin Communauté Barbarre Nauséabonde Ahuri |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Mer 3 Juil 2013 - 21:02 | |
| Le script que tu nous as fournit fonctionne-t-il ? Si oui Qu'est ce qui te gène dans ce script? Si non Qu'obtient tu ? |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Mer 3 Juil 2013 - 21:25 | |
| Oui il fonctionne, mais il ne fais pas exactement ce que j'aimerais, mais il s'en approche. - Code:
-
_dir = degtorad(point_direction(x,y,mouse_x,mouse_y)-90); il prend la valeur de la direction de la souris + 90°, et le converti en radian. - Code:
-
_c_dir = ep_body_get_rot(global.world,corps) il prend la direction de l'objet, en radian. - Code:
-
c = sign(_dir-_c_dir); un petit calcul pour connaitre si la direction a prendre est en sens horaire ou non. - Code:
-
vr = max(-0.05,min(0.05,c-vr)); ici c'est la vitesse de rotation, elle peut valoir toute les valeur comprise entre -0.05 et 0.05 Le problème vient de la : j'ai mis 0.05, donc il tourne très lentement... sachant qu'il fait 0.05(° ou rad, je ne sais plus...)/step et qu'une seconde = 600 steps.Deuxièmement, lorsque l'on arrive à la direction 0°, (horizontale à droite), et que l'on continue la rotation, l'on arrive a 359°, et la catastrophe... L'objet fait un tour sur lui même en sens anti-horaire. - Code:
-
ep_body_set_velocity_center(global.world,corps,vh,vv,vr); Et la on applique toute les valeur a l'objet. _________________ Caohimin Communauté Barbarre Nauséabonde Ahuri |
|
| |
GrandeLangue Bonne participation
Messages : 77 Localisation : Lille Projet Actuel : Faire des maths
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Mer 3 Juil 2013 - 23:10 | |
| - Caohimin a écrit:
- Le problème vient de la : j'ai mis 0.05, donc il tourne très lentement... sachant qu'il fait 0.05(° ou rad, je ne sais plus...)/step et qu'une seconde = 600 steps.
Pourquoi tu ne peux pas mettre plus que 0.05 ? (Et ce sont bien des radians) - Citation :
- Deuxièmement, lorsque l'on arrive à la direction 0°, (horizontale à droite), et que l'on continue la rotation, l'on arrive a 359°, et la catastrophe... L'objet fait un tour sur lui même en sens anti-horaire.
C'est parce que ton code ne fait pas attention au fait que les angles doivent être entre 0 et 2*pi rad. Un petit modulo peut nous arranger tout ça : c = sign(_dir-_c_dir); devient c = sign((3*pi+_dir-_c_dir) mod (2*pi) - pi); |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Jeu 4 Juil 2013 - 0:59 | |
| Si je peux mettre plus, seulement l'objet semble vibrer, il ne cesse pas sa rotation totalement si tu vois ce que je veux dire.
J'ai modifier ce que tu m'a donner, plus de problème lors de la rotation, cependant, un autre est apparu, au dessus de 11 rad, il retourne a 5 rad... donc subit une sorte de demi-tour. Je toucherais 2/3 truc, la il est tard, merci de ton aide GrandeLangue. _________________ Caohimin Communauté Barbarre Nauséabonde Ahuri |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Jeu 4 Juil 2013 - 12:18 | |
| Je te donne deux trois conseil.
1) Pour obtenir le petit angle entre deux angles c1 et c2 Il y a d'autre méthodes mais celle-ci je peut t'assurer qu'elle fonctionne:
vr =(+/- ) sign( cos(c1)*sin(c2)-sin(c1)*cos(c2) )
(C'est juste le signe d'un produit vectoriel entre les deux vecteurs directeur) (Il y aura peut-être à inverser le résultat suivant la direction voulu).
2 ) Aussi tu devrais essayer :
vr =(+/- )( cos(c1)*sin(c2)-sin(c1)*cos(c2) )
Cela pourrait en plus résoudre ton problème de stabilité. Encore une fois, c'est à un signe près.
Donne moi des nouvelles de la méthode 2)
Oublie pas de convertir les angles c1 et c2 en radian. (DEGTORAD)
Bien entendu, tu peux faire: vr *= coefficient pour moduler la vitesse.
3) Si le problème de stabilité n'est pas règlé, ajoute: vr=abs(vr)*vr
( Pour annuler la dérivé de la vitesse en 0)
Dernière édition par arthuro le Jeu 4 Juil 2013 - 12:36, édité 2 fois |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Jeu 4 Juil 2013 - 12:30 | |
| J'avais demandé cette formule dans zut récemment, voilà une des réponses qu'on m'avait donnée : (merci sachem ) - Code:
-
((((angle1 - angle2) % 360) + 540) % 360) - 180 Je pense que c'est plus rapide que les sinus et tout _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Jeu 4 Juil 2013 - 12:32 | |
| - Citation :
Je pense que c'est plus rapide que les sinus et tout Smile
Oui mais c'est surtout pour introduire le point 2) pour réduire l'instabilité. Plus la différence est grande, plus la vitesse est grande. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Jeu 4 Juil 2013 - 12:45 | |
| T'as édité après coup, donc j'avais pas vu le #2 (ou alors il y était et je suis aveugle), et je croyais que les deux formules étaient identiques... Bon, je part de ce topic ou je suis tout le temps HS _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Jeu 4 Juil 2013 - 13:13 | |
| Bonjour, La trigonométrie... Si j'avais parier que c'était ça qui allais résoudre mon problème... J'ai pas mal de cours a revoir, surtout la dessus... Je ne sais même plus a quoi sert sinus, cosinus et tangente... Et merci a toi arthuro, tout est parfais. La vitesse de rotation se met bien à 0,00 rad. Par contre : - Code:
-
vr *= coef; Le fais de nouveau trembler, donc j'ai retiré de suite. Et tout fonctionne. Par contre, si tu pouvais me détailler au mieux ce que le calcule fais, avec des exemples pour être encore plus explicite, histoire que je ferme le forum un peu moins con que je ne l'ai ouvert. _________________ Caohimin Communauté Barbarre Nauséabonde Ahuri |
|
| |
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Jeu 4 Juil 2013 - 14:09 | |
| Alors: sinus(a) , cosinus(a) sont les coordonnées du point qui parcourt le cercle de centre 1 où alpha est l'angle du point. tangente ça donne la pente ( le taux de variation y/x) sachant l'angle. Ensuite J'ai utiliser le déterminant pour caractériser en quoi les deux direction différait. Sachant que ce que proposait les autres marche aussi je pense. le vecteur directeur d'angle c1 à pour coordonnées cos(c1), sin(c1) le vecteur directeur d'angle c2 à pour coordonnées cos(c2), sin(c2) le produit vectoriel donne l'aire du parallélogramme dont les deux vecteurs données sont deux "coté qui se touchent" exemple Par contre c'est peut-être dure à comprendre, c'est une aire relative, si j'échange les deux vecteur on obtient l'opposé de l'aire précédente. ainsi: (imaginé qu'un vecteur tourne | / -- \ | ._ |_| = 1 _ /_/ = 0.57 -- = 0 ( ici les deux direction sont les mêmes et donc les vecteur sont superposé) _ \_\ = -0.57 ._ |_| = -1 Je ne sais pas ce que donnera cette animation ascii. Ainsi avec cette propriété on peut connaître si l'angle entre les deux vecteur est positif ou négatif. Ensuite un point important, je sais pas si tu l'a utilisé. C'est : vr=abs(vr)*vr cela permet d'introduire un point de dérivé nulle en 0. Le graph à une pente nulle en 0, alors que sinon avec vr=vr, il serait de 1 De sorte à réduire les variations lorsqu'on est très proche du but. Ainsi, plus on est proche du but, moins on ose se décaler. |
|
| |
Caohimin Très bonne participation
Messages : 134 Localisation : Au coeur de cette charmante demoiselle.
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Jeu 4 Juil 2013 - 14:30 | |
| Oh, bien.
Merci pour le petit cours ^^, je copie colle sur un .txt sur mon bureau pages sur Ipad, histoire de lire et relire pour qu'il finisse par entrer.
Et le luxe en ascii lol _________________ Caohimin Communauté Barbarre Nauséabonde Ahuri |
|
| |
GrandeLangue Bonne participation
Messages : 77 Localisation : Lille Projet Actuel : Faire des maths
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation Jeu 4 Juil 2013 - 22:18 | |
| Pour le fait que ça tremble quand tu choisis une trop grande vitesse pour vr, c'est très probablement car ton angle c1 est très proche de c2, mais que ta vitesse vr lui est supérieure. Dans ce cas-là, il faut changer vr pour qu'il soit égal à l'angle exact entre c1 et c2 Tu n'as qu'à rajouter dans ton code après le calcul de vr : - Code:
-
angle = diff_angle(c1, c2); if angle <= abs(vr) {vr = sign(vr) * angle} où diff_angle(c1, c2) est le script qui te donne la valeur de l'angle géométrique (c'est-à-dire un angle positif) entre c1 et c2. Si c1 et c2 peuvent être négatifs et/ou dépasser 2 pi, utilise le code de sachem pour diff_angle : - Code:
-
((((argument0 - argument1) % (2*pi)) + (3*pi)) % (2*pi)) - pi Sinon, si tu es sûr que tes angles c1 et c2 restent entre 0 et 2 pi (ce qui ne me semble pas être le cas d'après ta réponse à mon précédent message, vu que tu me dis que l'angle va jusqu'à 11*pi. Mais tu peux toujours obliger tes angles à rester entre 0 et 2*pi après), diff_angle doit ressembler à ça : - Code:
-
var diff; diff = abs(argument0 - argument1); if (diff <= pi) {return diff} else {return 2*pi - diff} Voilà. Tout ça pour dire que maintenant (si tout va bien) - arthuro a écrit:
- Bien entendu, tu peux faire:
vr *= coefficient pour moduler la vitesse. |
|
| |
Contenu sponsorisé
| Sujet: Re: [Résolu par arthuro] Extreme physique et la rotation | |
| |
|
| |
| [Résolu par arthuro] Extreme physique et la rotation | |
|