/** * GIK (Great Invention Kit, or Grace Gershenfeld's Invention Kit) * Module Maker * Inspired from GIK on Wikipedia * http://en.wikipedia.org/wiki/GIK **/ //For Processing 0133 Beta import controlP5.*; import processing.dxf.*; import processing.pdf.*; ControlP5 controlP5; float narrow_thickness = 6.6; float edge = 75; float branchedgescale = 2; float branchedgescalew = 2; float branchslant = 0.1; boolean record = true; //rectangles float ax = 100; float aax = 200; float aaax = 300; float aaaax = 400; float aaaaax = 500; float aaaaaax = 600; float ay = 120; float aay = 120; float aaay = 120; float aaaay = 120; float aaaaay = 120; float aaaaaay = 120; float bx = 100; float bbx = 200; float bbbx = 300; float bbbbx = 400; float bbbbbx = 500; float bbbbbbx = 600; float by = 220; float bby = 220; float bbby = 220; float bbbby = 220; float bbbbby = 220; float bbbbbby = 220; float cx = 100; float ccx = 200; float cccx = 300; float ccccx = 400; float cccccx = 500; float ccccccx = 600; float cy = 240; float ccy = 240; float cccy = 240; float ccccy = 240; float cccccy = 240; float ccccccy = 240; float dx = 100; float ddx = 200; float dddx = 300; float ddddx = 400; float dddddx = 500; float ddddddx = 600; float dy = 240; float ddy = 240; float dddy = 240; float ddddy = 240; float dddddy = 240; float ddddddy = 240; //circles float ex = 100; float eex = 200; float eeex = 300; float eeeex = 400; float eeeeex = 500; float eeeeeex = 600; float ey = 320; float eey = 320; float eeey = 320; float eeeey = 320; float eeeeey = 320; float eeeeeey = 320; float fx = 100; float ffx = 200; float fffx = 300; float ffffx = 400; float fffffx = 500; float ffffffx = 600; float fy = 420; float ffy = 420; float fffy = 420; float ffffy = 420; float fffffy = 420; float ffffffy = 420; //triangles float ix = 100; float iix = 250; float iiix = 400; float iiiix = 550; float iiiiix = 700; float iiiiiix = 850; float iy = 535; float iiy = 535; float iiiy = 535; float iiiiy = 535; float iiiiiy = 535; float iiiiiiy = 535; float jx = 100; float jjx = 250; float jjjx = 400; float jjjjx = 550; float jjjjjx = 700; float jjjjjjx = 850; float jy = 650; float jjy = 650; float jjjy = 650; float jjjjy = 650; float jjjjjy = 650; float jjjjjjy = 650; //trees float kx = 650; float kkx = 800; float kkkx = 950; float kkkkx = 1100; float kkkkkx = 700; float kkkkkkx = 850; float ky = 535; float kky = 535; float kkky = 535; float kkkky = 535; float kkkkky = 535; float kkkkkky = 535; float lx = 650; float llx = 800; float lllx = 950; float llllx = 1100; float lllllx = 700; float llllllx = 850; float ly = 650; float lly = 650; float llly = 650; float lllly = 650; float llllly = 650; float lllllly = 650; void setup() { size(800, 750); controlP5 = new ControlP5(this); // add a vertical slider controlP5.addSlider("narrow_thickness",0,25,6.6,350,40,100,10); controlP5.addSlider("edge",0,80,75,350,10,100,10); } void draw() { if (record) { println("start"); // beginRecord(PDF, "Line.pdf"); beginRecord(PDF, second()+"_"+minute()+"_"+hour()+"_"+day()+"_"+month()+"_"+year()+"_"+"GIK_Kit.pdf"); } // do all your drawing here smooth(); background(0); PFont font,ffont; // The font must be located in the sketch's // "data" directory to load successfully ffont = loadFont("ArialMT-9.vlw"); font = loadFont("Tahoma-16.vlw"); textFont(font); fill(255); text("FRACTAL-GIK-Kits Constructer Circle Special", 25, 30); text("Sheet Width=700, Height=630", 500,615); text("Press [r] to Save PDF", 500,635); noFill(); stroke(255); rect(25,80,700,630); //////////////////////////////////////////////////////////////////////////// // Circles textFont(ffont); // Shape-A-1 text("70.5", ex-10,ey); // 1/4 float ro = 70.5; float rop = PI * ro / 180; int zz; float ddd = 0; float dr =3; for (int z=0; z<5; z++){ if (z==4) {zz=0;} else {zz=z+1;} line(ex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge)),ey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge)),ex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge))-(edge/4)*cos(rop*z),ey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge))-(edge/4)*sin(rop*z)); line(ex+0.5*edge*cos(rop*z)-(edge/4)*cos(rop*z),ey+0.5*edge*sin(rop*z)-(edge/4)*sin(rop*z),ex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge))-(edge/4)*cos(rop*z),ey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge))-(edge/4)*sin(rop*z)); arc(ex,ey,edge,edge,rop*z+atan(narrow_thickness/edge),rop*(zz)-atan(narrow_thickness/edge)); if (zz!=0) {arc(ex,ey,edge/dr,edge/dr,rop*z+atan(narrow_thickness/edge) +ddd ,rop*(zz)-atan(narrow_thickness/edge) -ddd);} line(ex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge)),ey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge)),ex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*cos(rop*(zz)),ey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*sin(rop*(zz))); line(ex+0.5*edge*cos(rop*(zz))-(edge/4)*cos(rop*(zz)),ey+0.5*edge*sin(rop*(zz))-(edge/4)*sin(rop*(zz)),ex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*cos(rop*(zz)),ey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*sin(rop*(zz))); } // Shape-A-2 text("109.5", eex-10,eey); // 1/4 ro = 109.5; rop = PI * ro / 180; for (int z=0; z<4; z++){ if (z==3) {zz=0;} else {zz=z+1;} line(eex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge)),eey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge)),eex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge))-(edge/4)*cos(rop*z),eey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge))-(edge/4)*sin(rop*z)); line(eex+0.5*edge*cos(rop*z)-(edge/4)*cos(rop*z),eey+0.5*edge*sin(rop*z)-(edge/4)*sin(rop*z),eex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge))-(edge/4)*cos(rop*z),eey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge))-(edge/4)*sin(rop*z)); arc(eex,eey,edge,edge,rop*z+atan(narrow_thickness/edge),rop*(zz)-atan(narrow_thickness/edge)); if (zz>0) {arc(eex,eey,edge/dr,edge/dr,rop*z+atan(narrow_thickness/edge) +ddd,rop*(zz)-atan(narrow_thickness/edge) -ddd);} line(eex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge)),eey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge)),eex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*cos(rop*(zz)),eey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*sin(rop*(zz))); line(eex+0.5*edge*cos(rop*(zz))-(edge/4)*cos(rop*(zz)),eey+0.5*edge*sin(rop*(zz))-(edge/4)*sin(rop*(zz)),eex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*cos(rop*(zz)),eey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*sin(rop*(zz))); } // Shape-A-3 text("138.2", eeex-10,eeey); // 1/4 ro = 138.2; rop = PI * ro / 180; for (int z=0; z<3; z++){ if (z==2) {zz=0;} else {zz=z+1;} line(eeex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge)),eeey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge)),eeex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge))-(edge/4)*cos(rop*z),eeey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge))-(edge/4)*sin(rop*z)); line(eeex+0.5*edge*cos(rop*z)-(edge/4)*cos(rop*z),eeey+0.5*edge*sin(rop*z)-(edge/4)*sin(rop*z),eeex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge))-(edge/4)*cos(rop*z),eeey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge))-(edge/4)*sin(rop*z)); arc(eeex,eeey,edge,edge,rop*z+atan(narrow_thickness/edge),rop*(zz)-atan(narrow_thickness/edge)); if (zz>0) {arc(eeex,eeey,edge/dr,edge/dr,rop*z+atan(narrow_thickness/edge) +ddd,rop*(zz)-atan(narrow_thickness/edge)-ddd);} line(eeex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge)),eeey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge)),eeex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*cos(rop*(zz)),eeey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*sin(rop*(zz))); line(eeex+0.5*edge*cos(rop*(zz))-(edge/4)*cos(rop*(zz)),eeey+0.5*edge*sin(rop*(zz))-(edge/4)*sin(rop*(zz)),eeex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*cos(rop*(zz)),eeey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*sin(rop*(zz))); } // Shape-A-4 text("120.0", eeeex-10,eeeey); // 1/4 ro = 120.0; rop = PI * ro / 180; for (int z=0; z<3; z++){ if (z==2) {zz=0;} else {zz=z+1;} line(eeeex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge)),eeeey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge)),eeeex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge))-(edge/4)*cos(rop*z),eeeey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge))-(edge/4)*sin(rop*z)); line(eeeex+0.5*edge*cos(rop*z)-(edge/4)*cos(rop*z),eeeey+0.5*edge*sin(rop*z)-(edge/4)*sin(rop*z),eeeex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge))-(edge/4)*cos(rop*z),eeeey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge))-(edge/4)*sin(rop*z)); arc(eeeex,eeeey,edge,edge,rop*z+atan(narrow_thickness/edge),rop*(zz)-atan(narrow_thickness/edge)); if (zz>0) {arc(eeeex,eeeey,edge/dr,edge/dr,rop*z+atan(narrow_thickness/edge) +ddd ,rop*(zz)-atan(narrow_thickness/edge) -ddd);} line(eeeex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge)),eeeey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge)),eeeex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*cos(rop*(zz)),eeeey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*sin(rop*(zz))); line(eeeex+0.5*edge*cos(rop*(zz))-(edge/4)*cos(rop*(zz)),eeeey+0.5*edge*sin(rop*(zz))-(edge/4)*sin(rop*(zz)),eeeex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*cos(rop*(zz)),eeeey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*sin(rop*(zz))); } // Shape-A-5 text("90.0", eeeeex-10,eeeeey); // 1/4 ro = 90.0; rop = PI * ro / 180; for (int z=0; z<4; z++){ if (z==3) {zz=0;} else {zz=z+1;} line(eeeeex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge)),eeeeey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge)),eeeeex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge))-(edge/4)*cos(rop*z),eeeeey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge))-(edge/4)*sin(rop*z)); line(eeeeex+0.5*edge*cos(rop*z)-(edge/4)*cos(rop*z),eeeeey+0.5*edge*sin(rop*z)-(edge/4)*sin(rop*z),eeeeex+0.5*edge*cos(rop*z+atan(narrow_thickness/edge))-(edge/4)*cos(rop*z),eeeeey+0.5*edge*sin(rop*z+atan(narrow_thickness/edge))-(edge/4)*sin(rop*z)); arc(eeeeex,eeeeey,edge,edge,rop*z+atan(narrow_thickness/edge),rop*(zz)-atan(narrow_thickness/edge)); if (zz>0) {arc(eeeeex,eeeeey,edge/dr,edge/dr,rop*z+atan(narrow_thickness/edge) +ddd ,rop*(zz)-atan(narrow_thickness/edge) -ddd);} line(eeeeex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge)),eeeeey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge)),eeeeex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*cos(rop*(zz)),eeeeey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*sin(rop*(zz))); line(eeeeex+0.5*edge*cos(rop*(zz))-(edge/4)*cos(rop*(zz)),eeeeey+0.5*edge*sin(rop*(zz))-(edge/4)*sin(rop*(zz)),eeeeex+0.5*edge*cos(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*cos(rop*(zz)),eeeeey+0.5*edge*sin(rop*(zz)-atan(narrow_thickness/edge))-(edge/4)*sin(rop*(zz))); } //////////////////////////////////////////////////////////////////////////// if (record) { endRecord(); record = false; println("end"); } } void keyPressed() { // use a key press so that it doesn't make a million files if (key == 'r') record = true; }