3

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

这里有两个自旋向量在起作用。一个向量围绕 Y 轴旋转,它的 X 和 Z 值使用完全位于 X/Z​​ 平面上的圆的 cos() 和 sin() 计算,所有 Y 值都等于 0。另一个围绕X 轴,它是使用完全位于 Z/Y 平面上的圆的 cos() 和 sin() 计算的 Z 和 Y 值,所有 X 值都等于 0。两个向量的角动量通常不是相同的。但是,向量的端点位于半径等于 1 的公共球面上。因此,它们的大小相等,并且都源自同一个 0、0、0 点。

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

我可以在脑海中看到,给定位于单位球体表面上的任意两个 3D 点,只有一个圆(平面)的圆周都位于它们的圆周上。我也可以直觉计算插值点的坐标归结为将两个计算点投影到它们共享周长的圆上时产生的角度平分。但我就是无法将翻译和数学全神贯注。

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

如果这很重要,我正在使用 Delphi Pro 6。

跟进:从直觉上看,我应该能够从一对自旋向量计算出的两个点的线性中点,并将该点投影回单位球体。例如,在下面的链接中找到的公式给出了计算任意两个 3D 点之间中点的公式。我是否应该能够获取该 3D 点并使用一些公式,以将其投影回单位球体表面的方式调整它的 XYZ 坐标?

查找两点之间的点的坐标?

4

1 回答 1

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) 时,您分别处理。

于 2010-10-05T14:48:16.433 回答