|
@@ -21,10 +21,12 @@ var SLAcer = SLAcer || {}; |
|
|
this.p2 = new Point(p2);
|
|
|
}
|
|
|
|
|
|
+ function isSameValue(v1, v2) {
|
|
|
+ return Math.abs(v1 - v2) <= Number.EPSILON;
|
|
|
+ }
|
|
|
+
|
|
|
function isSamePoint(p1, p2) {
|
|
|
- var epsilon = Number.EPSILON;
|
|
|
- return Math.abs(p1.x - p2.x) < epsilon
|
|
|
- && Math.abs(p1.y - p2.y) < epsilon;
|
|
|
+ return isSameValue(p1.x, p2.x) && isSameValue(p1.y, p2.y);
|
|
|
}
|
|
|
|
|
|
function linesToPolygons(lines) {
|
|
@@ -110,12 +112,19 @@ var SLAcer = SLAcer || {}; |
|
|
// variables
|
|
|
var i, il, point, y, yl;
|
|
|
|
|
|
- // for each polygon extract parents and childs poylgons
|
|
|
+ // for each polygon extract parents and childs polygons
|
|
|
for (i = 0, il = polygons.length; i < il; i++) {
|
|
|
// only check for first point in polygon
|
|
|
point = polygons[i][0];
|
|
|
|
|
|
- // for each poylgons
|
|
|
+ // not enough faces ( !!! investigation required !!!)
|
|
|
+ if (polygons[i].length < 3) {
|
|
|
+ //console.log('--------------------');
|
|
|
+ //console.log(il, i, polygons[i]);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // for each polygons
|
|
|
for (y = 0, yl = il; y < yl; y++) {
|
|
|
// do not check self intersection
|
|
|
if (i == y) continue;
|
|
@@ -278,10 +287,9 @@ var SLAcer = SLAcer || {}; |
|
|
));
|
|
|
|
|
|
// slice...
|
|
|
-
|
|
|
- t1 = v1.z == zPosition;
|
|
|
- t2 = v2.z == zPosition;
|
|
|
- t3 = v3.z == zPosition;
|
|
|
+ t1 = isSameValue(v1.z, zPosition);
|
|
|
+ t2 = isSameValue(v2.z, zPosition);
|
|
|
+ t3 = isSameValue(v3.z, zPosition);
|
|
|
|
|
|
touch = 0;
|
|
|
|
|
|
0 comments on commit
b4ecf8b