如何求解单位向量


uvec1 = (vec3 - vec1).normalize3() 
uvec2 = (vec3 - vec2).normalize3()
   Vec normalize3()
   {
      double length = sqrt(x^2 + y^2 + z^2);
      return new Vec(x/length, y/length, z/length);      
   }

仅给定uvec2、vec1和vec2,是否可以求解uvec1?

样本数据:

vec1 = (3994349.6104437034, -2525024.5798455356, 4270768.558174166, 1.0)    
vec2 = (3994350.7884981344, -2525023.416923353, 4270767.502702763, 1.0)    
vec3 = (3994403.673228261, -2525050.920923162, 4270738.823082169, 1.0) 
uvec1 = (0.8058476404228322, -0.3926341461126214, -0.44322455677835176, 1.0)
uvec2 = (0.7994702158645208, -0.415784076265458, -0.43355619689910574, 1.0)

从数学上讲,您有以下

u1 = (v3 - v1)/||v3 - v1||
u2 = (v3 - v2)/||v3 - v2||

您想在给定v1v2u2的情况下求解u1,显然不知道v3。让我们把第一个方程写成

u1 = ((v3 - v2) + (v2 - v1))/||v3-v1||

将底部方程式代入:

u1 = (u2*||v3 - v2|| + (v2 - v1))/||v3 - v1||

最后一个等式似乎表明,即使v1v2u2的值相同,具有不同的v3也将定义不同的u1。因此,u1不能仅用您给出的值来唯一确定。

相关内容

  • 没有找到相关文章

最新更新