Я сейчас пытаюсь обернуть голову вокруг WPF, и я нахожусь на этапе преобразования между координатными пространствами с структурами Matrix3D.Является ли функция WPF Matrix3D.Rotate() непримиримой?
После того, как WPF имеет разницу между Point3D и Vector3D (это два часа, я никогда не вернусь ...) Я могу получить матрицу перевода. Теперь я пытаюсь ввести матрицу вращения, но, похоже, это дает незыблемые результаты. Вот мой код для моего мира преобразования координат ...
private Point3D toWorldCoords(int x, int y)
{
Point3D inM = new Point3D(x, y, 0);
//setup matrix for screen to world
Screen2World = Matrix3D.Identity;
Screen2World.Translate(new Vector3D(-200, -200, 0));
Screen2World.Rotate(new Quaternion(new Vector3D(0, 0, 1), 90));
//do the multiplication
Point3D outM = Point3D.Multiply(inM, Screen2World);
//return the transformed point
return new Point3D(outM.X, outM.Y, m_ZVal);
}
перевод, кажется, работает хорошо, поворот на 90 градусов, однако, кажется, вернуться inaacuracies с плавающей точкой. Строка смещения матрицы, кажется, отключена небольшим фактором (0,000001 в любом случае), который производит наложение на визуализацию. Есть что-то, чего я здесь не хватает, или мне просто нужно вручную обойти матрицу?
Приветствия