فهرست منبع

area() always absolute

ncannasse 9 سال پیش
والد
کامیت
611599a7a5
2فایلهای تغییر یافته به همراه3 افزوده شده و 3 حذف شده
  1. 1 1
      h2d/col/IPolygon.hx
  2. 2 2
      h2d/col/Polygon.hx

+ 1 - 1
h2d/col/IPolygon.hx

@@ -120,7 +120,7 @@ abstract IPolygon(Array<IPoint>) from Array<IPoint> to Array<IPoint> {
 			sum += p1.x * p2.y - p2.x * p1.y;
 			p1 = p2;
 		}
-		return sum * 0.5;
+		return Math.abs(sum) * 0.5;
 	}
 
 	inline function side( p1 : IPoint, p2 : IPoint, t : IPoint ) {

+ 2 - 2
h2d/col/Polygon.hx

@@ -92,10 +92,10 @@ abstract Polygon(Array<Point>) from Array<Point> to Array<Point> {
 		var sum = 0.;
 		var p1 = points[points.length - 1];
 		for( p2 in points ) {
-			sum += p1.x * p2.y - p2.x * p1.y;
+			sum += p2.x * p1.y - p1.x * p2.y;
 			p1 = p2;
 		}
-		return sum * 0.5;
+		return Math.abs(sum) * 0.5;
 	}
 
 	inline function side( p1 : Point, p2 : Point, t : Point ) {