Leuprochon — 2013-02-20 19:41:55

Bonjour à tous !

Je me présente, Quentin, étudiant en jeu vidéo et graphiste de base. On a un projet de groupe qui a pour sujet de créer un jeu avec processing.

Ainsi me voilà lancé dans ce logiciel à m'amuser bien que je n'ai pas l'âme d'un codeur.

Je vous expose mon problème : on veut animer 2 objets ( on prendra l'exemple de 2 cubes ) en Y. Ces 2 cubes sont reliés l'un et l'autre grâce à une courbe sinusoïdal ( un espèce d'arc électrique ).  L'intérêt est que lorsque ces cubes ont le même Y on a une belle sinusoïdal ( ou moche, c'est pareil ! ) de dessiner, plus les 2 cubes s'écartent, plus la courbe se tend jusqu'à être une ligne droite.

En gros voici ce que ça donne quand les 2 cubes ( les 2 O ) ont le même Y:

O/\/\/\/\/\O

Voici dans le cas extrême :

O
  \
    \
      \
        \
          \
           O

J'espère que mes magnifiques dessins vous aideront à mieux comprendre !!


Si quelqu'un a une piste, une idée de comment faire je suis preneur. J'ai récupéré différents trucs sur le net mais je ne suis arrivé à rien. Vous nous sauverez la vie !!

Leuprochon

Mushussu — 2013-02-21 07:20:54

Bonjour,

Un truc comme cela :

PVector cube1, cube2;

void setup() {
  size(800, 400);
  rectMode(CENTER);
  cube1 = new PVector(100, 200);
  cube2 = new PVector(700, 200);
}

void draw() {
  background(255);
  rect(cube1.x, cube1.y, 40, 40);
  rect(cube2.x, cube2.y, 40, 40);
  float a = 0.0;
  float increment = TWO_PI/80.0;
  float amplitude;
  translate(100, 200);
  noFill();
  beginShape();
  for (int i = 0; i < 600; i++) {
    amplitude = 2000 / (cube2.x - cube1.x);
    vertex(i * (cube2.x - cube1.x) / 600, amplitude * sin(a));
    a = a + increment;
  }
  endShape();
}

void mouseDragged() {
  cube2.x = mouseX;
}

A toi ensuite de trouver la courbe d'amplitude pour ton rendu visuel.

Leuprochon — 2013-02-21 09:02:51

Salut !

Merci, c'est super ! Il reste plus qu'à l'adapter pour que ce soit sur l'axe Y !! Merci encore (;

Quentin

Leuprochon — 2013-02-21 10:27:13

Me revoilà !

Ce que tu m'as proposé est vraiment l'effet que je veux mais je n'arrive pas à l'adapter comme voulu. Le déplacement se fait sur l'axe Y et non X comme dans le code actuel.
J'arrive à faire en sorte que la courbe soit influencé du à l'axe Y de mes cubes, cependant elle reste en ligne droite. c'est à dire que peu importe la coordonnée Y de mes cubes, elle reste à y = 200.

J'ai essayé de faire que le début de ma courbe soit lié au coordonnée X et Y de mon cube1, et idem pour le cube2 en ce qui concerne la fin de la courbe.

Je sais pas si j'arrive à être clair ... Le dessin dans mon premier post représente bien le mouvement que je veux. Peu importe l'axe Y de mes cubes, ils doivent être constamment relié. Sachant que mes cubes ne bougeront jamais en X

Quentin

Mushussu — 2013-02-21 21:59:33

Alors, je pense que ceci devrait te convenir :

Leuprochon — 2013-02-22 10:30:27

Merci c'est nickel !! Tu me sauves (;

Quentin