Наклонная проекция в XNA
-
29-10-2019 - |
Вопрос
Я пытаюсь достичь косовой проекции ( http://en.wikipedia.org/wiki/oblique_procing) В рамках 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/
Это в основном какая орфографическая проекция будет выглядеть так, но с каким-то странным отсечением.
Как я могу добиться надлежащей наклонной проекции? THX заранее
Решение
Ответил Diki: http://forums.create.msdn.com/forums/p/85032/513412.aspx#513412
код должен быть изменен, как это:
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
.