Bonjour,
je suis en train de mettre au point un peu truc avec la SFML mais je bute actuellement sur un petit problème...
J'essaye de faire pivoter un objet dans la direction de la souris.
sf::Vector2i pos = sf::Mouse::getPosition(window);
float diffx = fabs(pos.x - player.getOrigin().x);
float diffy = fabs(pos.y - player.getOrigin().y);
if(diffy == 0)
diffy = 0,001; //0 est une valeur interdite !
float angle = atan(diffx/diffy) * 180 / PI; //#define PI 3.14159265
if(pos.x > player.getOrigin().x && pos.y < player.getOrigin().y)
player.setRotation(angle);
else if(pos.x > player.getOrigin().x && pos.y > player.getOrigin().y)
player.setRotation(90 + angle);
else if(pos.x < player.getOrigin().x && pos.y > player.getOrigin().y)
player.setRotation(180 + angle);
else if(pos.x < player.getOrigin().x && pos.y < player.getOrigin().y)
player.setRotation(360-angle);
Voilà, mais cet algorithme ne marche pas... pourtant je n'arrive pas à comprendre...
Les angles obtenus via atan sont en radian, je les passe donc en degré (ce qui est attendu par SFML)
Je pense avoir pensé à tout, à la valeur interdite pour la division, j'ai même fait des dessins, je vois pas le problème... Mais l'orientation de mon objet reste incohérente....
Merci d'avance