// shape6.java plot 3d data Utah Graphics to shape6.dat shape6.stl // javac -cp . shape6.java // _ java -cp . shape6 > shape6_java.out // 6 copies around dang = 2Pi/6 = Pi/3 60 degrees import java.io.*; public class shape6 // 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 = "shape6.dat"; double Pi = Math.PI; double ang = 0.0; double pang[] = new double[9]; double pxy[] = new double[2]; double xca[][] = new double[6][13]; // rotated double yca[][] = new double[6][13]; // rotated double ptx[][] = new double[6][13]; double pty[][] = new double[6][13]; double ptr[][] = new double[6][13]; double pta[][] = new double[6][13]; public shape6() { 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("shape6.java running"); new_polys = 0; new_points = 0; pang[0] = 0.0; // angle going up from 0 pang[1] = Pi/48.0; pang[2] = Pi/24.0; pang[3] = 3.0*Pi/48.0; pang[4] = Pi/12.0; pang[5] = 5.0*Pi/48.0; pang[6] = Pi/8.0; pang[7] = 7.0*Pi/48.0; pang[8] = Pi/6.0; System.out.println(" "); System.out.println("generate 13 points of pattern, outside"); ptr[0][0] = 4.0; pta[0][0] = -pang[8]; ptr[0][1] = 4.0; pta[0][1] = -pang[3]; ptr[0][2] = 5.0; pta[0][2] = -pang[2]; ptr[0][3] = 6.5; pta[0][3] = -pang[6]; ptr[0][4] = 7.2; pta[0][4] = -pang[5]; ptr[0][5] = 7.0; pta[0][5] = -pang[2]; ptr[0][6] = 8.0; pta[0][6] = pang[0]; ptr[0][7] = 7.0; pta[0][7] = pang[2]; ptr[0][8] = 7.2; pta[0][8] = pang[5]; ptr[0][9] = 6.5; pta[0][9] = pang[6]; ptr[0][10] = 5.0; pta[0][10] = pang[2]; ptr[0][11] = 4.0; pta[0][11] = pang[3]; ptr[0][12] = 4.0; pta[0][12] = pang[8]; for(int i=0; i<13; i++) { ptx[0][i] = ptr[0][i]*Math.cos(pta[0][i]); pty[0][i] = ptr[0][i]*Math.sin(pta[0][i]); xyz[i][0] = ptx[0][i]; xyz[i][1] = pty[0][i]; xyz[i][2] = 0.0; new_points = new_points+1; System.out.println("pt"+new_points+" x="+ptx[0][i]+" y="+pty[0][i]); } // end i System.out.println(" "); System.out.println("13 points generated, outside"); System.out.println(" "); System.out.println("make 5 copies cycled "); for(int j=1; j<6; j++) { System.out.println("j="+j+" new_points="+new_points); for(int i=0; i<13; i++) { ptr[j][i] = ptr[j-1][i]; pta[j][i] = pta[j-1][i]+Pi/3.0; ptx[j][i] = ptr[j][i]*Math.cos(pta[j][i]); pty[j][i] = ptr[j][i]*Math.sin(pta[j][i]); xyz[new_points][0] = ptx[j][i]; xyz[new_points][1] = pty[j][i]; xyz[new_points][2] = 0.0; new_points = new_points+1; System.out.println("pt"+new_points+" x="+ptx[0][i]+" y="+pty[0][i]); } // end i } // end j System.out.println(" "); System.out.println("5 rotations generated, outside"); System.out.println(" "); System.out.println("connect lines "); for(int i=1; i<6*13; i++) { newpts[k++] = 2; newpts[k++] = i; newpts[k++] = i+1; } // end i System.out.println(" "); System.out.println("outside lines connected "); System.out.println(" "); System.out.println("generate inside points "); r = 2.0; ang = 0.0; pt = new_points; for(int i=0; i<12; i++) { xyz[new_points][0] = r*Math.cos(ang); xyz[new_points][1] = r*Math.sin(ang); xyz[new_points][2] = 0.0; new_points = new_points+1; System.out.println("pt"+new_points+" x="+ptx[0][i]+" y="+pty[0][i]); ang = ang + Pi/6.0; } // end i System.out.println("inside points generated "); System.out.println(" "); System.out.println("generate inside lines "); for(int i=1; i<12; i++) { newpts[k++] = 2; newpts[k++] = pt+i; newpts[k++] = pt+i+1; } // end i newpts[k++] = 2; // close inside newpts[k++] = newpts[k-3]; newpts[k++] = pt+1; System.out.println("inside lines generated "); System.out.println(" "); new_polys = k/3; System.out.println("new_polys="+new_polys); new datwrite(fileout, xyz, new_points, newpts, new_polys); System.out.println("shape6.java finished"); } // shape6 constructor public static void main(String[] args) { new shape6(); // writes shape6.dat } } // end class shape6.java