Применить преобразование Matrix3D к 2D-точке в Silverlight - PullRequest
1 голос
/ 23 июня 2011

Используемый мной сторонний алгоритм создает следующую матрицу

|   355,78 :   -12,33 :    ,02 :    ,02 |
|    39,69 :   378,26 :    ,08 :    ,08 |
|  -145,43 :   -61,32 :   -,49 :   -,49 |
| 75610,61 : 25380,20 : 385,12 : 386,92 |

Что помещает FrameworkElement в правильное место, если я использую его в качестве проекции:

player.Graphic.Projection = new Matrix3DProjection { ProjectionMatrix = m };

Но это также вращает и наклоняет элемент, и мне нужно только переместить элемент в правильные 2D-координаты.

Я использую следующий код, который нашел здесь: http://www.gamespp.com/tutorials/matrixTransformationTutorial04.html

double x0 = 100, y0 = 100, z0 = 0;
var x1 = x0 * m.M11 + y0 * m.M12 + z0 * m.M13 + m.OffsetX;
var y1 = x0 * m.M21 + y0 * m.M22 + z0 * m.M23 + m.OffsetY;

z0 не нужен, поскольку он всегда равен нулю, но я оставил его там на всякий случай.

Это дает x1 = 109954,75 и y1 = 67175,64, что явно неверно. Должно сгенерировать что-то похожее на mx = 298 и my = 162 (это позиция мыши, когда была применена проекция)

Как вы можете преобразовать координаты X, Y, используя Matrix3D?

Спасибо

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