我有一个向量v = <0,0,-1>
和另外四个向量,它们在-1
的z-index上形成一个“正方形”,边长为2*s
,这样四个向量就是:
OA = <-s, s, -1>
OB = < s, s, -1>
OC = <-s,-s, -1>
OD = < s,-s, -1>
现在,在3D空间的任何地方考虑点P
。
我希望以与v
的位置向量OP
对齐的方式旋转P
,然后将旋转应用于其他四个向量,使得所有四个向量从v
开始在相同的相对位置粘在一起。
换句话说,需要旋转整个矢量的“金字塔”,以便v
和OP
对齐。
点P
是任意的,可以是3D空间中的任何点。非常感谢任何帮助!
答案 0 :(得分:0)
如果我正确理解了这个问题,你想要在O点附近旋转你的形状ABCD,并且(OP)和(OV)对齐。
我想到了一种简单的算法,无需计算任何转换或旋转。让V&#39;,A&#39;,B&#39;,C&#39;,D&#39;成为你的新点。
1 / 放点V&#39;这样:
--> ||VO|| -->
V'O = ------ . OP
||OP||
这应该不难,因为你知道O,P和V.
2 / 向量V&amp; O或OP垂直于平面A&#39; B&#39;,C&#39;,D&#39;。所以你可以将后面的点放在这个平面上,这样它们就形成了一个正方形并包括V&#39;作为一个中间人。这里需要一些数学(如果有兴趣我可以加深解释)。
希望你被允许这样做。 如前所述,您最好问http://scicomp.stackexchange.com好的数学解决方案。
答案 1 :(得分:0)
我不知道这是否为时已晚,因为您正在提出问题,但您的问题在3D图形工作中被大量使用。您应该查看旋转矩阵的维基百科文章和一篇好文章Rotation About an Arbitrary Axis in 3D。这两个应该让您了解如何在3D中操纵矢量或矩阵。