У меня есть определенная плоскость (которая оказывается ортогональной вектору, определяемому двумя точками xyz в трехмерном пространстве). Я могу спроецировать любую точку xyz на плоскость и представить эту проекцию координатного пространства uv. Я хотел бы взять произвольную точку в координатном пространстве uv и узнать, каковы ее координаты в пространстве xyz.
a = x2 - x1
b = y2 - y1
c = z2 - z1
d = -1*(a*x1 + b*y1 + c*z1)
magnitude = (a**2 + b**2 + c**2)**.5
u_magnitude = (b**2 + a**2)**.5
normal = [a/magnitude, b/magnitude, c/magnitude]
u = [b/u_magnitude, -a/u_magnitude, 0]
v = np.cross(normal, u)
p_u = np.dot(u,[x1,y1,z1])
p_v = np.dot(v,[x1,y1,z1])
Я считаю, что этот код точно создает нужную мне плоскость и назначит точку x1, y1, z1 в координатах uv для p_u, p_v. Я чувствую, что у меня есть все, что мне нужно, чтобы сделать обратную операцию, но я не знаю, как это сделать. Если у меня есть точка u0,v0, как мне найти x0,y0,z0, описывающую ее положение в трехмерном пространстве?