-1

我正在寻找最好的(用于计算 2D 多边形面积的有效算法(特别是对于给定三个点的三角形)。我在网上搜索并找到了以下链接,但我仍然不确定它们是否有效内存成本与否(因为我的网格很大)。我想知道 C++ 中是否有任何技巧(我是 C++ 的新手)可以应用于它们:

以下是链接:

(stackoverflow) 如何确定一个点是否在二维三角形中?

http://www.softwareandfinance.com/Visual_CPP/Triangle_Area_Perimeter.html

值得一提的是,最终目标是找出一个点是否在多边形内部(不在边界上)。

谢谢你的帮助。

4

1 回答 1

1

Joachim Pileborg 在评论中建议不需要该区域,但这没有抓住重点:有一种有效的算法确实需要一个中间值,而恰好是2*Area.

然而,在这种情况下,问题实际上是输入域:三角形网格。这意味着几乎每个顶点都与两个三角形接壤。这不像“点 P 位于边 E 的左侧,所以它不在三角形 T 中”。有一大组三角形 T i,其中一些位于左侧,一些位于右侧,一个位于给定边的任一侧。

鉴于这种复杂性,您应该对网格进行预处理。将其划分为一些可管理的块,例如 16x16,并注意每个三角形所在的块。任何点 P 恰好位于一个块中,因此您可能需要测试 1% 的三角形(单个三角形可能位于多个块中,但平均值很低)。

(你很少需要只做一个点到网格的匹配,所以预处理是合理的。并在你在它的时候预先计算区域。)

于 2013-08-26T09:39:49.440 回答