使用来自两个自旋矢量的点插值球体上的x,y,z坐标?

时间:2010-10-05 14:38:11

标签: vector geometry sine cosine angular-momentum

我想实时绘制位于单位球体表面上的3D点(r = 1)。

这里有两个旋转矢量。一个矢量围绕Y轴旋转,它的X和Z值是使用完全位于X / Z平面上的圆的cos()和sin()计算的,所有Y值都等于0.另一个围绕X轴,它是使用圆的cos()和sin()计算的Z和Y值,它完全位于Z / Y平面上,所有X值都等于0.两个矢量的角动量通常不是相同。然而,矢量的端点位于一个半径等于1的公共球体的表面上。因此它们具有相同的幅度,并且都来自相同的0,0,0点。

假设第一个矢量有一个叫做angXZ的角动量项和第二个angZY。这意味着我可以随时使用angXY和angZY计算两个点,每个旋转矢量一个点。使用这两个3D点,计算第三个点的公式是什么,该第三个点也将位于单位球体的表面上,并且是从angXZ和angZY计算的两个点之间的正确插值?

我可以在脑海中看到,如果任何两个3D点位于单位球体的表面上,则只有一个圆圈(平面),它们的圆周都位于其上。我还可以知道,计算插值点的坐标时,可以将两个计算点所产生的角度平分,当投影到它们共有的圆周时。但我无法绕过翻译和数学。

是否有一个简单的公式,它采用位于单位球体表面上的两个3D点,计算出也位于该表面上的第三个点,并且是前两个点之间的正确插值?

如果重要的话,我正在使用Delphi Pro 6.

后续行动:直观地说,我应该能够获取从旋转矢量对计算出的两个点的线性中点,并将该点重新投射到单位球面上。例如,下面链接中的公式给出了计算任意两个3D点之间的中点的公式。我是否应该能够获取该3D点并使用某个公式,以将其投射回单位球体表面的方式调整XYZ坐标?

Finding coordinates of a point between two points?

1 个答案:

答案 0 :(得分:2)

让M和N成为你的两点而O是原点。我们将找到P,MN段的中间:OP = OM + ON / 2.您计算OP的大小:| OP |。您需要的点将是R,OR = OP / | OP | = OM + ON / 2 | OP |。

祝你好运计算这个。我不知道Delphi,但它可能允许直接向量操作。如果没有使用解析几何。

中间点的坐标是M和N坐标的算术平均值(你说你可以计算它们)。获得| OP |的大小你提取x ^ 2 + y ^ 2 + z ^ 2的平方根。要获得R,您只需将P的坐标除以刚才计算的大小。

当M和N相反时(P == O),你可以单独处理。