commit 21be940a1f6126c408654a06f822d725a31310a3
Author: leszek <leszek@koltunski.pl>
Date:   Fri Jul 14 00:46:56 2023 +0200

    bugfix for a crasher

diff --git a/src/main/java/org/distorted/library/mesh/MeshMultigon.java b/src/main/java/org/distorted/library/mesh/MeshMultigon.java
index 25f4d0e..72e6c4d 100644
--- a/src/main/java/org/distorted/library/mesh/MeshMultigon.java
+++ b/src/main/java/org/distorted/library/mesh/MeshMultigon.java
@@ -129,6 +129,13 @@ public class MeshMultigon extends MeshBase
     return diff<0 ? diff+(2*Math.PI) : diff;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private boolean pointsTheSame(float dx, float dy)
+    {
+    return dx*dx + dy*dy < 0.000001f;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private float[] detectNextOuterVertex(float[][] vertices, float[] curr, float[] vect)
@@ -145,7 +152,7 @@ public class MeshMultigon extends MeshBase
         float xc = v[2*j];
         float yc = v[2*j+1];
 
-        if( xc==curr[0] && yc==curr[1])
+        if( pointsTheSame(xc-curr[0],yc-curr[1]) )
           {
           int n = (j==num-1 ? 0 : j+1);
           float xn = v[2*n];
@@ -186,7 +193,7 @@ public class MeshMultigon extends MeshBase
       vect[1] = prev[1]-next[1];
       tmp.add(next);
       }
-    while( next[0]!=first[0] || next[1]!=first[1] );
+    while( !pointsTheSame(next[0]-first[0],next[1]-first[1]) );
 
     int num = tmp.size();
     mOuterVertices = new float[num][];
