noc-examples-processing icon indicating copy to clipboard operation
noc-examples-processing copied to clipboard

How to add an example?

Open GanWeaving opened this issue 12 years ago • 0 comments

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:

  • http://sketchpad.cc
  • observe the evolution of this sketch:
  • http://studio.sketchpad.cc/sp/pad/view/ro.37kmnnDoE91/rev.4
  • authors:
  • GoToLoop
  • license (unless otherwise specified):
  • creative commons attribution-share alike 3.0 license.
  • http://creativecommons.org/licenses/by-sa/3.0/ */

// 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; }

GanWeaving avatar Jul 25 '13 10:07 GanWeaving