如何找到一组坐标是否在2D三角形内?

时间:2014-02-16 21:33:28

标签: java

是否有人知道如何确定一组坐标是否在您具有坐标的三角形内。我知道如何计算边长,面积和周长,但我不知道从哪里开始计算其他点三角形内的下落。 任何建议将不胜感激

3 个答案:

答案 0 :(得分:8)

您可以创建Polygon对象。

Polygon triangle = new Polygon();

使用addPoint(int x, int y)方法添加三角形的顶点。

然后,您只需使用contains(double x, double y)方法检查坐标集是否在三角形内。

答案 1 :(得分:0)

使用Polygon类的contains方法记录here

答案 2 :(得分:0)

对于不使用Polygon-class的解决方案:

假设您给多边形的顶点A,B,C三个点。设P为要检查的点。首先计算表示三角形边缘的向量。我们称他们为AB,BC,CA。还计算三个向量PA,PB,PC。

现在计算上面两个向量之间的叉积。

第一对的叉积给出了sin(alpha),其中alpha是AB和PA之间的角度,乘以AB和PA的矢量。忽略此向量,因为我们对角度感兴趣并查看正弦(在2D向量的情况下,您可以将其想象为垂直于屏幕的向量)。

正弦可以取0和2 * Pi之间的值(简单地说,为了方便)。它恰好是0和Pi的0。因为正弦之间的每个值都是正的,而Pi和2 * Pi之间的每个值都是正的。

所以让我们说你的Point p在AB的左侧,所以正弦是正的。

通过从上方获取每对的叉积,您可以很容易地猜测点P位于三角形的每条边的左侧。这只意味着它必须在三角形内部。

当然,这种方法甚至可以用于计算点P是否在多边形中。请注意,只有在多边形的边指向时,此方法才有效。