From 06fe847aaa8b9c1fc4fef5559fed01c3596b0fd0 Mon Sep 17 00:00:00 2001
From: Matej Lukes <456316@mail.muni.cz>
Date: Wed, 22 Jan 2020 21:01:37 +0100
Subject: [PATCH] documentation and  improvements

---
 MeshModel/MeshModel.iml                       |   1 +
 .../analyst/mesh/core/CornerTable.java        | 101 ++++++++++++------
 .../analyst/mesh/core/CornerTableRow.java     |  13 ++-
 .../fidentis/analyst/mesh/core/MeshFacet.java |  27 ++++-
 .../fidentis/analyst/mesh/core/MeshModel.java |  10 ++
 .../fidentis/analyst/mesh/core/MeshPoint.java |  10 ++
 6 files changed, 122 insertions(+), 40 deletions(-)

diff --git a/MeshModel/MeshModel.iml b/MeshModel/MeshModel.iml
index 80247d69..a1df9e00 100644
--- a/MeshModel/MeshModel.iml
+++ b/MeshModel/MeshModel.iml
@@ -14,6 +14,7 @@
     <orderEntry type="library" name="Maven: java3d:vecmath:1.3.1" level="project" />
     <orderEntry type="library" name="Maven: java3d:j3d-core:1.3.1" level="project" />
     <orderEntry type="library" name="Maven: org.netbeans.api:org-netbeans-api-annotations-common:RELEASE82" level="project" />
+    <orderEntry type="library" name="Maven: com.github.mokiat:java-data-front:v2.0.0" level="project" />
     <orderEntry type="library" name="Maven: javax.vecmath:vecmath:1.5.2" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java
index c9323838..660c1c3b 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTable.java
@@ -4,79 +4,111 @@ import java.util.ArrayList;
 import java.util.List;
 
 /**
- * Representation of mesh in memory
+ * Representation of mesh in memory using corner table
+ *
+ * @author Matej Lukes
  */
 public class CornerTable {
 
     private List<CornerTableRow> rows = new ArrayList<>();
 
     /**
-     * returns index of face that contains corner
-     * @param c index of corner
+     * returns index of face that contains corner.
+     * returns -2 if index is less than 0 or more than number of rows in corner table
+     *
+     * @param index index of corner
      * @return index of corner
      */
-    public int getIndexOfFace(int c) {
-        return c / 3;
+    public int getIndexOfFace(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return index / 3;
     }
 
     /**
-     * returns index of opposite corner
-     * @param c index of corner
+     * returns index of opposite corner.
+     * returns -1 if corner does not have opposite
+     * returns -2 if index is less than 0 or more than number of rows in corner table
+     *
+     * @param index index of corner
      * @return index of corner
      */
-    public int getIndexOfOppositeCorner(int c) {
-        return rows.get(c).getOppositeCornerIndex();
+    public int getIndexOfOppositeCorner(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return rows.get(index).getOppositeCornerIndex();
     } // opposite
 
     /**
      * returns index of next corner in Face
-     * @param c index of corner
-     * @return index of corner
+     * returns -2 if index is less than 0 or more than number of rows in corner table
+     *
+     * @param index index of corner
+     * @return index of next corner
      */
-    public int getIndexOfNextCornerInFace(int c) {
-        if ((c % 3) == 2)
-            return c - 1;
-        return c + 1;
-    }// next in t(c)
+    public int getIndexOfNextCornerInFace(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        if ((index % 3) == 2)
+            return index - 1;
+        return index + 1;
+    }
 
     /**
      * returns index of previous corner in Face
-     * @param c index of corner
-     * @return index of corner
+     * returns -2 if index is less than 0 or more than number of rows in corner table
+     *
+     * @param index index of corner
+     * @return index of previous corner
      */
-    public int getIndexOfPreviousCornerInFace(int c) {
-        return getIndexOfNextCornerInFace(getIndexOfNextCornerInFace(c));
-    } // previous corner
+    public int getIndexOfPreviousCornerInFace(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return getIndexOfNextCornerInFace(getIndexOfNextCornerInFace(index));
+    }
 
     /**
      * returns opposite corner of edge on the left side of corner
-     * @param c index of corner
+     * returns -2 if index is less than 0 or more than number of rows in corner table
+     *
+     * @param index index of corner
      * @return index of corner
      */
-    public int getIndexOfTipCornerOnLeft(int c) {
-        return getIndexOfOppositeCorner(getIndexOfPreviousCornerInFace(c));
-    }  // tip on left
+    public int getIndexOfTipCornerOnLeft(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return getIndexOfOppositeCorner(getIndexOfPreviousCornerInFace(index));
+    }
 
     /**
      * returns opposite corner of edge on the right side of corner
-     * @param c index of corner
+     * returns -2 if index is less than 0 ord more than number of rows in corner table
+     *
+     * @param index index of corner
      * @return index of corner
      */
-    public int getIndexOfTipCornerOnRight(int c) {
-        return getIndexOfOppositeCorner(getIndexOfNextCornerInFace(c));
-    } // tip on right
+    public int getIndexOfTipCornerOnRight(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return getIndexOfOppositeCorner(getIndexOfNextCornerInFace(index));
+    }
 
     /**
      * returns corner next to the corner opposite the edge on the left side
-     * @param c index of corner
+     * returns -2 if index is less than 0 ord more than number of rows in corner table
+     *
+     * @param index index of corner
      * @return index of corner
      */
-    public int getNextAroundCorner(int c) {
-        return getIndexOfNextCornerInFace(getIndexOfTipCornerOnLeft(c));
-    } // next around v(c)
+    public int getNextAroundCorner(int index) {
+        if (index < 0 || index > rows.size())
+            return -2;
+        return getIndexOfNextCornerInFace(getIndexOfTipCornerOnLeft(index));
+    }
 
     /**
-     * adds row to the corner table
+     * adds row at the end of corner table
+     *
      * @param row that is going to be added to corner table
      */
     public void addRow(CornerTableRow row) {
@@ -85,6 +117,7 @@ public class CornerTable {
 
     /**
      * replaces row of corner table at specified index
+     *
      * @param index index of replaced row
      * @param row new row
      */
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java
index 70b2d35e..c25f921e 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/CornerTableRow.java
@@ -2,11 +2,18 @@ package cz.fidentis.analyst.mesh.core;
 
 /**
  * single row in corner table
+ *
+ * @author Matej Lukes
  */
 public class CornerTableRow {
     private int oppositeCornerIndex;
     private int vertexIndex;
 
+    /**
+     * Constructor of a row in corner
+     * @param vertexIndex index of associated vertex in MashFacet
+     * @param oppositeCornerIndex index of the opposite corner, -1 if there is no opposite corner
+     */
     public CornerTableRow(int vertexIndex, int oppositeCornerIndex) {
         this.vertexIndex = vertexIndex;
         this.oppositeCornerIndex = oppositeCornerIndex;
@@ -27,7 +34,11 @@ public class CornerTableRow {
     public int getOppositeCornerIndex() {
         return oppositeCornerIndex;
     }
-	
+
+    /**
+     * sets index of the opposite corner
+     * @param index index of the opposite corner in corner table
+     */
 	public void setOppositeCornerIndex(int index) {
 		this.oppositeCornerIndex = index;
 	}
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 a68b9ea6..84ddab7c 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
@@ -12,18 +12,35 @@ public class MeshFacet {
     private List<MeshPoint> vertexes = new ArrayList<>();
     private CornerTable cornerTable = new CornerTable();
 
-    public MeshPoint GetVertex(int c) {
-        return vertexes.get(c);
-    } // vertex of c
+    /**
+     * returns vertex of specified index
+     * @param index index of vertex
+     * @return vertex
+     */
+    public MeshPoint GetVertex(int index) {
+        return vertexes.get(index);
+    }
 
+    /**
+     * adds vertex to MeshFacet
+     * @param point new vertex
+     */
     public void addVertex(MeshPoint point){
         vertexes.add(point);
     }
-	
+
+    /**
+     * returns number of vertexes in MeshFacet
+     * @return number of vertexes
+     */
 	public int getNumberOfVertexes() {
 		return vertexes.size();
 	}
-	
+
+    /**
+     * returns Corner Table representing MeshFacet
+     * @return corner table
+     */
 	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 d4220ea9..7966434f 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
@@ -5,14 +5,24 @@ import java.util.List;
 
 /**
  * MeshModel is a root node of the hierarchy
+ *
+ * @author Matej Lukes
  */
 public class MeshModel {
     private List<MeshFacet> facets = new ArrayList<>();
 
+    /**
+     * returns list of MeshFacets
+     * @return list of MeshFacets
+     */
     public List<MeshFacet> getFacets() {
         return facets;
     }
 
+    /**
+     * adds new MeshFacet to the model
+     * @param facet new MeshFacet
+     */
     public void addFacet(MeshFacet facet) {
         facets.add(facet);
     }
diff --git a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
index 5b041240..7a70b175 100644
--- a/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
@@ -10,6 +10,12 @@ import javax.vecmath.Vector3d;
 public class MeshPoint {
     private final Vector3d position, normal, texCoord;
 
+    /**
+     * constructor of meshPoint
+     * @param position position of MeshPoint
+     * @param normal normal of MeshPoint
+     * @param texCoord coordinates in texture
+     */
     public MeshPoint(Vector3d position, Vector3d normal , Vector3d texCoord) {
         if (position == null || normal == null || texCoord == null)
             throw new NullPointerException("position, normal and texCoord cannot be null");
@@ -55,6 +61,10 @@ public class MeshPoint {
                 && this.texCoord.equals(meshPointObj.texCoord);
     }
 
+    /**
+     * returns hash of MeshPoint
+     * @return hash
+     */
     @Override
     public int hashCode() {
         return position.hashCode() + normal.hashCode() + texCoord.hashCode();
-- 
GitLab