void build() { filename = "my_tile2.svg"; shp = RG.loadShape(path + filename); shp = RG.centerIn(shp, g, 100); UVertexList vl, vl2; vl = new UVertexList(); for (int i = 0; i < 5; i++) vl.add(i, 0); vl.close(); vl.insert(2, vl.get(1)); println(UMB.str(vl.removeDuplID())); println(vl.str()); // We decided the separation between the polygon points dependent of the mouseX float pointSeparation = map(constrain(mouseX, 100, width - 100), 100, width - 100, 4, 20); // We create the polygonized version RG.setPolygonizer(RG.UNIFORMLENGTH); RG.setPolygonizerLength(pointSeparation); polyshp = RG.polygonize(shp); poly = polyshp.toPolygon(); ArrayList<UVertexList> cont = UGeomerative.fromRContour(poly.contours); println("contours " + cont.size()); // for(UVertexList tmp:cont) { // tmp.removeDupl(true); //// println("isClockwise "+tmp.isClockwise()); // } // PGraphicsPDF pdf=(PGraphicsPDF)createGraphics(1000,1000,PDF,path+"test1.pdf"); // UMB.setGraphics(pdf); // pdf.beginDraw(); // pdf.translate(500,500); // pdf.stroke(0); // geo.draw(); // pdf.endDraw(); // pdf.flush(); // pdf.dispose(); geo2 = UPoly2Tri.triangulate(cont); geo = geo2.copy(); geo.extrudeSelf(50, true); // geo.removeDuplV().regenerateFaceData(); geo.writeSTL(path + "test1.stl"); }
public void setup() { size(600, 600, OPENGL); smooth(); UMB.setPApplet(this); nav = new UNav3D(); // VERY IMPORTANT: Allways initialize the library before using it RG.init(this); if (geo == null) build(); }
// ----------------SETUP--------------------------------- public void setup() { size(1200, 800); background(0); smooth(); RG.init(this); font = new RFont("FreeSans.ttf", 200, CENTER); currentDigit = DIGIT_MAX - 1; String digit; for (int i = 0; i < DIGIT_MAX; i++) { digit = String.valueOf(i); if (i == 0) { digits.add(new AgentText(digit, font)); } else if (i == 1) { digits.add(new MotionText(digit, font)); } else if (i == 2) { digits.add(new JitterText(digit, font)); } else if (i == 3) { digits.add(new SmoothJitterText(digit, font)); } } }