Получение ориентации трехмерного объекта и выравнивание его параллельно Vector3D в WPF - PullRequest
0 голосов
/ 03 октября 2011

У меня есть проект WPF, в котором я импортировал код, представляющий трехмерную сцену, созданную в 3D Max Studio, а затем преобразованную с помощью инструмента в код XAML, который я могу использовать в WPF.

Итак, у меня есть Viewport3D и внутри него объект GeometryModel3D, представляющий прямоугольную призму. У меня есть две трехмерные точки (X, Y, Z), которые представляют начало и конец моего вектора.

То, что я хотел бы сделать, это просто выровнять призму параллельно моему Vector3D вдоль самой длинной стороны призмы. Я знаю кое-что о преобразованиях и переводах трехмерных объектов в коде, и у меня есть кое-какие знания в математике, моя самая большая проблема - получить ориентацию трехмерного объекта.

Мне бы хотелось как-нибудь определить вектор подъема объекта, потому что я думаю, что он мог бы мне помочь, и мне бы также хотелось как-то определить координаты основания и вершины объекта. призмы, чтобы я мог рассчитать вектор "направления" призмы.

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

Спасибо!

1 Ответ

0 голосов
/ 03 октября 2011

Я не знаю код о WPF на самом деле.Но я думаю, что это математическая задача.

Вы можете построить локальную матрицу для вектора.То есть, используя вектор, который вы хотите выровнять как вектор Z, и найдите другой вектор (который обычно является вектором, параллельным нижней стороне вашей призмы) как X, после этого сделайте перекрестное произведение Z, X, тогда вы получите Y.

Наконец, матрица M = [X, Y, Z].Если вы хотите аффинную матрицу, получите вектор положения призмы, установите его как T, тогда матрица будет M = [X, Y, Z, T]

, используя эту матрицу, преобразуйте вершины вашей призмы: v= Mv

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...