Я пытаюсь найти решение этого символического нелинейного векторного уравнения:
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.