Improved code readability
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / renderer / raster / shapes / basic / texturedpolygon / TexturedPolygon.java
index 0f40895..2cd60e7 100644 (file)
@@ -15,13 +15,22 @@ import eu.svjatoslav.sixth.e3d.renderer.raster.texture.TextureBitmap;
 import java.awt.*;
 
 import static eu.svjatoslav.sixth.e3d.geometry.Polygon.pointWithinPolygon;
+import static java.util.Arrays.sort;
+
+/**
+ * Textured polygon.
+ * <p>
+ *
+ * <pre>
+ * This is how perspective-correct texture rendering is implemented:
+ * If polygon is sufficiently small, it is rendered without perspective correction.
+ * Otherwise, it is sliced into smaller polygons.
+ * </pre>
+ */
 
 public class TexturedPolygon extends AbstractCoordinateShape {
 
     public final Texture texture;
-    final PolygonBorderInterpolator[] is = new PolygonBorderInterpolator[]{
-            new PolygonBorderInterpolator(), new PolygonBorderInterpolator(),
-            new PolygonBorderInterpolator()};
     /**
      * Polygon texture coordinates.
      */
@@ -176,8 +185,7 @@ public class TexturedPolygon extends AbstractCoordinateShape {
             yBottom = renderBuffer.height - 1;
 
         // paint
-        double totalVisibleDistance = projectedPoint1
-                .getDistanceTo(projectedPoint2);
+        double totalVisibleDistance = projectedPoint1.getDistanceTo(projectedPoint2);
         totalVisibleDistance += projectedPoint1.getDistanceTo(projectedPoint3);
         totalVisibleDistance += projectedPoint2.getDistanceTo(projectedPoint3);
 
@@ -187,6 +195,10 @@ public class TexturedPolygon extends AbstractCoordinateShape {
 
         final TextureBitmap zoomedBitmap = texture.getZoomedBitmap(scaleFactor);
 
+        final PolygonBorderInterpolator[] is = new PolygonBorderInterpolator[]{
+                new PolygonBorderInterpolator(), new PolygonBorderInterpolator(),
+                new PolygonBorderInterpolator()};
+
         is[0].setPoints(projectedPoint1, projectedPoint2, texturePoint1,
                 texturePoint2);
         is[1].setPoints(projectedPoint1, projectedPoint3, texturePoint1,
@@ -194,7 +206,7 @@ public class TexturedPolygon extends AbstractCoordinateShape {
         is[2].setPoints(projectedPoint2, projectedPoint3, texturePoint2,
                 texturePoint3);
 
-        java.util.Arrays.sort(is);
+        sort(is);
 
         for (int y = yTop; y < yBottom; y++)
             if (is[0].containsY(y)) {