EricRG — 2011-09-28 19:46:29

Bonjour,

j'ai un peu honte de demander ça mais je n'arrive pas à trouver la solution !!!

Voilà, j'ai fait une classe pour gérer des sprites qui commence comme ça :

class Sprite {
  PImage Gimage;
  int x,y; //Position du point de référence dans l'écran
  int dx,dy; //Position du point de référence dans l'image
  boolean visible;
  int direction; // en degrés
 
  Sprite(PImage Gimage, int x, int y, int dx, int dy,int direction, boolean visible) {
    this.Gimage=Gimage;
    this.x=x;
    this.y=y;
    this.dx=dx;
    this.dy=dy;
    this.visible=visible;
    this.direction=direction;
  }
 
  void display() {
    if (visible) {
--> C'est là que j'ai des problèmes

Je voudrais faire tourner l'image en fonction d'un angle que je mettrais dans la variable "direction" (en degrés, c'est un détail !)
mais je ne veux pas faire tourner l'image en fonction du point en haut à droite mais en fonction d'un point x,y
Le point d'origine de l'image (en haut à droite de celle-ci) étant le point situé aux coordonnées : (x-dx,y-dy).
(dx,dy) étant ce point de référence à l'intérieur de l'image proprement dite par rapport au point situé en haut à gauche de celle-ci

J'ai beau chercher, pour l'instant je nage ! (plutôt la brasse coulée)

Est-ce que quelqu'un aurait une bouée ???

P.S. Je sais bien qu'il faut utiliser les fonctions pushmatrix, popmatrix, translate et rotate mais je n'arrive pas à me dépatouiller avec la fonction image qui prend comme coordonnées le point situé en haut à gauche de celle-ci.
Je dois faire un jeu dans lequel une abeille suit un chemin. Au pire, je ne la ferai pas tourner mais bon !

:))

22_ — 2011-09-29 10:39:28

Je crois que tu trouveras ton bonheur avec la mythique fonction atan2 :
http://processing.org/reference/atan2_.html

EricRG — 2011-09-30 00:02:45

Merci beaucoup : c'est l'information qui me manquait !!!

(J'avais pourtant vu cette fonction mais je n'avais pas "percuté" mdr )

je mets ce que j'ai fait là : http://legaou.net/a/sprite0-1/

cdriko — 2011-09-30 17:46:08

sinon à l'aide d'un "translate" puis d'un "rotate" ( en 3D)...

EricRG — 2011-10-02 19:49:07

Je n'ai pas besoin de "3D" pour mes projets actuels (des petits jeux vidéos pour la page internet d'une association).

mais, c'est bon : ça marche maintenant :)