首页 > 解决方案 > 如何使用kevlindev的intersectPolygonRectangle

问题描述

我在理解 kevlindev 的 intersectPolygonRectangle 函数使用哪些参数时遇到了一些麻烦:http: //www.kevlindev.com/gui/math/intersection/index.htm#Anchor-intersectPolygonRectangl-23720

更准确地说,关于 svg rect , r1 和 r2 代表什么?

Intersection.intersectPolygonRectangle = function(points, r1, r2) {
var min        = r1.min(r2);
var max        = r1.max(r2);
var topRight   = new Point2D( max.x, min.y );
var bottomLeft = new Point2D( min.x, max.y );

var inter1 = Intersection.intersectLinePolygon(min, topRight, points);
var inter2 = Intersection.intersectLinePolygon(topRight, max, points);
var inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points);
var inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points);

var result = new Intersection("No Intersection");

result.appendPoints(inter1.points);
result.appendPoints(inter2.points);
result.appendPoints(inter3.points);
result.appendPoints(inter4.points);

if ( result.points.length > 0 )
    result.status = "Intersection";

return result;
};

我知道一个矩形由 2 个点(左上角和右下角)定义,那么我应该为 r1 和 r2 使用哪些值?

虽然我设法使用了 intersectCircleRectangle 和 intersectCirclePolygon 等其他函数,但我在网上找不到 intersectPolygonRectangle 的任何工作示例......

提前致谢。

标签: javascriptsvgintersection

解决方案


SVG 矩形由xywidth和描述height。Wherexy是矩形的左上角。

看起来您提供矩形的哪两个点并不重要,只要它们是对角线即可。代码整理出右上角和左下角坐标是什么。

所以以下应该工作:

r1 = new Point2D(<rect X>, <rect Y>);
r2 = new Point2D(<rect X> + rect WIDTH>, <rect Y> + <rect HEIGHT>);

推荐阅读