3d 中有角度的矩形的角

corners of angled rect in 3d

我在 3d space 中得到了 2 个点(具有相同的 y 坐标)。我称它们为 cm。我想找到宽度为 w 的正方形的角点(在图片中标记为 p1-p4)。重要的是,正方形不平行于 x 轴。如果是,(以 p1 为例)我可以这样做:

p1.x = m.x + w / 2
p1.y = m.y + w / 2
p1.z = m.z

我如何用角正方形做同样的事情?这些是所有给定的点:

m; c

和长度:

w; d

有多种方法可以做到这一点,但这是一种方法。

如果保证两个点的y值相同,应该可以按下面的方式做。

取 ​​'m - c' 并称其为 u。归一化 u。然后取u和y轴的叉积得到v,一个平行于xz平面的向量垂直于。 (这可以优化,但这不太重要。)然后取 uv 的叉积得到第三个向量,w。请注意,您可以使用 'm - c' 或 'c - m',或者对叉积参数使用不同的顺序,它仍然有效,但生成的向量可能指向不同的方向(但只是相反的方向) .您还可以在过程中的不同点进行标准化,并在最后获得相同的结果。

获得 m、vw 后,您可以使用一些基本的矢量数学来计算角点。

[编辑:我看到你有一个名为 'w' 的变量,所以我应该澄清一下我示例中的 'w' 与你的不同 'w'。至于你的 'w' 和 'd',它们会影响我最后提到的矢量数学。]