C# 如何确定三角形是否包含特定点?

C# 如何确定三角形是否包含特定点?,c#,graphics,2d,linear-algebra,C#,Graphics,2d,Linear Algebra,我有个问题要问你们 现在假设我有一个虚拟网格,我在这些虚拟网格上有连接点,如下所示 现在假设我在这个虚拟网格上画了一个三角形,如下所示 现在我想知道是否有任何虚拟网格的点被三角形所包含。。。 如何使用C#.Net实现这一点 注意:我也知道三角形的点,问题是二维平面 向您致意……我找到了一种确定点是否在三角形内的通用方法 希望这有助于将三角形定义为,并使用方法确定此路径是否包含该点。 假设你的三角形由点A,B和C组成 假设你想测试点P是否在三角形内 位于三角形内部可以解析为位于所有向量AB、

我有个问题要问你们

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

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

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

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


向您致意……

我找到了一种确定点是否在三角形内的通用方法

希望这有助于将三角形定义为,并使用方法确定此路径是否包含该点。

  • 假设你的三角形由点A,B和C组成
  • 假设你想测试点P是否在三角形内
位于三角形内部可以解析为位于所有向量AB、BC和CA的同一侧(左侧或右侧)

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

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

问题:这总是一个包含直角的三角形吗?不,它不是。。。如果我的回答是肯定的,你会有什么建议但三角形本身的简单三角法可以让你相当快地计算某些直线。它使用了类似洪水填充的算法,因此对于简单的几何图形来说效率很低。谢谢,我来试一试。事实证明,这是我在下面提出的相同解法,但解释得更好-+1