Матрицы C # XNA - определение текущего местоположения после умножения матриц

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

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

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

Теперь он действительно отлично работает.

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

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

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


person Moon    schedule 23.05.2011    source источник
comment
извините, я не знаю world.Translation, то есть Matrix.translation ... пожалуйста, научите   -  person Moon    schedule 23.05.2011
comment
Я добавил ответ с еще несколькими подробностями. Дайте мне знать, если вам понадобится больше.   -  person fire.eagle    schedule 23.05.2011


Ответы (1)


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

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

Vector3 newPosition = world.Translation;

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

person fire.eagle    schedule 23.05.2011