我有一个 3D 盒子:center point = (a,b,c)
, width = w
, height = h
, depth = d
.
中心点不是原点。
我在盒子上有一个球(互相接触),它的center
和radius
。
我可以旋转盒子(围绕 X 轴,但它的中心保持不变..),我希望球粘在盒子上。所以球需要和盒子一起旋转。
旋转角度为 45 度。
我试图这样做:
我定义了围绕 X 轴的旋转矩阵:
mat[3][3]
1, 0 , 0
0, cos(45), -sin(45)
0, sin(45), cos(45)
并乘以球中心向量:
(ball.Center().m_x , ball.Center().m_y, ball.Center().m_z) * mat
所以我得到了:
Point3D new_center(ball.Center().m_x,
ball.Center().m_y*cos(45) + ball.Center().m_z*sin(45),
-(ball.Center().m_y)*sin(45) + ball.Center().m_z*cos(45));
ball.Center() = new_center;
当盒子旋转但太远时,球确实旋转了。我该如何解决?