-
29-10-2019 - |
题
我试图实现斜投影( 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/
它基本上是正投影的样子,但有一些奇怪的远剪。
如何实现正确的斜投影?提前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
.
不隶属于 StackOverflow