Fixed git clone URL
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / math / Vertex.java
index 6e083fc..24c243f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Sixth 3D engine. Author: Svjatoslav Agejenko. 
+ * Sixth 3D engine. Author: Svjatoslav Agejenko.
  * This project is released under Creative Commons Zero (CC0) license.
  */
 package eu.svjatoslav.sixth.e3d.math;
@@ -9,8 +9,9 @@ import eu.svjatoslav.sixth.e3d.geometry.Point3D;
 import eu.svjatoslav.sixth.e3d.gui.RenderingContext;
 
 /**
- * It is used to store coordinates of vertices of 3D objects.
- * It is also used to store coordinates of points in 3D space.
+ * Vertex is a point where two or more lines, line segments, or rays come together.
+ * In other words, it's a corner of a polygon, polyhedron, or other geometric shape.
+ * For example, a triangle has three vertices, a square has four, and a cube has eight.
  */
 public class Vertex {
 
@@ -23,29 +24,41 @@ public class Vertex {
      * Vertex coordinate relative to the viewer after transformation.
      * Visible vertices have positive z coordinate.
      * Viewer is located at (0, 0, 0).
+     * No perspective correction is applied.
      */
     public Point3D transformedCoordinate;
 
     /**
-     * Vertex coordinate in pixels relative to the top left corner of the screen after transformation.
+     * Vertex coordinate in pixels relative to the top left corner of the screen after transformation
+     * and perspective correction.
      */
     public Point2D onScreenCoordinate;
 
+
+    /**
+     * Coordinate within texture.
+     */
+    public Point2D textureCoordinate;
+
+
     /**
      * The frame number when this vertex was last transformed.
      */
     private int lastTransformedFrame;
 
     public Vertex() {
-        coordinate = new Point3D();
-        transformedCoordinate = new Point3D();
-        onScreenCoordinate = new Point2D();
+        this(new Point3D());
     }
 
     public Vertex(final Point3D location) {
+        this(location, null);
+    }
+
+    public Vertex(final Point3D location, Point2D textureCoordinate) {
         coordinate = location;
         transformedCoordinate = new Point3D();
         onScreenCoordinate = new Point2D();
+        this.textureCoordinate = textureCoordinate;
     }
 
 
@@ -53,7 +66,7 @@ public class Vertex {
      * Transforms vertex coordinate to calculate its location relative to the viewer.
      * It also calculates its location on the screen.
      *
-     * @param transforms Transforms pipeline.
+     * @param transforms    Transforms pipeline.
      * @param renderContext Rendering context.
      */
     public void calculateLocationRelativeToViewer(final TransformsStack transforms,