3d 中有角度的矩形的角
corners of angled rect in 3d
我在 3d space 中得到了 2 个点(具有相同的 y 坐标)。我称它们为 c
和 m
。我想找到宽度为 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平面的向量垂直于你。 (这可以优化,但这不太重要。)然后取 u 和 v 的叉积得到第三个向量,w。请注意,您可以使用 'm - c' 或 'c - m',或者对叉积参数使用不同的顺序,它仍然有效,但生成的向量可能指向不同的方向(但只是相反的方向) .您还可以在过程中的不同点进行标准化,并在最后获得相同的结果。
获得 m、v 和 w 后,您可以使用一些基本的矢量数学来计算角点。
[编辑:我看到你有一个名为 'w' 的变量,所以我应该澄清一下我示例中的 'w' 与你的不同 'w'。至于你的 'w' 和 'd',它们会影响我最后提到的矢量数学。]
我在 3d space 中得到了 2 个点(具有相同的 y 坐标)。我称它们为 c
和 m
。我想找到宽度为 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平面的向量垂直于你。 (这可以优化,但这不太重要。)然后取 u 和 v 的叉积得到第三个向量,w。请注意,您可以使用 'm - c' 或 'c - m',或者对叉积参数使用不同的顺序,它仍然有效,但生成的向量可能指向不同的方向(但只是相反的方向) .您还可以在过程中的不同点进行标准化,并在最后获得相同的结果。
获得 m、v 和 w 后,您可以使用一些基本的矢量数学来计算角点。
[编辑:我看到你有一个名为 'w' 的变量,所以我应该澄清一下我示例中的 'w' 与你的不同 'w'。至于你的 'w' 和 'd',它们会影响我最后提到的矢量数学。]