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 6e4243b00667a7ea82338544d348974d72639298..3237797a9041493bf2696089aa2e1c237b827f94 100644 --- a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/Plane.java +++ b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/Plane.java @@ -1,6 +1,7 @@ package cz.fidentis.analyst.symmetry; import cz.fidentis.analyst.mesh.core.MeshFacet; +import cz.fidentis.analyst.mesh.core.MeshFacetImpl; import cz.fidentis.analyst.mesh.core.MeshPoint; import cz.fidentis.analyst.mesh.core.MeshPointImpl; @@ -54,7 +55,7 @@ public class Plane { * @return plane represented as mesh */ public static SymmetryEstimator createPlaneMesh(MeshPoint centroid, MeshPoint a, MeshPoint b, double scale) { - facet = new MeshFacet(); + facet = new MeshFacetImpl(); SymmetryEstimator planeMesh = new SymmetryEstimator(facet, Config.getDefault()); MeshPoint[] points = new MeshPoint[4]; diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java index 3e225c924fc77b29688773d28d320e743334b0f5..9f662046f797f973043a7f0813abb2967e78fc1d 100644 --- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java +++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java @@ -1,80 +1,47 @@ -package cz.fidentis.analyst.mesh.core; - -import java.util.ArrayList; -import java.util.List; - -/** - * MashFacet - * - * @author Matej Lukes - */ -public class MeshFacet { - private List<MeshPoint> vertices = new ArrayList<>(); - private CornerTable cornerTable; - - /** - * Constructor of MeshFacet - */ - public MeshFacet() { - cornerTable = new CornerTable(); - } - - /** - * Copy constructor of MeshFacet - * - * @param facet copied MeshFacet - */ - public MeshFacet(MeshFacet facet) { - for (MeshPoint vertex: facet.vertices) { - vertices.add(new MeshPointImpl(vertex)); - } - cornerTable = new CornerTable(facet.cornerTable); - } - - /** - * returns vertex of specified index - * - * @param index index of vertex - * @return vertex - */ - public MeshPoint getVertex(int index) { - return vertices.get(index); - } - - /** - * adds vertex to MeshFacet - * - * @param point new vertex - */ - public void addVertex(MeshPoint point) { - vertices.add(point); - } - - /** - * returns number of vertices in MeshFacet - * - * @return number of vertices - */ - public int getNumberOfVertices() { - return vertices.size(); - } - - /** - * returns list of vertices in MeshFacet - * - * @return list if vertices - */ - public List<MeshPoint> getVertices() { - return vertices; - } - - /** - * returns Corner Table representing MeshFacet - * - * @return corner table - */ - public CornerTable getCornerTable() { - return cornerTable; - } -} - +package cz.fidentis.analyst.mesh.core; + +import java.util.List; + +/** + * An ancapsulated mesh plate (with shared vertices). + * + * @author Matej Lukes + */ +public interface MeshFacet { + + /** + * returns vertex of specified index + * + * @param index index of vertex + * @return vertex + */ + MeshPoint getVertex(int index); + + /** + * adds vertex to MeshFacet + * + * @param point new vertex + */ + void addVertex(MeshPoint point); + + /** + * returns number of vertices in MeshFacet + * + * @return number of vertices + */ + int getNumberOfVertices(); + + /** + * returns list of vertices in MeshFacet + * + * @return list if vertices + */ + List<MeshPoint> getVertices(); + + /** + * returns Corner Table representing MeshFacet + * + * @return corner table + */ + CornerTable getCornerTable(); +} diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacetImpl.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacetImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..301548ec198e9e64b5b827d09fa2f604b5a56880 --- /dev/null +++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacetImpl.java @@ -0,0 +1,60 @@ +package cz.fidentis.analyst.mesh.core; + +import java.util.ArrayList; +import java.util.List; + +/** + * MashFacet + * + * @author Matej Lukes + */ +public class MeshFacetImpl implements MeshFacet { + + private List<MeshPoint> vertices = new ArrayList<>(); + private CornerTable cornerTable; + + /** + * Constructor of MeshFacet + */ + public MeshFacetImpl() { + cornerTable = new CornerTable(); + } + + /** + * Copy constructor of MeshFacet + * + * @param facet copied MeshFacet + */ + public MeshFacetImpl(MeshFacet facet) { + for (MeshPoint vertex: facet.getVertices()) { + vertices.add(new MeshPointImpl(vertex)); + } + cornerTable = new CornerTable(facet.getCornerTable()); + } + + @Override + public MeshPoint getVertex(int index) { + return vertices.get(index); + } + + @Override + public void addVertex(MeshPoint point) { + vertices.add(point); + } + + @Override + public int getNumberOfVertices() { + return vertices.size(); + } + + @Override + public List<MeshPoint> getVertices() { + return vertices; + } + + @Override + public CornerTable getCornerTable() { + return cornerTable; + } +} + diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java index 1f22bb850298923e44df81fef96a40ffb33cfd71..38a7b9c6c7c5e1bf081380af481898a7182f139a 100644 --- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java +++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java @@ -26,7 +26,7 @@ public class MeshModel { public MeshModel(MeshModel meshModel) { for (MeshFacet facet : meshModel.facets) { - facets.add(new MeshFacet(facet)); + facets.add(new MeshFacetImpl(facet)); } } diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshObjLoader.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshObjLoader.java index eb3e48c2f660245388c6d5aed0b804cbc6f066fc..210616d4f472673037af0ce2d981ee75a514a5bd 100644 --- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshObjLoader.java +++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/io/MeshObjLoader.java @@ -12,6 +12,7 @@ import com.mokiat.data.front.parser.OBJTexCoord; import com.mokiat.data.front.parser.OBJVertex; import cz.fidentis.analyst.mesh.core.CornerTableRow; import cz.fidentis.analyst.mesh.core.MeshFacet; +import cz.fidentis.analyst.mesh.core.MeshFacetImpl; import cz.fidentis.analyst.mesh.core.MeshModel; import cz.fidentis.analyst.mesh.core.MeshPoint; import cz.fidentis.analyst.mesh.core.MeshPointImpl; @@ -91,7 +92,7 @@ public class MeshObjLoader { * @throws IOException Data are corrupted */ private static MeshFacet parseMeshToFacet(OBJModel model, OBJMesh mesh) throws IOException { - MeshFacet meshFacet = new MeshFacet(); + MeshFacet meshFacet = new MeshFacetImpl(); Map<MeshPoint, Integer> vertices = new HashMap(); Map<Edge, Integer> edges = new HashMap();