【发布时间】:2013-01-23 04:06:43
【问题描述】:
我有一个关于 3D 的小问题。
下面是我的问题的一个例子。
我有两点:
答: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;
}
你使用它: 角度(B.x - A.x,B.y - A.y,B.z - A.z, C.x - B.x, C.y - B.y, C.z - B.z);
【问题讨论】:
-
有无数种转换可以做到这一点。
-
目前他们的角度为 25.7663。我想对于 C.X、C.Y、C.Z,我必须将(?)点 C 变换 22.2337 度。如果这是正确的,我该怎么做?
-
你将如何解决 2D 问题?
-
你想做成哪个48度角?
-
Ignacio,如果我理解正确的话,我用来计算度数的公式有两个 48 度(-48 和 +48)。就我需要使用的方程式而言,我的问题的解决方案是否会有所不同,具体取决于我想要 -48 度还是 +48 度?或者我不明白你的问题。 :)
标签: c++ math 3d rotation trigonometry