diff --git a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/AproxSymmetryPlane.java b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/ApproxSymmetryPlane.java similarity index 61% rename from Comparison/src/main/java/cz/fidentis/analyst/symmetry/AproxSymmetryPlane.java rename to Comparison/src/main/java/cz/fidentis/analyst/symmetry/ApproxSymmetryPlane.java index 6ddae7b0d4dcbd1e3e1bdfefb2495105dc732ed2..4ed9303a805ced8ca6dd089b3c274efcc794b285 100644 --- a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/AproxSymmetryPlane.java +++ b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/ApproxSymmetryPlane.java @@ -1,31 +1,33 @@ package cz.fidentis.analyst.symmetry; /** - * - * @author Natália Bebjaková * * Respresents plane with added atribute - votes, that play role * in decision about symmetry estimate of the 3D model + * + * @author Natalia Bebjakova + * */ -public class AproxSymmetryPlane extends Plane implements Comparable<AproxSymmetryPlane> { - public Integer votes; +public class ApproxSymmetryPlane extends Plane implements Comparable<ApproxSymmetryPlane> { + public int votes; /** * returns number of votes that were given to plane while computing the symmetry * * @return Number of votes */ - public Integer getVotes() { + public int getVotes() { return votes; } /** - * + * Constructor. * @param plane Original plane without votes * @param votes number of votes given to the plane + * @throws IllegalArgumentExpcption if the @code{plane} argument is null */ - public AproxSymmetryPlane(Plane plane, int votes) { - super(plane.a, plane.b, plane.c, plane.d); + public ApproxSymmetryPlane(Plane plane, int votes) { + super(plane); this.votes = votes; } @@ -36,7 +38,7 @@ public class AproxSymmetryPlane extends Plane implements Comparable<AproxSymmetr * @return number that decides which plane has more votes */ @Override - public int compareTo(AproxSymmetryPlane other) { - return this.votes.compareTo(other.votes); + public int compareTo(ApproxSymmetryPlane other) { + return Integer.compare(votes, other.votes); } } diff --git a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/Plane.java b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/Plane.java index 4c099e46e72d463823337bcdf66de84d8fd6eb1b..c1f5484a390542d1834524340e8a5e336d1ea72a 100644 --- a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/Plane.java +++ b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/Plane.java @@ -27,6 +27,21 @@ public class Plane { this.d = d; } + /** + * Copy constructor. + * @param plane original plane + * @throws IllegalArgumentExpcption if the @code{plane} argument is null + */ + public Plane(Plane plane) { + if (plane == null) { + throw new IllegalArgumentException(); + } + a = plane.a; + b = plane.b; + c = plane.c; + d = plane.d; + } + /** * Normalize the plane */ diff --git a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java index d10271643e108cbc5e4e94bdba4adc9ea9e428df..36d2faf796691e7bdb8e06ccfe28c4e57c03215f 100644 --- a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java +++ b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java @@ -122,7 +122,7 @@ public class SymmetryEstimator { UIManager.put("ProgressMonitor.progressText", "Counting symmetry..."); - ArrayList<AproxSymmetryPlane> planes = new ArrayList<>(); + ArrayList<ApproxSymmetryPlane> planes = new ArrayList<>(); //List<Vector3d> normals = calculateNormals(); if (!facet.hasVertexNormals()) { facet.calculateVertexNormals(); @@ -209,7 +209,7 @@ public class SymmetryEstimator { config.getMinNormAngleCos(), boundingBox.getMaxDiag() * config.getMaxRelDistance()); - planes.add(new AproxSymmetryPlane(newPlane, currentVotes)); + planes.add(new ApproxSymmetryPlane(newPlane, currentVotes)); if (currentVotes > lastVotes) { lastVotes = currentVotes; @@ -225,7 +225,7 @@ public class SymmetryEstimator { } Collections.sort(planes); - ArrayList<AproxSymmetryPlane> finalPlanes = new ArrayList<>(); + ArrayList<ApproxSymmetryPlane> finalPlanes = new ArrayList<>(); for (int i = 0; i < planes.size(); i++) { if (planes.get(i).votes == lastVotes){ finalPlanes.add(planes.get(i));