【问题标题】:How to Determine if a Triangle contains a specific point?如何确定三角形是否包含特定点?
【发布时间】:2012-02-23 17:17:50
【问题描述】:

我有问题要问你们......

现在假设我有一个虚拟网格,我在这些虚拟网格上有交汇点,如下所示

现在假设我在这个虚拟网格上绘制了一个三角形,如下所示

现在我想知道是否有任何虚拟网格的点被三角形包含... 如何使用 C#.Net 实现这一目标?

注意:我也知道三角形的点,问题是二维平面..

我最好的问候...

【问题讨论】:

  • 问题:这总是一个包含直角的三角形吗?
  • 不,不是……如果我的回答是肯定的,你有什么建议?
  • 不太确定 ;) 但是三角形本身的简单三角法可以让您相当快地计算某些线。

标签: c# graphics 2d linear-algebra


【解决方案1】:

我找到了一种通用方法来查找一个点是否在三角形内here

希望对你有帮助

【讨论】:

  • 原来,这与我在下面提出的解决方案相同,但解释得更好 - +1
【解决方案2】:
  • 假设您的三角形由点 A、B 和 C 组成
  • 假设您要测试点 P 是否在三角形内

位于三角形内部可以被解析为位于所有向量 AB、BC 和 CA 的同一侧(左侧或右侧)。所以你

  • 创建 z=0 的 3d 矢量 AB、BC、CA(每个三角形只需执行一次)
  • 创建 z=0 的 3d 矢量 AP、BP、CP(每个点 P 必须执行一次)
  • 计算 p=ABxAP、q=BCxBP 和 r=CAxCP(每个点 P 必须执行一次)

如果 p、q 和 r 在 z 坐标上的符号相同,则您的点在三角形内

【讨论】:

  • 谢谢,我试试看。
【解决方案3】:

将您的三角形定义为GraphicsPath 并使用GraphicsPath.IsVisible(Point) 方法确定此路径是否包含该点。

【讨论】:

  • 它使用类似洪水填充的算法,因此对于简单的几何图形效率很低。
猜你喜欢
  • 2014-10-20
  • 2020-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 2011-01-04
  • 2016-01-07
  • 1970-01-01
相关资源
最近更新 更多