[C/allegro/math] Deplacement a partir d'un angle

Bonjour

Je veut fair un petit programme en C qui va fair deplacer une image dans une direction de x degree sur 360, classic quoi :slight_smile: .

je crois avoir trouvé la formule qui permet de cacluler tout ces points :

Pour un angle â et un point A (Xa,Ya) l’équation est Y = m x X + p
avec m = tan(â) et p = Ya - m x Xa.

Mais comme ca fait TRES longtemp que j’ai plus fait d’equation j’arive pas a ecrire en C le code qui me permetra de calculer tout ces points :frowning:


// fonction tan supportée ?
#ifndef tan
#include <math.h>
double tan(double x)
{
 if (cos(X) != 0)
     return sin(x)/cos(x);
 else 
     printf("Erreur !\n");
}
#endif

[...]

float alpha,y,m,p;
int posx, posy;

   getcurpos(&posx,&posy); // récupere les coordonées du point à calculer, à toi de le faire
   alpha = 45.0f; // 45°, valeur arbitraire pour l'exemple
   m = tan(alpha);
   p  = posy - m * posx;
   y  = m * x + p;

Moi, c’est l’inverse, j’arrive à coder des formules mais pas à les comprendre :ane:

Cool :slight_smile: mais ce que je comprend pas c’est quel sont les 2 variable qui represente les coordonnee de mon 1er point ? qu’el est la variable qui faut incrémenter pour calculer mon 2em point ?

posx et posy représentent les coordonées sources de ton point, tu peux aussi utiliser son index directement :


char pixel = imgdata(x+(y*width));

En fait ce que je veut c’est resoudre l’equation pour avoir le resultat de posx et posy

posx = la formule

posy = la formule

Je part du principe que tu veux faire une rotation d’une image, il faudra donc (je pense) boucler sur toute l’image en x et en y (largeur et hauteur), posx = x et posy = y de ta boucle.
Je précise que moi c’est plutôt la prog dsp, en gfx, chui un noob :paf: