Loading Rendering/src/main/java/cz/fidentis/analyst/drawables/DrawableInteractiveMask.java +60 −2 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package cz.fidentis.analyst.drawables; import com.jogamp.opengl.GL2; import com.jogamp.opengl.glu.GLU; import com.jogamp.opengl.glu.GLUquadric; import cz.fidentis.analyst.data.shapes.Box; import cz.fidentis.analyst.data.shapes.CrossSection3D; import cz.fidentis.analyst.data.shapes.Cylinder; import cz.fidentis.analyst.data.shapes.Plane; Loading @@ -14,6 +15,9 @@ import java.awt.Color; import java.util.ArrayList; import java.util.List; import static java.lang.Double.max; import static java.lang.Double.min; /** * Drawable interactive mask drawn as points connected by lines. Loading Loading @@ -143,4 +147,58 @@ public class DrawableInteractiveMask extends Drawable { } return cylinders; } /** * legacy expression determining if point is within bounding box * @param point point to check * @param box box to check * @return true if outside else false */ protected static boolean isPointOutsideBox(Point3d point, Box box) { return point.x < box.minPoint().x || point.y < box.minPoint().y || point.z < box.minPoint().z || point.x > box.maxPoint().x || point.y > box.maxPoint().y || point.z > box.maxPoint().z; } /** * Legacy code to get bounding boxes for lines between points * @return list of boxes for neighbouring points */ protected List<Box> getBoxes() { List<Box> boxes = new ArrayList<>(); for (int i = 0; i < mask.getPoints().size() - 1; i++) { var p1 = mask.getPoints().get(i); var p2 = mask.getPoints().get(i + 1); Box box = new Box( new Point3d(min(p1.getPosition().x, p2.getPosition().x), min(p1.getPosition().y, p2.getPosition().y), min(p1.getPosition().z, p2.getPosition().z)), new Point3d(max(p1.getPosition().x, p2.getPosition().x), max(p1.getPosition().y, p2.getPosition().y), max(p1.getPosition().z, p2.getPosition().z)) ); boxes.add(box); } if (mask.getPoints().size() >= 3 ) { var p1 = mask.getPoints().get(mask.getPoints().size() - 1).getPosition(); var p2 = mask.getPoints().get(0).getPosition(); new Box( new Point3d(min(p1.x, p2.x), min(p1.y, p2.y), min(p1.z, p2.z)), new Point3d(max(p1.x, p2.x), max(p1.y, p2.y), max(p1.z, p2.z)) ); boxes.add(new Box( new Point3d(min(p1.x, p2.x), min(p1.y, p2.y), min(p1.z, p2.z)), new Point3d(max(p1.x, p2.x), max(p1.y, p2.y), max(p1.z, p2.z)) )); } return boxes; } } Loading
Rendering/src/main/java/cz/fidentis/analyst/drawables/DrawableInteractiveMask.java +60 −2 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package cz.fidentis.analyst.drawables; import com.jogamp.opengl.GL2; import com.jogamp.opengl.glu.GLU; import com.jogamp.opengl.glu.GLUquadric; import cz.fidentis.analyst.data.shapes.Box; import cz.fidentis.analyst.data.shapes.CrossSection3D; import cz.fidentis.analyst.data.shapes.Cylinder; import cz.fidentis.analyst.data.shapes.Plane; Loading @@ -14,6 +15,9 @@ import java.awt.Color; import java.util.ArrayList; import java.util.List; import static java.lang.Double.max; import static java.lang.Double.min; /** * Drawable interactive mask drawn as points connected by lines. Loading Loading @@ -143,4 +147,58 @@ public class DrawableInteractiveMask extends Drawable { } return cylinders; } /** * legacy expression determining if point is within bounding box * @param point point to check * @param box box to check * @return true if outside else false */ protected static boolean isPointOutsideBox(Point3d point, Box box) { return point.x < box.minPoint().x || point.y < box.minPoint().y || point.z < box.minPoint().z || point.x > box.maxPoint().x || point.y > box.maxPoint().y || point.z > box.maxPoint().z; } /** * Legacy code to get bounding boxes for lines between points * @return list of boxes for neighbouring points */ protected List<Box> getBoxes() { List<Box> boxes = new ArrayList<>(); for (int i = 0; i < mask.getPoints().size() - 1; i++) { var p1 = mask.getPoints().get(i); var p2 = mask.getPoints().get(i + 1); Box box = new Box( new Point3d(min(p1.getPosition().x, p2.getPosition().x), min(p1.getPosition().y, p2.getPosition().y), min(p1.getPosition().z, p2.getPosition().z)), new Point3d(max(p1.getPosition().x, p2.getPosition().x), max(p1.getPosition().y, p2.getPosition().y), max(p1.getPosition().z, p2.getPosition().z)) ); boxes.add(box); } if (mask.getPoints().size() >= 3 ) { var p1 = mask.getPoints().get(mask.getPoints().size() - 1).getPosition(); var p2 = mask.getPoints().get(0).getPosition(); new Box( new Point3d(min(p1.x, p2.x), min(p1.y, p2.y), min(p1.z, p2.z)), new Point3d(max(p1.x, p2.x), max(p1.y, p2.y), max(p1.z, p2.z)) ); boxes.add(new Box( new Point3d(min(p1.x, p2.x), min(p1.y, p2.y), min(p1.z, p2.z)), new Point3d(max(p1.x, p2.x), max(p1.y, p2.y), max(p1.z, p2.z)) )); } return boxes; } }