OVH Cloud OVH Cloud

faire bouger une image entre 2 points?

3 réponses
Avatar
Sylvain
Bonjour à la communauté,
Mon problème est le suivant, je travaille en mode graphique en c#,
j'aimerais faire bouger une image entre 2 points connus. Comment calculer
tout les points situés entre mes 2 points connus? Si on pouvait faire comme
un drawline et aller chercher chaque points, pour que je puisse faire bouger
mon image en passant par ces points.. ou faut-il passer par une équation
mathématique..
merci si vous avez des pistes de solutions
Sylvain

3 réponses

Avatar
Paul Bacelar
Si ton déplacement est linéaire (ligne droit entre les deux point selon une
vitesse constante).

Xdebut et Ydébut la position du coin haut-droit l'image au début du
mouvement, Xfin et Xfin la position du coin haut-droit de l'image à la fin
du mouvement, Xt et Yt la position du coin haut-droit l'image à l'instant du
mouvement. Tdebut le temps au début du mouvement, Tfin le temps à la fin du
mouvement.

Xt = Xdebut + ((Xfin-Xdebut)*((t-Tdebut)/(Tfin - Tdebut)))

Yt = Ydebut + ((Yfin-Ydebut)*((t-Tdebut)/(Tfin - Tdebut)))

C'est des Maths de collèges (et encore, je suis une vraie burne en maths).

Je vous laisse l'optimisation du code comme le calcul des vecteurs vitesses.

Un timer pour invalider régulièrement la surface d'affichage et une mise à
jour de la propriété location de l'objet image selon la formule et le tour
est joué.

Le code en entier devrait tenir sur la moitié de la taille de ce post.
--
Paul Bacelar
MVP VC++


"Sylvain" wrote in message
news:
Bonjour à la communauté,
Mon problème est le suivant, je travaille en mode graphique en c#,
j'aimerais faire bouger une image entre 2 points connus. Comment calculer
tout les points situés entre mes 2 points connus? Si on pouvait faire
comme
un drawline et aller chercher chaque points, pour que je puisse faire
bouger
mon image en passant par ces points.. ou faut-il passer par une équation
mathématique..
merci si vous avez des pistes de solutions
Sylvain


Avatar
Remi Thomas - MVP
> Si ton déplacement est linéaire (ligne droit entre les deux point selon
une vitesse constante).

Xdebut et Ydébut la position du coin haut-droit l'image au début du
mouvement, Xfin et Xfin la position du coin haut-droit de l'image à la fin
du mouvement, Xt et Yt la position du coin haut-droit l'image à l'instant
du mouvement. Tdebut le temps au début du mouvement, Tfin le temps à la
fin du mouvement.

Xt = Xdebut + ((Xfin-Xdebut)*((t-Tdebut)/(Tfin - Tdebut)))

Yt = Ydebut + ((Yfin-Ydebut)*((t-Tdebut)/(Tfin - Tdebut)))

C'est des Maths de collèges (et encore, je suis une vraie burne en maths).

Je vous laisse l'optimisation du code comme le calcul des vecteurs
vitesses.




Pour optimiser utiliser l'ago de Bresenham qui n'utilise que des entiers.
http://en.wikipedia.org/wiki/Bresenham's_line_algorithm

Rémi
Avatar
Sylvain
Merci à vous deux... j'essaie d'incorporer ça dans mon code.. je vous donne
un feedback.. lorsque le tout sera fonctionnel..
Sylvain

"Sylvain" a écrit :

Bonjour à la communauté,
Mon problème est le suivant, je travaille en mode graphique en c#,
j'aimerais faire bouger une image entre 2 points connus. Comment calculer
tout les points situés entre mes 2 points connus? Si on pouvait faire comme
un drawline et aller chercher chaque points, pour que je puisse faire bouger
mon image en passant par ces points.. ou faut-il passer par une équation
mathématique..
merci si vous avez des pistes de solutions
Sylvain