Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2011-02-15 11:16:51 rotation libre

Olivier__F
membre
Date d'inscription: 2010-04-27
Messages: 28

rotation libre



Bonjour,
je suis resté coincé sur un problème de rotation avec Pd/GEM, je me demande si une solution simple existe avec Processing.
Je souhaite faire tourner un objet 3D sur trois axes (deux me suffiraient) fixes.
En gros: sur une table réactive, j'affiche une sphère, qui tourne sur un axe X quand je passe mon doigt verticalement, qui tourne sur l'axe Y quand je passe mon doigt horizontalement, et idéalement qui tourne sur l'axe Z avec un autre mouvement.
J'ai bien compris que dans Processing les transformations s'appliquent sur une matrice qui change le repère, et je crois qu'il est possible d'obtenir mon résultat par des manipulations de matrices, ce qui est largement au delà de mon niveau de maths.
Existe t'il une façon simple avec Processing d'effectuer des rotations dans un repère fixe?
Merci!

Hors ligne

 

#2 2011-02-15 21:46:45 Re : rotation libre

talaron
membre
Date d'inscription: 2010-11-27
Messages: 23

Re: rotation libre



Bonsoir Olivier,
avec rotate(angle) ? http://processing.org/reference/rotate_.html
Il y a aussi rotateX(angle), rotateY(angle) et rotateZ(angle)
Un petit exemple

void setup()
{
 size(400,400,P3D);
 noFill();
 stroke(255);
}

void draw()
{
  background(0);
  translate(width/2,height/2);
  pushMatrix();
  float angleX = map(mouseY,0,width,TWO_PI,0);
  float angleY = map(mouseX,0,height,TWO_PI,0);
  rotateX(angleX);
  rotateY(angleY);
  box(200);
  sphere(50);
  
  popMatrix();
  box(100);
}

Hors ligne

 

#3 2011-02-16 08:34:36 Re : rotation libre

Olivier__F
membre
Date d'inscription: 2010-04-27
Messages: 28

Re: rotation libre



Salut,
merci pour ta réponse, mais ça c'est ce que je ne veux pas faire.
Quand le cube fait une rotation de 90 degrés autour de l'axe X, l'axe Y bouge avec et se retrouve là ou était l'axe Z.
Le cube semble alors tourner sur Z. Je voudrais donc pouvoir appliquer des rotations autour d'axes ne se déplacant pas avec l'objet.
Je crois après lecture de tas de forums sur la question que c'est un problème qui n'a pas de solution toute prête, à moins qu'une librairie contienne des outils spécifiques.
En attendant je creuse du côté des matrices... hmm

Hors ligne

 

#4 2011-02-16 09:58:19 Re : rotation libre

talaron
membre
Date d'inscription: 2010-11-27
Messages: 23

Re: rotation libre



Je n'ai pas compris ce que tu cherches à faire,
as tu une illustration ?

Hors ligne

 

#5 2011-02-16 11:14:09 Re : rotation libre

Olivier__F
membre
Date d'inscription: 2010-04-27
Messages: 28

Re: rotation libre

Hors ligne

 

#6 2011-02-16 12:12:08 Re : rotation libre

talaron
membre
Date d'inscription: 2010-11-27
Messages: 23

Re: rotation libre



Ca m'a l'air d'etre la même chose,
voilà un arrangement vite fait du patch précédent pour ressembler plus à la video

float angleX,angleY,prevAngleX,prevAngleY=0;
int clicX,clicY=0;

void setup()
{
 size(400,400,P3D);
 noFill();
 stroke(255);
}

void draw()
{
  background(0);
  translate(width/2,height/2);
  pushMatrix();
  if (mousePressed)
  {
    angleX = prevAngleX + map(mouseY-clicY,0,width,PI,0);
    angleY = prevAngleY + map(mouseX-clicX,0,height,PI,0);
  }
  else
  {
    prevAngleX = angleX;
    prevAngleY = angleY;
  }
  rotateX(angleX);
  rotateY(angleY);
  sphere(150);
  popMatrix();
}

void mousePressed()
{
  clicX = mouseX;
  clicY = mouseY;
}

Hors ligne

 

#7 2011-02-16 12:58:29 Re : rotation libre

Olivier__F
membre
Date d'inscription: 2010-04-27
Messages: 28

Re: rotation libre



Merci encore, mais ce n'est pas ça.
Dans l'exemple video, quand l'un des poles de la lune pointe vers l'observateur, les mouvements horizontaux de souris font tourner la lune sur l'axe qu'occupaient ses poles à l'origine. Ce n'est pas le cas dans ton patch ou la sphere tourne comme les aiguilles d'une montre quand tu as un des poles face à toi.
Je viens de trouver ceci qui est exactement ce que je veux faire. Le patch est trop compliqué pour moi, mais je vais essayer de bricoler avec pour l'instant.
http://www.chronotext.org/bits/030/

Hors ligne

 

#8 2011-02-16 16:40:49 Re : rotation libre

cdriko
modérateur
Lieu: Le Landreau
Date d'inscription: 2010-07-16
Messages: 76
Site web

Re: rotation libre



c'est bien la bataille, les rotations 3D
il faut utiliser des quaternions....

ou zouiller en prenant lalibrairie proscene


/**
 * Basic Use.
 * by Jean Pierre Charalambos.
 * 
 * This example illustrates a direct approach to using proscene by Scene proper
 * instantiation.
 * 
 * Press 'h' to display the global shortcuts in the console.
 * Press 'H' to display the current camera profile keyboard shortcuts
 * and mouse bindings in the console.
 */

import remixlab.proscene.*;

Scene scene;

void setup() {
  size(400, 400, P3D);
  //Scene instantiation
  scene = new Scene(this);  
  scene.setAxisIsDrawn(false);
    scene.setGridIsDrawn(false);
}

void draw() {
  //Proscene sets the background to black by default. If you need to change
  //it, don't call background() directly but use scene.background() instead.
  fill(204, 102, 0);
  sphere(50);
}

avec, c'est presque trop fastoche wink

Dernière modification par cdriko (2011-02-16 16:41:36)

Hors ligne

 

#9 2011-02-17 07:47:03 Re : rotation libre

Olivier__F
membre
Date d'inscription: 2010-04-27
Messages: 28

Re: rotation libre



Cool, merci pour la librairie, je n'avais pas regardé celle ci!
smile

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024