// shape5a.java plot 3d data Utah Graphics to shape5a.dat shape5a.stl // javac -cp . shape5a.java // _ java -cp . shape5a > shape5a_java.out // 8 copies around dang = 2Pi/8 = Pi/4 45 degrees // arcs aang = Pi/32 import java.io.*; public class shape5a // only 2d lines first cut, z=0 { boolean debug = true; int pts, pt, np, j; int k = 0; // index into newpts k++ datread DR; // = new datread(filename); // defines data structures int new_points = 0; // for each x,y,z point kept int new_polys = 0; // k/4 for datwrite double xyz[][] = new double[10000][3]; // x, y, z for output int newpts[] = new int[40000]; // 2, xyz1, xyz2 for output String fileout = "shape5a.dat"; double Pi = Math.PI; double pxy[] = new double[2]; double xca[] = new double[9]; // rotated double yca[] = new double[9]; // rotated double pt1xa[] = new double[9]; // rotated double pt1ya[] = new double[9]; // rotated use double pt2xa[] = new double[9]; // rotated use double pt2ya[] = new double[9]; // rotated use public shape5a() { double xc, yc, r, ang1, ang2, rxc, ryc; double pt1x, pt1y, pt2x, pt2y, dx, dy; int ca0, ca1, ca2, ca3, ca4, ca5, ca6, ca7; // inner arcs System.out.println("shape5a.java running"); new_polys = 0; new_points = 0; System.out.println(" "); System.out.println("generate 8 copies of pattern, inside"); xc = 0.0; xca[0] = xc; yc = -10.0; yca[0] = yc; r = 4.1; pt1x = 4.0; pt1xa[0] = pt1x; pt1y = -10.0; pt1ya[0] = pt1y; pt2x = -4.0; pt2xa[0] = pt2x; pt2y = -10.0; pt2ya[0] = pt2y; for(int i=1; i<9; i++) { rotate(xca[i-1],yca[i-1],pxy); xca[i] = pxy[0]; yca[i] = pxy[1]; rotate(pt1xa[i-1],pt1ya[i-1],pxy); pt1xa[i] = pxy[0]; pt1ya[i] = pxy[1]; rotate(pt2xa[i-1],pt2ya[i-1],pxy); pt2xa[i] = pxy[0]; pt2ya[i] = pxy[1]; } // end i for(int i=0; i<9; i++) { System.out.println("i="+i+" xc="+xca[i]+" yc="+yca[i]); } // end i System.out.println(" "); for(int i=0; i<9; i++) { System.out.println("i="+i+" pt1x="+pt1xa[i]+" pt1y="+pt1ya[i]); } // end i System.out.println(" "); for(int i=0; i<9; i++) { System.out.println("i="+i+" pt2x="+pt2xa[i]+" pt2y="+pt2ya[i]); } // end i System.out.println(" "); // a System.out.println("a "); for(int i=0; i<8; i++) { arc(xca[i], yca[i], r, pt1xa[i], pt1ya[i], pt2xa[i], pt2ya[i]); } // end i System.out.println(" "); System.out.println("generate 8 copies of pattern, inside 2"); xc = 0.0; xca[0] = xc; yc = -10.0; yca[0] = yc; r = 4.6; pt1x = 5.0; pt1xa[0] = pt1x; pt1y = -11.0; pt1ya[0] = pt1y; pt2x = -5.0; pt2xa[0] = pt2x; pt2y = -11.0; pt2ya[0] = pt2y; for(int i=1; i<8; i++) { rotate(xca[i-1],yca[i-1],pxy); xca[i] = pxy[0]; yca[i] = pxy[1]; rotate(pt1xa[i-1],pt1ya[i-1],pxy); pt1xa[i] = pxy[0]; pt1ya[i] = pxy[1]; rotate(pt2xa[i-1],pt2ya[i-1],pxy); pt2xa[i] = pxy[0]; pt2ya[i] = pxy[1]; } // end i // a2 System.out.println("a 2 "); for(int i=0; i<8; i++) { arc(xca[i], yca[i], r, pt1xa[i], pt1ya[i], pt2xa[i], pt2ya[i]); } // end i System.out.println("generate 8 copies of pattern, outside"); xc = 4.0; xca[0] = xc; yc = -10.0; yca[0] = yc; r = 4.5; pt1x = 0.0; pt1xa[0] = pt1x; pt1y = -8.0; pt1ya[0] = pt1y; pt2x = 5.7; pt2xa[0] = pt2x; pt2y = -5.7; pt2ya[0] = pt2y; for(int i=1; i<8; i++) { rotate(xca[i-1],yca[i-1],pxy); xca[i] = pxy[0]; yca[i] = pxy[1]; rotate(pt1xa[i-1],pt1ya[i-1],pxy); pt1xa[i] = pxy[0]; pt1ya[i] = pxy[1]; rotate(pt2xa[i-1],pt2ya[i-1],pxy); pt2xa[i] = pxy[0]; pt2ya[i] = pxy[1]; } // end i // b System.out.println("a "); for(int i=0; i<8; i++) { arc(xca[i], yca[i], r, pt1xa[i], pt1ya[i], pt2xa[i], pt2ya[i]); } // end i System.out.println("generate 8 copies of pattern, outside 2"); xc = 4.0; xca[0] = xc; yc = -10.0; yca[0] = yc; r = 5.0; pt1x = 0.0; pt1xa[0] = pt1x; pt1y = -7.3; pt1ya[0] = pt1y; pt2x = 4.9; pt2xa[0] = pt2x; pt2y = -4.9; pt2ya[0] = pt2y; for(int i=1; i<8; i++) { rotate(xca[i-1],yca[i-1],pxy); xca[i] = pxy[0]; yca[i] = pxy[1]; rotate(pt1xa[i-1],pt1ya[i-1],pxy); pt1xa[i] = pxy[0]; pt1ya[i] = pxy[1]; rotate(pt2xa[i-1],pt2ya[i-1],pxy); pt2xa[i] = pxy[0]; pt2ya[i] = pxy[1]; } // end i // b 2 System.out.println("a "); for(int i=0; i<8; i++) { arc(xca[i], yca[i], r, pt1xa[i], pt1ya[i], pt2xa[i], pt2ya[i]); } // end i System.out.println(" "); System.out.println("new_points="+new_points+" np="+np); new_polys = k/3; System.out.println("new_polys="+new_polys); new datwrite(fileout, xyz, new_points, newpts, new_polys); System.out.println("shape5a.java finished"); } // shape5a constructor void arc(double xc, double yc, double r, double pt1x, double pt1y, double pt2x, double pt2y) { int n = 16; double ang1, ang2, dx, dy; double dang; double ang; double x, y, z; System.out.println("arc "); System.out.println("xc="+xc+" yc="+yc+" r="+r); System.out.println("pt1x="+pt1x+" pt1y="+pt1y); dx = pt1x-xc; dy = pt1y-yc; System.out.println("dx="+dx+" dy="+dy); ang1 = Math.atan2(dy,dx); System.out.println("ang1="+ang1+" deg="+(180.0*ang1/Pi)); System.out.println("pt2x="+pt2x+" pt2y="+pt2y); dx = pt2x-xc; dy = pt2y-yc; System.out.println("dx="+dx+" dy="+dy); ang2 = Math.atan2(dy,dx); System.out.println("ang2="+ang2+" deg="+(180.0*ang2/Pi)); ang = ang1; if(ang1>ang2) { ang2 = ang2 + 2.0*Pi; } dang = (ang2-ang1)/(double)(n-1); for(int i=0; i