我想实时绘制在单位球面(r = 1)上的3D点。这里有两个旋转向量。一个向量绕Y轴旋转,其X和Z值使用完全位于X / Z平面上且所有Y值均相等的圆圈的cos()和sin()计算。另一个向量绕X轴旋转,其Z和Y值使用完全位于Z / Y平面上且所有X值均相等的圆圈的cos()和sin()计算。这两个向量的角动量通常不同。但是,向量的端点都沿着半径为1的公共球体的表面。因此它们具有相同的大小并且都起源于相同的0, 0, 0点。
假设第一个向量具有称为angXZ的角动量项,第二个向量具有angZY。这意味着在任何时候,可以使用angXY和angZY计算出两个点,每个点对应一个旋转向量。使用这两个3D点,如何计算第三个点的公式,以便该点也位于单位球面上,并且是从angXZ和angZY计算出的两个点之间的正确插值?
我能想象出在单位球面上给定任意两个三维点,有且只有一个圆(平面)其周长会覆盖这两个点。我也能直觉地感受到,计算插值点的坐标需要将这两个计算点投影到共享周长的圆上并将产生的角度二等分。但是我无法理解这些翻译和数学。
是否有简单的公式可以计算两个位于单位球面上的三维点以计算第三个点,该点也将位于该表面并成为前两个点之间正确的插值?
如果有必要,我正在使用Delphi Pro 6。
跟进:直觉上,我应该能够取自由度向量对计算出的两个点的线性中点,并将该点投射回单位球面上。例如,下面链接中找到的公式提供了计算任意两个三维点之间中点的方程。然后,我不应该能够采用某些公式来调整该点的XYZ坐标以使其投射回单位球面的表面吗?
假设第一个向量具有称为angXZ的角动量项,第二个向量具有angZY。这意味着在任何时候,可以使用angXY和angZY计算出两个点,每个点对应一个旋转向量。使用这两个3D点,如何计算第三个点的公式,以便该点也位于单位球面上,并且是从angXZ和angZY计算出的两个点之间的正确插值?
我能想象出在单位球面上给定任意两个三维点,有且只有一个圆(平面)其周长会覆盖这两个点。我也能直觉地感受到,计算插值点的坐标需要将这两个计算点投影到共享周长的圆上并将产生的角度二等分。但是我无法理解这些翻译和数学。
是否有简单的公式可以计算两个位于单位球面上的三维点以计算第三个点,该点也将位于该表面并成为前两个点之间正确的插值?
如果有必要,我正在使用Delphi Pro 6。
跟进:直觉上,我应该能够取自由度向量对计算出的两个点的线性中点,并将该点投射回单位球面上。例如,下面链接中找到的公式提供了计算任意两个三维点之间中点的方程。然后,我不应该能够采用某些公式来调整该点的XYZ坐标以使其投射回单位球面的表面吗?