Mouvement affine vitesse uniforme
Résolu
Gerik0
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Gerik0 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Gerik0 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à faire déplacer un point dans un repère en 2 dimensions de manière affine ( une fonction affine sera attribuée au point ) et avec une vitesse uniforme. C'est-à-dire que quelque soit sa trajectoire, le point se déplacera à la même vitesse.
Actuellement pour ça je calcul l'intersection entre une fonction affine donnée et un cercle de rayon R afin de trouver des nouvelles coordonnées x y.
Voilà ce que ça donne en Python, je trouve ce bout de code assez lourd. On m'a déjà dit de regarder du coté des fonction normées (https://fr.wikipedia.org/wiki/Norme_(mathématiques)#En_dimension_infinie) mais je n'ai jamais réussi a mettre ça en place.
Je fais appel à vous pour m'aider à trouver une meilleure solution svp.
Merci.
Bonne soirée !
Je cherche à faire déplacer un point dans un repère en 2 dimensions de manière affine ( une fonction affine sera attribuée au point ) et avec une vitesse uniforme. C'est-à-dire que quelque soit sa trajectoire, le point se déplacera à la même vitesse.
Actuellement pour ça je calcul l'intersection entre une fonction affine donnée et un cercle de rayon R afin de trouver des nouvelles coordonnées x y.
def Intersection(a, b, Xc, Yc, R, w): """ C(Xc;Yc;R) | (x-Xc)^2 + (y-Yc)^2 = R^2 | y = ax+b x^2(1+a^2) + x(-2*Xc +2*a*b -2*a*Yc) + (Xc^2 +Yc^2 +b^2 -2*b*Yc -R^2) = 0 """ A, B, C = 1+pow(a,2), -2*Xc +2*a*b -2*a*Yc, pow(Xc,2)+pow(Yc,2)+pow(b,2)-2*b*Yc-pow(R,2) D = pow(B,2)-4*A*C return( [(-B-sqrt(D))/(2*A), (-B+sqrt(D))/(2*A)][w] )
Voilà ce que ça donne en Python, je trouve ce bout de code assez lourd. On m'a déjà dit de regarder du coté des fonction normées (https://fr.wikipedia.org/wiki/Norme_(mathématiques)#En_dimension_infinie) mais je n'ai jamais réussi a mettre ça en place.
Je fais appel à vous pour m'aider à trouver une meilleure solution svp.
Merci.
Bonne soirée !
A voir également:
- Mouvement affine vitesse uniforme
- Vitesse processeur - Guide
- Test vitesse pc - Guide
- Augmenter vitesse pc windows 10 - Guide
- Test vitesse ssd - Guide
- Modifier vitesse video iphone - Guide
2 réponses
Tu créés ton objet point et tu lui donne une position x, par exemple, 10, et une position y qui sera ta fonction affine avec x.
Puis tu dois avoir une fonction update propre à ton objet point où tu augmente à chaque fois la valeur de self.x, par exemple self.x += 1. Tu n'as plus qu'à faire une boucle qui va appeler update... Après tu dois afficher ça à l'écran. Là, ça dépend de ton module qui s'occupe de l'interface graphique.
Puis tu dois avoir une fonction update propre à ton objet point où tu augmente à chaque fois la valeur de self.x, par exemple self.x += 1. Tu n'as plus qu'à faire une boucle qui va appeler update... Après tu dois afficher ça à l'écran. Là, ça dépend de ton module qui s'occupe de l'interface graphique.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
je pense que tu peux simplifier dramatiquement ton calcul.
comme ta fonction est affine et que le rayon de ton cercle est constant, il te suffit de calculer une seule fois (x-Xc) et (y-Yc).
à chaque itération, il te suffit d'ajouter ces valeurs constantes à Xc et de Yc.
par ailleurs, tu pourrais simplifier ton calcul d'intersection, en tenant compte que Yc = aXc +b et donc que (y-Yc) = a(x-Xc)
si tu écris Dy=(y-Yc) et Dx=(x-Xc),
Dx et Dy sont les solutions de:
Dy = aDx
Dx^2 + Dy^2 = R^2
Une autre possibilité serait d'utiliser les fonctions trigonometriques.
qu'en penses-tu?
je pense que tu peux simplifier dramatiquement ton calcul.
comme ta fonction est affine et que le rayon de ton cercle est constant, il te suffit de calculer une seule fois (x-Xc) et (y-Yc).
à chaque itération, il te suffit d'ajouter ces valeurs constantes à Xc et de Yc.
par ailleurs, tu pourrais simplifier ton calcul d'intersection, en tenant compte que Yc = aXc +b et donc que (y-Yc) = a(x-Xc)
si tu écris Dy=(y-Yc) et Dx=(x-Xc),
Dx et Dy sont les solutions de:
Dy = aDx
Dx^2 + Dy^2 = R^2
Une autre possibilité serait d'utiliser les fonctions trigonometriques.
qu'en penses-tu?
Bonjour,
Je suis pas sur d'avoir compris parce que Yc et Xc sont les coordonnées du centre du cercle mais aussi de celui du points. Ce qui fait le déplacement à la même vitesse quelque soit la trajectoire c'est le rayon R, or dans ton équation final R n'y est pas.
Je vais essayé de m'orienter vers la trigonométrie.
Merci de prendre du temps pour me répondre !
Je suis pas sur d'avoir compris parce que Yc et Xc sont les coordonnées du centre du cercle mais aussi de celui du points. Ce qui fait le déplacement à la même vitesse quelque soit la trajectoire c'est le rayon R, or dans ton équation final R n'y est pas.
Je vais essayé de m'orienter vers la trigonométrie.
Merci de prendre du temps pour me répondre !
je pense que tu n'as pas compris.
1) si tu écris Dy=(y-Yc) et Dx=(x-Xc),
Dx et Dy sont les solutions de:
Dy = aDx
Dx^2 + Dy^2 = R^2
je suppose que tu peux facilement trouver Dx et Dy à partir de ces équations.
en fait: Dx = R/sqrt(1+A^2) et Dy = AR/sqrt(1+A^2)
2) il te suffit de calculer Dx et Dy une seule fois, il n'est pas utile de le faire à chaque itération.
3) à chaque itération, il suffit de calculer:
x=Xc+Dx
y=Yc+Dy
1) si tu écris Dy=(y-Yc) et Dx=(x-Xc),
Dx et Dy sont les solutions de:
Dy = aDx
Dx^2 + Dy^2 = R^2
je suppose que tu peux facilement trouver Dx et Dy à partir de ces équations.
en fait: Dx = R/sqrt(1+A^2) et Dy = AR/sqrt(1+A^2)
2) il te suffit de calculer Dx et Dy une seule fois, il n'est pas utile de le faire à chaque itération.
3) à chaque itération, il suffit de calculer:
x=Xc+Dx
y=Yc+Dy
Ici les points rouges se déplacent uniformément contrairement aux points bleus.
Ce que je cherche c'est à améliorer la fonction Intersection qui sert à déplacer un objet de manière uniforme et quelque soit sa trajectoire donnée sous forme de fonction affine.
Il doit certainement y avoir une propriété mathématique pour ça ?
comment se déplacent les points de trajectoire1? je m'attendrais à ce que ce soit un déplacement uniforme (à une vitesse constante, variable cependant en fonction de la fonction affine).