nature-of-code / noc-examples-processing

Repository for example code from The Nature of Code book
MIT License
2.56k stars 951 forks source link

How to add an example? #35

Open GanWeaving opened 11 years ago

GanWeaving commented 11 years ago

I'm sorry this is surely not the way to go but I'm not sure how to do it otherwise ...

Here's the code for example 1.3 from the book:

/* built with Studio Sketchpad:

// Nature of Code - EXERCISE 1.3 - 3D Bouncing Ball // Extend the bouncing ball with vectors example into 3D. // Can you get a sphere to bounce around a box?

// https://forum.processing.org/topic/ // the-nature-of-code-code-solutions-of-the-examples

// studio.processingtogether.com/sp/pad/export/ro.9o1T5z1ghf2s7/latest

final PVector location = new PVector(); final PVector velocity = new PVector(3, 2, 4);

final static int BALL_DIM = 30; final static int CUBE_DIM = 450, CUBE_RAD = CUBE_DIM >> 1;

int cx, cy;

void setup() { size(400, 400, P3D); strokeWeight(2);

cx = width >> 1; cy = height >> 1; }

void draw() { background(-1);

drawCube(); moveSphere(); drawSphere(); }

void drawCube() { //move cube and ball to center: translate(cx, cy, -CUBE_DIM);

//rotate cube and ball so it's 3D-ness can be appreciated: rotateX(-QUARTER_PI); rotateY(QUARTER_PI); rotateZ(QUARTER_PI/2);

//draw cube: noFill(); stroke(0);

box(CUBE_DIM); }

void moveSphere() { //move ball: location.add(velocity);

//detect edges with center at 0,0 and edge minus width of ball: if ( checkBounce(location.x) ) velocity.x = -1; if ( checkBounce(location.y) ) velocity.y = -1; if ( checkBounce(location.z) ) velocity.z *= -1; }

void drawSphere() { //draw ball, and lights for definition: translate(location.x, location.y, location.z);

fill(0300); noStroke(); lights();

sphere(BALL_DIM); }

static final boolean checkBounce(float coord) { return coord > CUBE_RAD - BALL_DIM | coord < BALL_DIM - CUBE_RAD; }