Я строю 3D-симуляцию.
Я использую один класс для отображения Солнца, планет и Луны с разным размером, текстурой, скоростью и орбитой.Вот мой код, который выполняет магическую работу по вычислению вращения + оборота
world = Matrix.CreateScale(size,size,size) * Matrix.CreateTranslation(0,0,0) *
Matrix.CreateRotationY(rotation) *
Matrix.CreateTranslation(position) *
Matrix.CreateRotationY(revolution);
- размер - это моя переменная для индивидуального масштабирования объекта
- вращения - моя переменная для поворота объекта вокруг своей оси
- position - моя переменная для позиционирования планеты на орбите, новый Vector3 (240,0,0)
- революция - моя переменная, чтобы вращать планету вокруг источника
Теперь я хочу показать спутники вокруг Земли и вокруг других планет, но я просто не могу понять, каксделать это.С точки зрения умножения матриц.
Сложность в том, что вращение Луны происходит вокруг планеты, которая не имеет происхождения и постоянно меняется.
Как это сделать?