Commit 5b6135ad authored by Mario Chromik's avatar Mario Chromik
Browse files

adding legacy bounding box for clipping lines between points of mask

parent 368ee28f
Loading
Loading
Loading
Loading
+60 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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.
@@ -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;
    }
}