06.01.2013 Views

Learning Processing: A Beginner's Guide to Programming Images ...

Learning Processing: A Beginner's Guide to Programming Images ...

Learning Processing: A Beginner's Guide to Programming Images ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

250 <strong>Learning</strong> <strong>Processing</strong><br />

Example 14-18: Object-oriented solar system<br />

// An array of 8 planet objects<br />

Planet[] planets = new Planet[8];<br />

void setup() {<br />

size(200,200);<br />

smooth();<br />

// The planet objects are initialized using the counter variable<br />

for (int i = 0; i < planets.length; i + + ) {<br />

planets[i] = new Planet(20 + i*10,i + 8);<br />

}<br />

}<br />

void draw() {<br />

background(255);<br />

// Drawing the Sun<br />

pushMatrix();<br />

translate(width/2,height/2);<br />

stroke(0);<br />

fill(255);<br />

ellipse(0,0,20,20);<br />

// Drawing all Planets<br />

for (int i = 0; i < planets.length; i + + ) {<br />

planets[i].update();<br />

planets[i].display();<br />

}<br />

popMatrix();<br />

}<br />

class Planet {<br />

float theta; // Rotation around sun<br />

float diameter; // Size of planet<br />

float distance; // Distance from sun<br />

float orbitspeed; // Orbit speed<br />

Planet(float distance_, float diameter_) {<br />

distance = distance_;<br />

diameter = diameter_;<br />

theta = 0;<br />

orbitspeed = random(0.01,0.03);<br />

}<br />

void update() {<br />

// Increment the angle <strong>to</strong> rotate<br />

theta + = orbitspeed;<br />

}<br />

fi g. 14.31<br />

Each planet object keeps track<br />

of its own angle of rotation.<br />

void display() {<br />

Before rotation and translation,<br />

the state of the matrix is saved<br />

pushMatrix();<br />

with pushMatrix().<br />

rotate(theta); // rotate orbit<br />

translate(distance,0); // translate out distance

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!