Annonce

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


#1 2017-06-25 17:28:28 rotation 3D perspective

Capitoul
membre
Date d'inscription: 2014-09-19
Messages: 13

rotation 3D perspective



Je cherche à faire une video pour montrer le phénomène de précession de l'axe de la terre. Je joins le code ci-dessous.

J'utilise une double rotation : rotateZ() pour le balayage de gauche à droite et inversement et rotateZ() pour le balayage avant-arrière et inversement. La représentation restitue le phénomène mais faussement puisque quand la sphère bascule vers l'avant  (hémisphère nord dilaté), l'axe devrait être en avant de l'écran et inversement il devrait être en arrière  quand la sphère bascule en arrière (hémisphère sud dilaté). Voici un exemple qui image ce que je cherche. (https://www.youtube.com/watch?v=qlVgEoZDjok)

Merci d'avance de votre aide

Capitoul


float mu = 0;
float deltaMu = 2*PI/200;

float rho=PI/6;
float deltaRho = 2*PI/200;

int rayonTerre = 50;
float iter =0;



void setup() {
 
   
size(800, 600, P3D);
frameRate(40);
//ortho(-width/2, width/2, -height/2, height/2, 0, 2000);   
 
}


void draw ()  {

background(50, 50, 50);

pushMatrix();
translate(width/2, 3*height/4);



rotateZ(-mu);
rotateX(rho);


// Tracé sphere
  fill(67, 185, 238, 128);
  noStroke();
  sphere(rayonTerre);
 
// Tracé axe de rotation
  stroke(255);
  strokeWeight(2);
  line(0, 100, 0, 0, -300, 0);
 
 
  // Tracé équateur
  pushMatrix();
  rotateX(PI/2);
  noFill();
  stroke(255);
  ellipse(0, 0, 2*rayonTerre+3, 2*rayonTerre+3);
  popMatrix();
  popMatrix();
 
  // tracé extrémité de l'axe

  translate (width/2,  height/3.6, 0);
   rotateX(PI/2.9);
  stroke(67, 185, 238, 128);
  noFill();
  sphere(5);
  ellipse(0, 0, 260, 250);
 
   
// iterations

iter=iter+1;
mu= (-PI/7) * sin(iter*2*PI/200);
rho=(PI/7) * cos(iter*2*PI/200);


if (iter>=200) {
  iter=0;
}
}

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2017