【问题标题】:.NET System.Numerics.Plane creation difficulties.NET System.Numerics.Plane 创建困难
【发布时间】:2023-01-09 19:17:14
【问题描述】:

我想在我的几何计算中使用 .NET System.Numerics.Plane 结构,但我发现很难从我拥有的数据创建它的实例。我有一个 Vector3 顶点数组(全部共面)和一个法线,但在我的数据中,一些连续的顶点可能是共线的,所以虽然 Plane.CreateFromVertices() 方法可用,但我必须做额外的工作呈现三个保证不共线的顶点。我相信一定有更有效的方法。

所有其他构建平面的方法似乎都需要(以各种表示形式)从平面到原点的法线和(最短)距离 D。我不知道如何计算 D,而且那里似乎没有太多帮助!

应该可以从一个顶点和平面法线创建一个平面,但是当我在网上寻求帮助时(例如here),所有的解决方案似乎都以标准平面方程(ax + by + cz = k),我也不知道如何从中创建一个 Plane 结构!

我非常感谢在上述三种情况中的任何一种情况下提供帮助,总结如下:

  1. 如何根据我的数据计算 D
  2. 如何用一个任意顶点和法线实例化平面
  3. 如何使用像 ax + by + cz = k 这样的方程来实例化平面

    上面的第 2 项将是最有用的。

【问题讨论】:

    标签: .net 3d plane


    【解决方案1】:

    第 2 项的答案相当简单:

    public static Plane CreateFromArbitraryVertexAndNormal(Vector3 vertex, Vector3 normal)
    {
        return new(normal, Vector3.Dot(normal, vertex));
    }
    

    请注意,“D”是“平面沿其法线到原点的距离”。 (引自 Plane.cs 源代码。)此距离不是绝对值;如果法线指向原点,它将是负数。

    【讨论】:

      猜你喜欢
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多