我有一个关于3D问题的小问题。
以下是我的问题示例。
我有两个点:
A: 12 4 5 B: 6 8 -10
我还有另一个点:
C: 5 6 7
我需要转换点C,使角度ABC为48度。
我该怎么做?如果有人能帮我提供公式或者甚至把上面的示例变成可行的解决方案,我将非常感激。
换句话说:如何转换C.x、C.y和C.z,使得角度ABC为48度?
我真的很需要一些帮助,因为我现在被卡住了。
附注: 我已经实现了一种计算角度的方法:
float Angle( float x1, float y1, float z1,
float x2, float y2, float z2 )
{
float x, y, z;
CrossProduct( x1, y1, z1, x2, y2, z2, &x, &y, &z );
float result = atan2 ( L2Norm( x, y, z ),
DotProduct( x1, y1, z1, x2, y2, z2 ) );
return result;
}
你可以这样使用它: Angle(B.x - A.x,B.y - A.y,B.z - A.z, C.x - B.x,C.y - B.y,C.z - B.z);