Используемый мной сторонний алгоритм создает следующую матрицу
| 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?
Спасибо