Math 如何计算点P在三维空间中的位置?

Math 如何计算点P在三维空间中的位置?,math,vector,3d,geometry,Math,Vector,3d,Geometry,如下图所示,给定点O、A、B和α,如何获得点p在3D空间中的位置 提前谢谢! 让我们来看看向量 b = B - O a = A - O p = P - O 似乎最简单的方法是在向量b和a之间使用。 首先找到向量b和a之间的角度ω(例如,通过点积),然后应用SLERP p = Sin(Omega - Alpha) * b / Sin(Omega) + Sin(Alpha) * a / Sin(Omega) 另一种方法-您可以找到旋转轴的矢量(垂直于圆平面),如下所示 然后使用得到 p= p

如下图所示,给定点O、A、B和α,如何获得点p在3D空间中的位置

提前谢谢! 让我们来看看向量

b = B - O
a = A - O
p = P - O
似乎最简单的方法是在向量b和a之间使用。 首先找到向量b和a之间的角度ω(例如,通过点积),然后应用SLERP

p = Sin(Omega - Alpha) * b / Sin(Omega) + Sin(Alpha) * a / Sin(Omega)

另一种方法-您可以找到旋转轴的矢量(垂直于圆平面),如下所示


然后使用得到<代码> p= p o向量

这是一个数学问题,不是C++问题。以PythGracas定理,<代码> DIST=SqRT((x1-x0)^ 2(y1-y0)^ 2)< /> >并且只为“代码> z</COD> > USER(28),而实际上,我需要计算P(x,y,z)的位置而不是DIST,圆圈的半径是已知的。我投票结束这个问题,因为它不是关于编程或软件开发。谢谢你的回答,我认为SLERP是我需要的。顺便说一句,在我的例子中,ω是90度,但我如何确定α,a和b的关系呢。换句话说,p可以是“Sin(Omega-Alpha)*b/Sin(Omega)+Sin(Alpha)*a/Sin(Omega)”或“Sin(Omega-Alpha)*a/Sin(Omega)+Sin(Alpha)*b/Sin(Omega)”。我说的对吗?从b到a的旋转-第一个变体(像我的一样)。检查很简单-对于alpha=0,p将等于b,对于alpha=90,p将等于a。这很好。谢谢。
k = b x a //vector product
k = k.Normalized  //unit vector