2

我有一组点可以绘制在图表上,如果连接起来会形成形状(有界框可能是正确的术语?)。我怎样才能找到另一个点是否落在这个盒子里?

这里指出一个示例框:

var box = [[181,7500],[181,11279],[185,12500], [196.4,12500],[196.4,7500]];
var point_inside_box = [188,10000];
var point_outside_box = [182,12000];

如果您将其可视化如下,很容易看出这些点是否落在框外:

边界框

有没有办法在javascript中通过一些数学来做到这一点?

4

2 回答 2

2

做到这一点的一种方法是选择一个方向并计算出如果你在理论上永远朝着那个方向移动,那么有多少条边是交叉的。如果是奇数,则点在方框内。如果是偶数,则点在框外。

参考: http ://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/

于 2012-06-14T16:14:11.080 回答
1

其中一种方法是检查向量(PA_i,PA_{i+1})的所有叉积是否具有相同的符号。如果是,则该点在内部,否则在外部。(P是要检查的点,多边形是A_1A_2...A_n。)

在二维情况下,向量 的叉积(a, b)就是(c, d)数字ad - bc

如果您的点 A_i 形成多边形,则此计算有效。

于 2012-06-14T16:14:10.343 回答