commit ef4a9bab2252060375df0388144db222f6109d64
Author: leszek <leszek@koltunski.pl>
Date:   Tue Jun 27 22:22:28 2023 +0200

    Fixes for MeshMultigon. Perfect!

diff --git a/src/main/java/org/distorted/library/mesh/MeshBandedTriangle.java b/src/main/java/org/distorted/library/mesh/MeshBandedTriangle.java
index e186042..caed946 100644
--- a/src/main/java/org/distorted/library/mesh/MeshBandedTriangle.java
+++ b/src/main/java/org/distorted/library/mesh/MeshBandedTriangle.java
@@ -332,8 +332,8 @@ public class MeshBandedTriangle extends MeshBase
     mTopY    = vT[1];
 
     mMode = mode;
-    mNormL= normL;
-    mNormR= normR;
+    mNormL= new float[] { normL[0],normL[1] };
+    mNormR= new float[] { normR[0],normR[1] };
 
     mBands        = bands;
     mNumBands     = mBands.length/2 -1;
diff --git a/src/main/java/org/distorted/library/mesh/MeshMultigon.java b/src/main/java/org/distorted/library/mesh/MeshMultigon.java
index 163dadc..5b2ebd6 100644
--- a/src/main/java/org/distorted/library/mesh/MeshMultigon.java
+++ b/src/main/java/org/distorted/library/mesh/MeshMultigon.java
@@ -291,25 +291,25 @@ public class MeshMultigon extends MeshBase
 
       if( eupp<0 )
         {
-        normL[0]=vT[0]-vL[0];
-        normL[1]=vT[1]-vL[1];
+        normL[0]=vL[0]-vT[0];
+        normL[1]=vL[1]-vT[1];
         }
       else
         {
-        normL[0]= v[2*prev  ] - v[2*curr  ];
-        normL[1]= v[2*prev+1] - v[2*curr+1];
+        normL[0]= v[2*curr  ] - v[2*prev  ];
+        normL[1]= v[2*curr+1] - v[2*prev+1];
         }
 
       if( eupn<0 )
         {
-        normR[0]=vT[0]-vR[0];
-        normR[1]=vT[1]-vR[1];
+        normR[0]=vR[0]-vT[0];
+        normR[1]=vR[1]-vT[1];
         }
       else
         {
         int nnxt= next==len-1 ? 0 : next+1;
-        normL[0]= v[2*nnxt  ] - v[2*next  ];
-        normL[1]= v[2*nnxt+1] - v[2*next+1];
+        normR[0]= v[2*next  ] - v[2*nnxt  ];
+        normR[1]= v[2*next+1] - v[2*nnxt+1];
         }
 
       return MeshBandedTriangle.MODE_NORMAL;
@@ -331,8 +331,8 @@ public class MeshMultigon extends MeshBase
         }
       else
         {
-        float dx=v[2*curr]-v[2*next];
-        float dy=v[2*curr+1]-v[2*next+1];
+        float dx=v[2*next  ]-v[2*curr  ];
+        float dy=v[2*next+1]-v[2*curr+1];
 
         normL[0]=dx;
         normL[1]=dy;
@@ -383,7 +383,7 @@ public class MeshMultigon extends MeshBase
 
       for(int j=0; j<num; j++)
         {
-        int mode=computeMode(vL, vR, vT, normL, normL, edgesUp, vertsUp,vertices,centers, i,j);
+        int mode=computeMode(vL, vR, vT, normL, normR, edgesUp, vertsUp,vertices,centers, i,j);
         triangles[index++] = new MeshBandedTriangle(vL, vR, vT, band, normL, normR, mode, exBands, exVertices);
         }
       }
