我有一个从原点(0x,0y,0z)指向 3D 空间中某处的向量的大小。我也有一个角度,向量在 X 和 Z 轴上的投影在其自身和 Y 轴之间形成。换句话说,我有一个操纵杆,它读取 X 角(从 -35 到 35 度)用于左右移动和 Z 角(从 -35 到 35 度)用于前后移动。当操纵杆处于初始位置时,它返回 0。我得到一个幅度读数(绳子从操纵杆拉出多远)。我需要找到字符串末尾点的坐标(假设 1 厘米大小等于单位向量)。点将始终位于 xz 轴平面上方。幅度永远不会是 0。
我会很欣赏 Java 上的算法或一段代码,即使指向额外材料的链接也很好。有关于旋转角度和矩阵的问答,但看起来我有一个不同的问题。
UPD:角度不在矢量和 x、y、z 轴之间。它们是向量在轴上的投影与 Y 轴形成的角度。
UPD1:操纵杆可以左右前后移动:
+z
|
-x -- -- +x -x --'-- +x
|
-z
Top view Side view (along z-axis)
以及在中间有一个可扩展的字符串:
+z +s (+y)
| |
-x -- -- +x -x --'-- +x
|
-z
Top view Side view (along z-axis)
当字符串被扩展时,在 3D 中形成一个点 (P)
+z +y +y
| P | P | P
|/ | / | /
-x --/-- +x |/ |/
| -x --'-- +x -z --'-- +z
-z
Top view Side view Side view
(along z-axis) (along x-axis)
我收到以下格式的坐标:
- x-axis angle (call it alpha) [-1 1] in reality between [-35 and 35] degrees
- y-axis angle (call it theta) [-1 1] in reality between [-35 and 35] degrees
- magnitude of vector OP (call it magnitude) [-1 1] in reality between 0[ and 305] cm