class Dpf{ static Point3f dpf_1d_array[]; static MyTransformGroup dpf_tg = null; Point3f vertex0; Point3f vertex1; Point3f vertex2; Point3f middle; float line_length; static void readDpf(Vector<Point3f> dpf){ Parameters.depth_shift = Parameters.pm_radius*5.0f; Parameters.bottom = Parameters.pm_radius*5.0f; try{ FileReader fr = new FileReader(Parameters.dpf_filename); BufferedReader br = new BufferedReader(fr); float v0[] = new float[3]; float v1[] = new float[3]; float v2[] = new float[3]; float n[] = new float[3]; String s; System.out.println("DPFデータ読み込み開始"); while((s = br.readLine()) != null) { StringTokenizer st = new StringTokenizer(s, ", \t", false); if(Dpf.read("normal", n, st)) continue; s = br.readLine(); s = br.readLine(); st = new StringTokenizer(s, ", \t", false); Dpf.read("vertex", v0, st); s = br.readLine(); st = new StringTokenizer(s, ", \t", false); Dpf.read("vertex", v1, st); s = br.readLine(); st = new StringTokenizer(s, ", \t", false); Dpf.read("vertex", v2, st); if(v0[0] <Parameters.border & v1[0] < Parameters.border & v2[0] < Parameters.border & v0[2] < Parameters.border & v1[2] < Parameters.border & v2[2] < Parameters.border) {
Parameters.size_x) Parameters.size_x = max; if((max = Math.max(v0[1], Math.max(v1[1], v2[1]))) > Parameters.size_y) Parameters.size_y = max + Parameters.bottom; if((max = Math.max(v0[2], Math.max(v1[2], v2[2]))) > Parameters.size_z) Parameters.size_z = max; System.out.println(dpf.size()); } } } catch(IOException e){} System.out.println("DPFデータ読み込み完了、サイズ:(" + Math.round(Parameters.size_x) + "," + Math.round(Parameters.size_y) + "," + Math.round(Parameters.size_z) + ")"); Parameters.setbox_num(dpf); } static void init_dpf(){ //質感(色)の設定 Material mat=new Material(); //DPFポリゴン Vector<Point3f> dpf = new Vector<Point3f>(0); //ポリゴンデータ読み込み Dpf.readDpf(dpf); Dpf.dpf_1d_array = new Point3f[Parameters.dpf_poly_num*3]; dpf.copyInto(Dpf.dpf_1d_array); dpf = null; mat.setDiffuseColor(new Color3f(0.0f,1.0f,0.0f)); // DPFポリゴン集合体の生成 MyTriPolygons polygon=new MyTriPolygons(Dpf.dpf_1d_array ,mat,null, MyTriPolygons.RENDERING_ALL); //基準座標系の設定(DPF基準) Dpf.dpf_tg = new MyTransformGroup(); // ポリゴン集合体を基準座標に設定 Dpf.dpf_tg.addChild(polygon); } public Dpf(Point3f v0, Point3f v1, Point3f v2) { this.vertex0 = v0; this.vertex1 = v1; this.vertex2 = v2; this.middle = new Point3f((v0.x + v1.x + v2.x)/3.0f, (v0.y + v1.y + v2.y)/3.0f, (v0.z + v1.z + v2.z)/3.0f); this.line_length = vertex0.distance(middle) + vertex1.distance(middle) + vertex2.distance(middle) + Parameters.pm_radius; } static void set_dpf_array(Point3f vertex[]){ PMSimulator.culcarray = new CulcBox[Parameters.xbox_num][Parameters.ybox_num][Parameters.zbox_num]; for(int i = 0; i <Parameters.xbox_num; i++)