Polarita3D

m1: {{-10, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 3, 0}, {0, 0, 0, 5}}
eq1: m1(1, 1) + ((m1(1, 2) + m1(2, 1)) * x) + ((m1(1, 3) + m1(3, 1)) * y) + ((m1(1, 4) + m1(4, 1)) * z) + (m1(2, 2) * x^(2)) + (((m1(2, 3) + m1(3, 2)) * x) * y) + (((m1(2, 4) + m1(4, 2)) * x) * z) + (m1(3, 3) * y^(2)) + (((m1(3, 4) + m1(4, 3)) * y) * z) + (m1(4, 4) * z^(2)) = 0
A = (5.09383289891403, 1.5799472766209703, 1.2770133269710957)
p: (1 * m1(1, 1)) + (x(A) * m1(2, 1)) + (y(A) * m1(3, 1)) + (z(A) * m1(4, 1)) + (((1 * m1(1, 2)) + (x(A) * m1(2, 2)) + (y(A) * m1(3, 2)) + (z(A) * m1(4, 2))) * x) + (((1 * m1(1, 3)) + (x(A) * m1(2, 3)) + (y(A) * m1(3, 3)) + (z(A) * m1(4, 3))) * y) + (((1 * m1(1, 4)) + (x(A) * m1(2, 4)) + (y(A) * m1(3, 4)) + (z(A) * m1(4, 4))) * z) = 0
c = IntersectPath(p, eq1)
B = Point(c)
f = Line(A, B)
q: (1 * m1(1, 1)) + (x(B) * m1(2, 1)) + (y(B) * m1(3, 1)) + (z(B) * m1(4, 1)) + (((1 * m1(1, 2)) + (x(B) * m1(2, 2)) + (y(B) * m1(3, 2)) + (z(B) * m1(4, 2))) * x) + (((1 * m1(1, 3)) + (x(B) * m1(2, 3)) + (y(B) * m1(3, 3)) + (z(B) * m1(4, 3))) * y) + (((1 * m1(1, 4)) + (x(B) * m1(2, 4)) + (y(B) * m1(3, 4)) + (z(B) * m1(4, 4))) * z) = 0