1

我试图在 xna 框架中实现倾斜投影( http://en.wikipedia.org/wiki/Oblique_projection ):

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/

它基本上是正交投影的样子,但有一些奇怪的远剪辑。

我怎样才能实现正确的斜投影?提前谢谢

4

2 回答 2

1

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;  
于 2011-06-21T06:54:49.747 回答
0

对于初学者,您可以实施正确的公式。

维基百科文章说投影矩阵使用0.5 * cosand0.5 * sin而您的版本只使用cosand sin

于 2011-06-18T09:34:05.780 回答