C # XNA Matrices - узнать текущее местоположение после умножения матриц - PullRequest
2 голосов
/ 23 мая 2011

Я делаю 3D-моделирование Солнечной системы

для каждой планеты у меня есть экземпляр класса Небесное Тело . Я использую следующий код для вращения и вращения Солнца, планет и их лун.

world = Matrix.CreateTranslation(0,0,0) * Matrix.CreateRotationY(rotation) * Matrix.CreateTranslation(position) * Matrix.CreateRotationY(revolution); 
  • Вращение - это моя переменная с плавающей точкой для вращения планеты вокруг своей оси
  • Революция - моя переменная с плавающей точкой для обращения планеты на орбите
  • соответствует моей переменной vector3, чтобы поместить тело на орбиту или в радиус от центра, например, postion = new Vector3(70,0,0)

Теперь все работает очень хорошо.

Но проблема в том, что мне нужно найти \ получить положение моей планеты, куда она была переведена после умножения Матрицы буквально в координатах x, y, x.

Как? получить текущие координаты X, Y, Z моей планеты

другой вариант для меня - использовать математическую формулу, которая рассчитывает для меня двумерный круг.

1 Ответ

5 голосов
/ 23 мая 2011

Я думаю, что вы ищете Matrix.Translation. Это дает вам координаты x, y, z матрицы, для которой она вызывается в Vector3.

Итак, чтобы получить новую позицию, вы должны использовать

Vector3 newPosition = world.Translation;

после ваших расчетов.

...