Косая проекция в xna
Я пытаюсь добиться косой проекции ( http://en.wikipedia.org/wiki/Oblique_projection) в рамках xna:
float cos = (float)Math.Cos(DegreeToRadian(45)) * -1;
float sin = (float)Math.Sin(DegreeToRadian(45)) * -1;
Matrix obliqueProjection = new Matrix(
1, 0, cos, 0,
0, 1, sin, 0,
0, 0, 1, 0,
0, 0, 0, 1);
Matrix orthographicProjection = Matrix.CreateOrthographic(10, 10, -1, 100000);
projection = orthographicProjection*obliqueProjection;
Как вы можете видеть, я просто умножаю орфографию на наклонную проекцию.
Что я получаю, это:
http://imageshack.us/photo/my-images/835/oblique1.png/
Это в основном то, на что была бы похожа орфографическая проекция, но с некоторым странным далеко отсечением
Как я могу добиться правильной косой проекции? Спасибо заранее
2 ответа
Решение
Ответ от Дики: http://forums.create.msdn.com/forums/p/85032/513412.aspx
Код должен быть изменен следующим образом:
Matrix obliqueProjection = new Matrix(
1, 0, 0, 0,
0, 1, 0, 0,
cos, sin, 1, 0,
0, 0, 0, 1);
projection = obliqueProjection * orthographicProjection;
Для начала вы можете реализовать правильную формулу.
В статье в Википедии говорится, что матрица проекций использует 0.5 * cos
а также 0.5 * sin
в то время как ваша версия использует только cos
а также sin
,