package org.jzy3d.plot3d.builder.delaunay;
import il.ac.idc.jdt.DelaunayTriangulation;
import il.ac.idc.jdt.Triangle;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.plot3d.builder.Tessellator;
import org.jzy3d.plot3d.primitives.AbstractComposite;
import org.jzy3d.plot3d.primitives.Polygon;
import org.jzy3d.plot3d.primitives.Shape;
public class DelaunayTessellator extends Tessellator{
@Override
public AbstractComposite build(List coordinates) {
Shape s = new Shape();
s.add(computePolygons(coordinates));
return s;
}
protected List computePolygons(List coordinates) {
// Append all input Jzy3d coordinates in JDT triangulator
DelaunayTriangulation triangulator = new DelaunayTriangulation();
for (Coord3d coord: coordinates) {
triangulator.insertPoint(JDTConverter.toJdtPoint(coord));
}
// Retrieve triangles computed by JDT
List polygons = new ArrayList(triangulator.trianglesSize());
Iterator it = triangulator.trianglesIterator();
while (it.hasNext()) {
Triangle triangle = it.next();
// isHalfplane indicates a degenerated triangle
if (triangle.isHalfplane())
continue;
polygons.add(JDTConverter.toJzyPolygon(triangle));
}
return polygons;
}
@Override
public AbstractComposite build(float[] x, float[] y, float[] z) {
throw new RuntimeException("not called");
}
}
Ads help maintain this website.