Beispiel #1
0
 public MeshViewer(String title, ArrayList<Triangle> triangles, boolean culling) {
   super(title);
   enableCullling = culling;
   this.setSize(640, 480);
   ArrayList<PointND> edgePoints = new ArrayList<PointND>();
   for (Triangle t : triangles) {
     edgePoints.add(t.getA());
     edgePoints.add(t.getB());
     edgePoints.add(t.getC());
   }
   PointND center = DoublePrecisionPointUtil.getGeometricCenter(edgePoints);
   Translation translation = new Translation(center.getAbstractVector().negated());
   double max = 0;
   for (PointND p : edgePoints) {
     p.applyTransform(translation);
     for (int i = 0; i < 3; i++) {
       if (Math.abs(p.get(i)) > max) {
         max = Math.abs(p.get(i));
       }
     }
   }
   AffineTransform affineTransform =
       new AffineTransform(SimpleMatrix.I_3.dividedBy(max / 1.0), new SimpleVector(0, 0, 0));
   for (Triangle t : triangles) {
     t.applyTransform(translation);
     t.applyTransform(affineTransform);
   }
   this.triangles = triangles;
 }