boolean showLabels=false; // changed through menu-toggles to animate and show/hide disk numbers boolean track=false; // whether visibility tracking is on boolean printIt=false; // temporarily set when key '?' is pressed and used to print some debugging values boolean showDisks=true; // toggles showing disks boolean showRays=true; // toggles showing visible rays boolean showMesh=false; // toggles showing delaunay mesh boolean showDual=false; // toggles showing dual boolean showVertexIds=true, showVertices=true; RAY myRay = new RAY(); // rayfrom view point (can be dragged) void myActions() { // actions to be executed at each frame // edit and show polyloop // if ((mousePressed)&&(keyPressed)) dragPolygon(); // stroke(cyan); fill(grey); drawPolygon(loopIsClosed); noFill(); // if (showVertices) {stroke(orange); fill(white); showPoints(3); noFill(); }; // if (showVertexIds) {fill(dblue); drawPointIDs(); noFill(); }; if ((mousePressed)&&(keyPressed)&&(key=='c')&&mouseIsInWindow()) {P[p].moveWithMouse(); }; // moves selected point (index p) by amount mouse moved recently if (keyPressed&&(key=='d')) distribute(); // distribute disks if(showMesh) { fill(yellow); noStroke(); M.showShrunkTriangles();noFill(); } if(showDisks) {noStroke(); showDisks(); } else { noStroke(); for (int i=0; i=0) {stroke(dmagenta); showVisibleRayPortion(leftTangentToCircle(myRay.Q,P[j],R[j])); showVisibleRayPortion(rightTangentToCircle(myRay.Q,P[j],R[j]));}; strokeWeight(1); };