我试图找到这个符号非线性向量方程的解决方案:
P = a*(V0*t+P0) + b*(V1*t+P1) + (1-a-b)*(V2*t+P2) for a, b and t
其中 P, V0, V1, V2, P0, P1, P2 是已知的 3d 向量。
我试图在 Matlab 中这样做:
P = sym('P', [3,1])
P0 = sym('P0', [3,1])
P1 = sym('P1', [3,1])
P2 = sym('P2', [3,1])
V0 = sym('V0', [3,1])
V1 = sym('V1', [3,1])
V2 = sym('V2', [3,1])
syms a b t
F = a*(V0*t+P0) + b*(V1*t+P1) + (1-a-b)*(V2*t+P2) - P
solve(F,a,b,t)
我明白了
Warning: Explicit solution could not be found.
我开始不知道如何解决它,这不是我尝试的第一个数学包。
有趣的是,这个方程有一个简单的几何解释。如果您想象点 P0-P2 是三角形的顶点,V0-V2 大致是顶点法线并且点 P 位于三角形上方,那么对于包含点 P 的三角形满足该等式,它的三个顶点位于三条射线(V *t+P),共享相同的参数 t 值。a、b 和 (1-ab) 成为点 P 的重心坐标。
因此,如果情况不是退化的,那么 t 应该只有一个定义明确的解。