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||
您想在给定v1
、v2
和u2
的情况下求解u1
,显然不知道v3
。让我们把第一个方程写成
u1 = ((v3 - v2) + (v2 - v1))/||v3-v1||
将底部方程式代入:
u1 = (u2*||v3 - v2|| + (v2 - v1))/||v3 - v1||
最后一个等式似乎表明,即使v1
、v2
和u2
的值相同,具有不同的v3
也将定义不同的u1
。因此,u1
不能仅用您给出的值来唯一确定。