sterren en planeten

 

 

 

 

sterren en planeten

 

 

 

sterren en planeten

Twee groepen planeten die in Y en X richting rond de gele ster draaien.        teug naar de inleiding
 
Bovenstaande schets staat op open processing. De code is omgezet naar P5.js . WebGL zorgt voor het 3d effect. Light() werkt niet
Het lukt mij niet om de spheres een ad random kleur met alfa effect te geven.  De schets fullSreen
Onderstaande code is in pde, met een veel mooier resultaat, zie de afbeeldingen links.

 
 

Sphere ster; 
Sphere ster2; 
 
Sphere[] planeet = new Sphere[200]; 
 
void setup() { 
  fullScreen(P3D); 
  ster = new Sphere(width/2, height/2, 0, 100, color(255, 255, 0)); 
  ster2 = new Sphere(width/4, height/2, 40, 50, color(0, 255, 255)); 
 
  for (int i = 0; i < planeet.length; i++) {   
    //constructor x,y,z positie, diameter, kleur 
    planeet[i] = new Sphere(random(0, width), random(0, height), random(-height/3, height/3), 40,  
      color(random(0, 255), random(0, 255), random(0, 255), random(200, 220))); 
  } 
} 
 
void draw() { 
  background(0);   
  for (int i=0; i < planeet.length/2; i++) { 
    pushMatrix(); 
    planeet[i].draaienX();    
    planeet[i].display();    
    popMatrix();    
    stroke(255, 255, 0); 
    line (planeet[i].x, planeet[i].y, width/2, height/2); 
  } 
 
  for (int i = planeet.length/2; i < planeet.length; i++) { 
    pushMatrix(); 
    planeet[i].draaienY();    
    planeet[i].display();  
    popMatrix();  
 
    stroke(0, 255, 255); 
    line (planeet[i].x, planeet[i].y, width/4, height/2); 
  } 
  pushMatrix(); 
  ster.display(); 
  popMatrix(); 
 
  pushMatrix(); 
  ster2.display(); 
  popMatrix(); 
} 
 
void keyPressed() {  
  if (key == 'o') {  
    setup(); 
  } 
}

 

De class Sphere

 


class Sphere { 
 float x;  
 float y; 
 float z;  
 color c; 
 float w; 
 float rx; 
 float ry;
//constructor 
 Sphere(float x_, float y_, float z_, float w_, color c_) { 
 x = x_;  
 y = y_;  
 z = z_; 
 c = c_; 
 w = w_; 
 } 
 void display() { 
 lights(); 
 fill(c); 
 noStroke();  
 translate(x, y, z); 
 sphere(w); 
 } 
  
 void draaienX() {  
 translate(x, y, z); 
 rx = rx + 1; //ook mag r++  
 rotateX(radians(-rx));  
 if (rx == 360) rx = 0; 
 } 
 void draaienY() {  
 translate(x, y, z); 
 ry = ry + 1; //ook mag r++  
 rotateY(radians(ry));  
 if (ry == 360) ry = 0; 
 } 
}