是否有人知道如何确定一组坐标是否在您具有坐标的三角形内。我知道如何计算边长,面积和周长,但我不知道从哪里开始计算其他点三角形内的下落。 任何建议将不胜感激
答案 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是否在多边形中。请注意,只有在多边形的边指向时,此方法才有效。