1

我有一个四边形数组,每个四边形都有自己的位置,定义了顶点的坐标。我在相机的平面上有场景的投影。我想知道每个quad的数组元素的投影面积。事实上,我不会通过投影像素知道它属于哪个对象。

4

1 回答 1

0

您可以使用Viewport.Project 方法将每个顶点投影到屏幕上。

之后,您在屏幕坐标中拥有四边形的顶点。剩下的就是确定所讨论的点是否属于该多边形。这可以通过不同的方式来完成。

一种选择是确定点相对于每个多边形边的边。这是因为多边形是凸的。

previousSide := 0
for each edge in polygon
    d1 := edge.p2 - edge.p1 //direction vector of edge
    d2 := pointInQuestion - edge.p1 //direction of first edge point to point in question
    side = d1.x * d2.y - d1.y * d2.x //cross product
    if side * previousSide < 0 then return false //different sides
    previousSide := side
 next
 return true
于 2012-10-12T15:18:53.790 回答