This page tests to make sure ambientLight(), directionalLight() and pointLight()
for Processing JS work correctly on spheres.
// Test written by Andor Salga
int startX, startY;
int x, y;
int objCounter = 1;
int NUM_OBJECTS_PER_ROW = 13;
boolean isDone = false;
void setup()
{
size(500,500,OPENGL);
startX = width/2 - 60;
startY = height/2 - 70;
x = startX;
y = startY;
}
void draw()
{
background(100,135,100);
drawObjects();
}
void drawObjects()
{
camera();
noStroke();
sphereDetail(30);
fill(255);
drawNextObject();
// single value
noFill();
drawNextObject();
// single value
fill(1);
drawNextObject();
fill(50);
drawNextObject();
fill(128);
drawNextObject();
fill(200);
drawNextObject();
fill(255);
drawNextObject();
////////////////////////////////////////////////
// single values for color, color - single value
////////////////////////////////////////////////
ambientLight(128, 0, 0);
fill(color(0));
drawNextObject();
fill(color(1));
drawNextObject();
fill(color(50));
drawNextObject();
fill(color(200));
drawNextObject();
fill(color(255));
drawNextObject();
///////////////////////////////
// single value - hex no alpha
///////////////////////////////
fill(#000000);
drawNextObject();
fill(#808080);
drawNextObject();
fill(#FFFFFF);
drawNextObject();
noFill();
drawNextObject();
pointLight( 0, 0, 128, 0, 100, 0 );
fill(#00FF00);
drawNextObject();
fill(#0000FF);
drawNextObject();
fill(#FFFF00);
drawNextObject();
fill(#FF00FF);
drawNextObject();
fill(#00FFFF);
drawNextObject();
fill(#214263);
drawNextObject();
///////////////////////////////////////////////
// single value - color, color multiple values
//////////////////////////////////////////////
fill(color(0,0,0));
drawNextObject();
fill(color(128,128,128));
drawNextObject();
fill(color(255,255,255));
drawNextObject();
fill(color(255,0,0));
drawNextObject();
fill(color(0,255,0));
drawNextObject();
fill(color(0,0,255));
drawNextObject();
fill(color(255,255,0));
drawNextObject();
fill(color(255,0,255));
drawNextObject();
fill(color(0,255,255));
drawNextObject();
fill(color(33,66,99));
drawNextObject();
/////////////////////////////////
// double values - color + alpha
/////////////////////////////////
directionalLight( 128, 0, 0, -1, 0, 0 );
fill(color(0,0,0),255);
drawNextObject();
fill(color(128,128,128),255);
drawNextObject();
fill(color(255,255,255),255);
drawNextObject();
fill(color(255,0,0),255);
drawNextObject();
fill(color(0,255,0),255);
drawNextObject();
fill(color(0,0,255),255);
drawNextObject();
fill(color(255),255);
drawNextObject();
fill(color(0,0,255),255);
drawNextObject();
fill(color(0,255,0),255);
drawNextObject();
fill(color(255,0,0),255);
drawNextObject();
fill(color(255),255);
drawNextObject();
fill(color(255),255);
drawNextObject();
fill(color(255),255);
drawNextObject();
fill(color(128),255);
drawNextObject();
fill(color(128),255);
drawNextObject();
// hex + alpha
fill(#000000,255);
drawNextObject();
fill(#808080,255);
drawNextObject();
fill(#FFFFFF,255);
drawNextObject();
fill(#FF0000,255);
drawNextObject();
fill(#00FF00,255);
drawNextObject();
fill(#0000FF,255);
drawNextObject();
fill(#FFFF00,255);
drawNextObject();
fill(#FF00FF,255);
drawNextObject();
fill(#00FFFF,255);
drawNextObject();
fill(#214263,255);
drawNextObject();
////////////////
// gray + alpha
////////////////
fill(0, 255);
drawNextObject();
fill(0, 255);
drawNextObject();
fill(0, 255);
drawNextObject();
fill(1, 255);
drawNextObject();
fill(1, 255);
drawNextObject();
fill(1, 255);
drawNextObject();
fill(50, 255);
drawNextObject();
fill(50, 255);
drawNextObject();
fill(50, 255);
drawNextObject();
fill(128, 255);
drawNextObject();
fill(128, 255);
drawNextObject();
fill(128, 255);
drawNextObject();
fill(255, 255);
drawNextObject();
fill(255, 255);
drawNextObject();
fill(255, 255);
drawNextObject();
///////////////////////
// triple values r,g,b
//////////////////////
noLights();
fill(0,0,0);
drawNextObject();
fill(128,128,128);
drawNextObject();
fill(255,255,255);
drawNextObject();
fill(255,0,0);
drawNextObject();
noFill();
drawNextObject();
fill(0,0,255);
drawNextObject();
fill(255,255,0);
drawNextObject();
fill(255,0,255);
drawNextObject();
fill(0,255,255);
drawNextObject();
fill(33,66,99);
drawNextObject();
///////////////
// quad values
///////////////
directionalLight( 0, 128, 128, 1, 1, 0 );
fill(0, 255);
drawNextObject();
fill(0, 255);
drawNextObject();
fill(0, 255);
drawNextObject();
fill(1, 255);
drawNextObject();
fill(1, 255);
drawNextObject();
fill(1, 255);
drawNextObject();
fill(50, 255);
drawNextObject();
fill(50, 255);
drawNextObject();
fill(50, 255);
drawNextObject();
fill(128, 255);
drawNextObject();
fill(128, 255);
drawNextObject();
fill(128, 255);
drawNextObject();
fill(255, 255);
drawNextObject();
fill(255, 255);
drawNextObject();
fill(255, 255);
drawNextObject();
fill(0,0,0,255);
drawNextObject();
fill(0,0,0, 255);
drawNextObject();
fill(0,0,0, 255);
drawNextObject();
fill(128,128,128, 255);
drawNextObject();
fill(128,128,128, 255);
drawNextObject();
fill(128,128,128, 255);
drawNextObject();
fill(255,255,255, 255);
drawNextObject();
// !!
fill(255,255,255, 255);
drawNextObject();
fill(255,255,255, 255);
drawNextObject();
fill(255,0,0, 255);
drawNextObject();
fill(255,0,0, 255);
drawNextObject();
fill(255,0,0, 255);
drawNextObject();
fill(0,255,0, 255);
drawNextObject();
fill(0,255,0, 255);
drawNextObject();
fill(0,255,0, 255);
drawNextObject();
fill(33,66,99, 255);
drawNextObject();
fill(33,66,99, 255);
drawNextObject();
fill(33,66,99, 255);
drawNextObject();
/// extras
directionalLight( 128, 128, 128, 0, -1, 0 );
fill(#00FF00);
drawNextObject();
fill(#0000FF);
drawNextObject();
fill(#FFFF00);
drawNextObject();
fill(#FF00FF);
drawNextObject();
fill(#00FFFF);
drawNextObject();
fill(#214263);
drawNextObject();
fill(#00FF00);
drawNextObject();
fill(#0000FF);
drawNextObject();
fill(#FFFF00);
drawNextObject();
fill(#FF00FF);
drawNextObject();
fill(#00FFFF);
drawNextObject();
fill(#214263);
drawNextObject();
fill(255,255,255, 255);
drawNextObject();
fill(255,255,255, 255);
drawNextObject();
fill(255,0,0, 255);
drawNextObject();
fill(255,0,0, 255);
drawNextObject();
fill(255,0,0, 255);
drawNextObject();
fill(0,255,0, 255);
drawNextObject();
fill(0,255,0, 255);
drawNextObject();
fill(0,255,0, 255);
drawNextObject();
fill(33,66,99, 255);
drawNextObject();
fill(33,66,99, 255);
drawNextObject();
strokeWeight(1);
stroke(128,0,0);
sphereDetail(10);
directionalLight( 64, 255, 0, 0, 0, -1 );
fill(33,66,99, 255);
drawNextObject();
fill(0, 255);
drawNextObject();
fill(0, 255);
drawNextObject();
fill(0, 255);
drawNextObject();
fill(1, 255);
drawNextObject();
fill(1, 255);
drawNextObject();
fill(1, 255);
drawNextObject();
fill(50, 255);
drawNextObject();
fill(50, 255);
drawNextObject();
fill(50, 255);
drawNextObject();
fill(128, 255);
drawNextObject();
fill(128, 255);
drawNextObject();
fill(128, 255);
drawNextObject();
fill(255, 255);
drawNextObject();
fill(255, 255);
drawNextObject();
fill(255, 255);
drawNextObject();
isDone = true;
}
void drawNextObject()
{
if(isDone){
isDone = false;
objCounter = 1;
x = startX;
y = startY;
}
x += 10;
if( objCounter % NUM_OBJECTS_PER_ROW-1 == 0 )
{
y += 10;
x = startX;
}
pushMatrix();
translate(x, y, 320);
sphere(5);
popMatrix();
objCounter++;
}