我们如何在三角形内找到点数?

时间:2012-08-16 05:19:57

标签: java

我想找到完全没有。位于三角形内部和边界上的点  如果我们给出了所有三个顶点的x和y坐标 2D笛卡尔平面。我想将三角形​​包围在一个矩形内  然后,找到直线方程,并逐一检查点以满足 不等式。有没有更好的计算方法来解决这个问题?

请帮帮我。

2 个答案:

答案 0 :(得分:1)

您采用3-triange边缘向量的所有组合的交叉积。如果得到的向量方向与向量与点p的交叉乘积和向三角形点(A,B或C)之一的向量的结果不相同,则p不在三角形中。(交叉乘积将导致3D)

更详细的解释: http://www.blackpawn.com/texts/pointinpoly/default.html

答案 1 :(得分:0)

查看http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=geometry3处的 PointInPolygon 描述,以获得一个点是否在多边形中的一般测试情况的​​总结。由于你有一个总是凸起的三角形,这简化为(伪代码):

for point in test_points:
  //infinity can just be a point outside the bounding box of the triangle
  ray := line from point to infinity 
  intersection_points := 0

  for side in triangle_sides
    isect := intersection ray, side
    intersection_points++ if isect

  return intersection_points %2 == 1