У меня есть 3D-коробка: center point = (a,b,c)
, width = w
, height = h
, depth = d
.Вращающаяся матрица - вращайте шар вокруг вращающейся коробки
Центральная точка не является источником.
У меня есть шар на коробке (коснитесь друг друга), его center
и radius
.
Я могу повернуть коробку (вокруг оси X, но ее центр STAYS тот же ..), и я хочу, чтобы мяч оставался прикрепленным к коробке. так что мяч должен быть повернут с коробкой.
угол поворота составляет 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;
шар действительно вращается, когда коробка вращается, но слишком далеко. Как я могу это исправить?
спасибо !!!!!! он работает сейчас:]] вы сделали это! Я вижу, что я не могу опубликовать окончательный ответ здесь (комментарии слишком короткие), поэтому я опубликую его в новом сообщении. –