import processing.opengl.*; import anar.*; /* * Example for Anar library by Guillaume LaBelle + Julien Nembrini * http://anar.ch */ Anar goo; CSpline bsp; Param pv; String cadSoftware, ext; boolean record = false; void setup(){ size(800,400,OPENGL); frameRate(200); Anar.init(this); Anar.drawAxis(true); initShape(); Pts.globalRender = new RenderPtsAll(); Pt.globalRender = new RenderPtShapeOriented(new AColor(100),new AColor(255,0,0,150),Anar.scene); Anar.bsplineRes(20); } void initShape(){ Pts baseLine = new Pts(); baseLine.add(Anar.Pt( -50,0,0)); baseLine.add(Anar.Pt(0,50,50)); baseLine.add(Anar.Pt(50,0,0)); // baseLine.add(Anar.Pt(-150,-60,40)); for (int i = 0; i<1000; i++) baseLine.add(Anar.Pt(Anar.rnd( -50,50),Anar.rnd( -50,50),Anar.rnd( -50,50))); pv = new Param(1/.3f); bsp = new CSpline(baseLine,pv); bsp.closedMode = true; bsp.mode = CSpline.NEXT; // obj.add(bsp); // prnt(bsp.parentList()); Anar.camTarget(baseLine); } void draw(){ background(190); if(record) beginRaw("superCAD."+cadSoftware,"output."+ext); // baseLine.draw(); bsp.draw(); if(record){ endRaw(); record = false; } if(key=='k'){ pv.set(mouseX/(float)width/2f); CSpline.globalRender.splineRes.set(mouseY/(float)height*60+1); } } private boolean drawConstruction = true; void keyPressed(){ switch(key){ case ' ': if(drawConstruction) drawConstruction = false; else drawConstruction = true; break; case 'r': cadSoftware = "Rhino"; ext = "rvb"; break; case 's': cadSoftware = "SketchUP"; ext = "rb"; break; case 'a': cadSoftware = "AutoLISP"; ext = "lsp"; break; case 'p': cadSoftware = "PovRAY"; ext = "pov"; break; } record = true; } void prnt(Object s){ super.println(s); super.println("-----------------------------"); }