mirror of
https://github.com/dyne/FreeJ.git
synced 2026-02-11 15:20:48 +01:00
acid geometry script by buZz
This commit is contained in:
278
scripts/javascript/examples/acid_geo.js
Normal file
278
scripts/javascript/examples/acid_geo.js
Normal file
@@ -0,0 +1,278 @@
|
||||
// dinges met iets acid-achtigs, met vierkantjes en rondjes ofzo, geen idee nog precies, maar iig 'jaren 90-ish'
|
||||
// buZz, Puik.
|
||||
|
||||
W=640
|
||||
H=480
|
||||
|
||||
set_resolution(W,H);
|
||||
|
||||
kbd = new KeyboardController();
|
||||
|
||||
srand();
|
||||
|
||||
acidpalet = new Array(6);
|
||||
|
||||
for (i = 0; i < acidpalet.length ; ++i) {
|
||||
|
||||
acidpalet [i] = new Array(3);
|
||||
|
||||
}
|
||||
|
||||
//viez blauw
|
||||
acidpalet [0][0] = "0";
|
||||
acidpalet [0][1] = "159";
|
||||
acidpalet [0][2] = "247";
|
||||
|
||||
//supergeel
|
||||
acidpalet [1][0] = "255";
|
||||
acidpalet [1][1] = "245";
|
||||
acidpalet [1][2] = "0";
|
||||
|
||||
//ranziggroen
|
||||
acidpalet [2][0] = "46";
|
||||
acidpalet [2][1] = "255";
|
||||
acidpalet [2][2] = "84";
|
||||
|
||||
//gayroze
|
||||
acidpalet [3][0] = "254";
|
||||
acidpalet [3][1] = "0";
|
||||
acidpalet [3][2] = "124";
|
||||
|
||||
//gewoon wit, mja, vet acid weetje
|
||||
acidpalet [4][0] = "255";
|
||||
acidpalet [4][1] = "255";
|
||||
acidpalet [4][2] = "255";
|
||||
|
||||
//mehoranje
|
||||
acidpalet [5][0] = "255";
|
||||
acidpalet [5][1] = "168";
|
||||
acidpalet [5][2] = "0";
|
||||
|
||||
//encoder = new VideoEncoder(50, 64000, 0, 0);
|
||||
//register_encoder(encoder);
|
||||
|
||||
|
||||
//kbd.pressed_x = function() {
|
||||
// encoder.stop_filesave();
|
||||
//}
|
||||
|
||||
//kbd.pressed_z = function() {
|
||||
// encoder.start_filesave("acidvid.ogm");
|
||||
//}
|
||||
|
||||
function brand ( n )
|
||||
{
|
||||
return ( Math.floor ( Math.random ( ) * n + 1 ) );
|
||||
}
|
||||
|
||||
function drawRotatedtriangle(layer, centerx, centery, radius, rotation) {
|
||||
|
||||
// rotation = (rotation/180)*Math.PI;
|
||||
|
||||
ax = Math.cos((rotation/180)*Math.PI) * radius;
|
||||
ay = Math.sin((rotation/180)*Math.PI) * radius;
|
||||
bx = Math.cos(((rotation+120)/180)*Math.PI) * radius;
|
||||
by = Math.sin(((rotation+120)/180)*Math.PI) * radius;
|
||||
cx = Math.cos(((rotation+240)/180)*Math.PI) * radius;
|
||||
cy = Math.sin(((rotation+240)/180)*Math.PI) * radius;
|
||||
|
||||
layer.trigon_fill(ax+centerx,ay+centery,bx+centerx,by+centery,cx+centerx,cy+centery);
|
||||
|
||||
}
|
||||
|
||||
function drawRotatedsquare(layer, centerx, centery, radius, rotation) {
|
||||
|
||||
// rotation = (rotation/180)*Math.PI;
|
||||
|
||||
ax = Math.cos((rotation/180)*Math.PI) * radius;
|
||||
ay = Math.sin((rotation/180)*Math.PI) * radius;
|
||||
bx = Math.cos(((rotation+90)/180)*Math.PI) * radius;
|
||||
by = Math.sin(((rotation+90)/180)*Math.PI) * radius;
|
||||
cx = Math.cos(((rotation+180)/180)*Math.PI) * radius;
|
||||
cy = Math.sin(((rotation+180)/180)*Math.PI) * radius;
|
||||
dx = Math.cos(((rotation+270)/180)*Math.PI) * radius;
|
||||
dy = Math.sin(((rotation+270)/180)*Math.PI) * radius;
|
||||
|
||||
layer.trigon_fill(ax+centerx,ay+centery,bx+centerx,by+centery,cx+centerx,cy+centery);
|
||||
layer.trigon_fill(ax+centerx,ay+centery,dx+centerx,dy+centery,cx+centerx,cy+centery);
|
||||
|
||||
}
|
||||
|
||||
kbd.pressed_esc = function() { quit(); }
|
||||
//kbd.released_q = function() { quit(); }
|
||||
register_controller( kbd );
|
||||
|
||||
geo = new GeometryLayer();
|
||||
//geo.color(255,255,255,255);
|
||||
geo.set_blit("alpha");
|
||||
//geo.set_blit_value(1);
|
||||
geo.set_fps();
|
||||
geo.activate(true);
|
||||
add_layer(geo);
|
||||
|
||||
//drawStar(geo,30,1);
|
||||
|
||||
framec = 24;
|
||||
|
||||
xinc = 2;
|
||||
yinc = 1;
|
||||
zinc = 0;
|
||||
|
||||
forceshape = 0;
|
||||
forcedshape = 1;
|
||||
|
||||
acidmode = 1;
|
||||
|
||||
kbd.pressed_w = function() { yinc--; }
|
||||
kbd.pressed_s = function() { yinc++; }
|
||||
kbd.pressed_a = function() { xinc--; }
|
||||
kbd.pressed_d = function() { xinc++; }
|
||||
kbd.pressed_q = function() { zinc--; }
|
||||
kbd.pressed_e = function() { zinc++; }
|
||||
|
||||
kbd.pressed_c = function() { xinc=0; yinc=0; }
|
||||
|
||||
kbd.pressed_1 = function() { forceshape=1; forcedshape=1; }
|
||||
kbd.pressed_2 = function() { forceshape=1; forcedshape=2; }
|
||||
kbd.pressed_3 = function() { forceshape=1; forcedshape=3; }
|
||||
kbd.pressed_4 = function() { forceshape=1; forcedshape=4; }
|
||||
kbd.pressed_5 = function() { forceshape=1; forcedshape=5; }
|
||||
kbd.pressed_6 = function() { forceshape=1; forcedshape=6; }
|
||||
kbd.pressed_7 = function() { forceshape=1; forcedshape=7; }
|
||||
|
||||
kbd.released_1 = function() { forceshape=0; }
|
||||
kbd.released_2 = function() { forceshape=0; }
|
||||
kbd.released_3 = function() { forceshape=0; }
|
||||
kbd.released_4 = function() { forceshape=0; }
|
||||
kbd.released_5 = function() { forceshape=0; }
|
||||
kbd.released_6 = function() { forceshape=0; }
|
||||
kbd.released_7 = function() { forceshape=0; }
|
||||
|
||||
|
||||
kbd.pressed_0 = function() { acidmode=-acidmode; }
|
||||
|
||||
objectnum = 35;
|
||||
maxz = 20;
|
||||
|
||||
|
||||
object = new Array(objectnum)
|
||||
|
||||
function randomizeObjects() {
|
||||
for (i = 0; i < object.length ; ++i) {
|
||||
// ieder object is 7 dingen : r g b x y z en type
|
||||
object [i] = new Array(7);
|
||||
|
||||
// kleur instellen
|
||||
|
||||
object [i][0] = brand(256)-1; //r
|
||||
object [i][1] = brand(256)-1; //g
|
||||
object [i][2] = brand(256)-1; //b
|
||||
// alpha zou hier ook nog kunnen, maar meh
|
||||
|
||||
// posities instellen
|
||||
|
||||
object [i][3] = brand(W); //x
|
||||
object [i][4] = brand(H); //y
|
||||
object [i][5] = brand(maxz)-1; //z
|
||||
|
||||
// type instellen
|
||||
|
||||
// ehm sja, 1 is circle :D
|
||||
|
||||
object [i][6] = brand(8); // hihi
|
||||
|
||||
// acidkleur kiezen ;)
|
||||
|
||||
object [i][7] = brand(acidpalet.length)-1;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
randomizeObjects();
|
||||
|
||||
kbd.released_r = function() { randomizeObjects(); }
|
||||
|
||||
bang = new TriggerController();
|
||||
register_controller(bang);
|
||||
bang.frame = function() {
|
||||
if(framec>0) {
|
||||
framec--;
|
||||
} else {
|
||||
// ehm, ja, hier is dus een frame ofzo?
|
||||
// ja val me niet lastig, ik copypaste er ook maar op los :D
|
||||
|
||||
// geo.set_blit("alpha");
|
||||
// geo.set_blit_value(256);
|
||||
|
||||
|
||||
geo.color(0,0,0,0);
|
||||
geo.clear();
|
||||
|
||||
for (i = 0; i < object.length ; ++i) {
|
||||
|
||||
// oude object wissen?
|
||||
|
||||
// object updaten
|
||||
|
||||
object [i][3] = (object [i][3])+(xinc * ((maxz-(object [i][5]))/2));
|
||||
if (object [i][3]<0) object [i][3]=W;
|
||||
if (object [i][3]>W) object [i][3]=0;
|
||||
|
||||
object [i][4] = (object [i][4])+(yinc * ((maxz-(object [i][5]))/2));
|
||||
if (object [i][4]<0) object [i][4]=H;
|
||||
if (object [i][4]>H) object [i][4]=0;
|
||||
|
||||
// object tekenen
|
||||
|
||||
// geo.set_blit("add");
|
||||
// geo.set_blit_value(255);
|
||||
|
||||
if (acidmode<0) {
|
||||
geo.color(object [i][0], object [i][1], object [i][2]);
|
||||
} else {
|
||||
die = object [i][7];
|
||||
geo.color(acidpalet [die][0], acidpalet [die][1], acidpalet [die][2]);
|
||||
}
|
||||
|
||||
objectshape = object [i][6];
|
||||
|
||||
if (forceshape) objectshape = forcedshape;
|
||||
|
||||
switch (objectshape) {
|
||||
case 1:
|
||||
geo.circle_fill(object [i][3], object [i][4], 30 - object [i][5]);
|
||||
break;
|
||||
case 2:
|
||||
geo.pie_fill(object [i][3], object [i][4], 30 - object [i][5], (360/W)*object [i][3], (360/H)*object [i][4]);
|
||||
break;
|
||||
case 3:
|
||||
rotation = (((360/W)*object[i][3])+((360/H)*object[i][4]))/2;
|
||||
drawRotatedsquare(geo, object [i][3], object [i][4], (50 - object [i][5]), rotation);
|
||||
break;
|
||||
case 4:
|
||||
rotation = 360-((((360/W)*object[i][3])+((360/H)*object[i][4]))/2);
|
||||
drawRotatedsquare(geo, object [i][3], object [i][4], (50 - object [i][5]), rotation);
|
||||
break;
|
||||
case 5:
|
||||
geo.rectangle_fill(object [i][3] - (10 - object [i][5]), object [i][4] - (30 - object [i][5]), object [i][3] + (10 - object [i][5]), object [i][4] + (30 - object [i][5]));
|
||||
break;
|
||||
case 6:
|
||||
geo.rectangle_fill(object [i][3] - (30 - object [i][5]), object [i][4] - (10 - object [i][5]), object [i][3] + (30 - object [i][5]), object [i][4] + (10 - object [i][5]));
|
||||
break;
|
||||
case 7:
|
||||
rotation = (((360/W)*object[i][3])+((360/H)*object[i][4]))/2;
|
||||
drawRotatedtriangle(geo, object [i][3], object [i][4], (50 - object [i][5]), rotation);
|
||||
break;
|
||||
case 8:
|
||||
rotation = 360-((((360/W)*object[i][3])+((360/H)*object[i][4]))/2);
|
||||
drawRotatedtriangle(geo, object [i][3], object [i][4], (50 - object [i][5]), rotation);
|
||||
break;
|
||||
default:
|
||||
// huuuuuuuuuuuuuuuuuu
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user