|
From: <pat...@us...> - 2013-08-17 12:58:29
|
Revision: 1286
http://sourceforge.net/p/ggt/code/1286
Author: patrickh
Date: 2013-08-17 12:58:27 +0000 (Sat, 17 Aug 2013)
Log Message:
-----------
Follow-up to r1284: include modifying the plane offsets by
the unnormalized lenghts.
Submitted by: Paul Martz
Revision Links:
--------------
http://sourceforge.net/p/ggt/code/1284
Modified Paths:
--------------
trunk/gmtl/Frustum.h
Modified: trunk/gmtl/Frustum.h
===================================================================
--- trunk/gmtl/Frustum.h 2013-07-29 20:26:20 UTC (rev 1285)
+++ trunk/gmtl/Frustum.h 2013-08-17 12:58:27 UTC (rev 1286)
@@ -114,48 +114,49 @@
const gmtl::Matrix<DATA_TYPE, 4, 4>& m = projMatrix;
gmtl::Vec<DATA_TYPE, 3> n;
+ DATA_TYPE len;
//left
n = (gmtl::Vec<DATA_TYPE, 3>(m[3][0] + m[0][0],
m[3][1] + m[0][1],
m[3][2] + m[0][2]));
- normalize( n );
+ len = normalize( n );
mPlanes[PLANE_LEFT].setNormal( n );
- mPlanes[PLANE_LEFT].setOffset(m[3][3] + m[0][3]);
+ mPlanes[PLANE_LEFT].setOffset( (m[3][3] + m[0][3]) / len );
//right
n = gmtl::Vec<DATA_TYPE, 3>(m[3][0] - m[0][0],
m[3][1] - m[0][1],
m[3][2] - m[0][2]);
- normalize( n );
+ len = normalize( n );
mPlanes[PLANE_RIGHT].setNormal( n );
- mPlanes[PLANE_RIGHT].setOffset(m[3][3] - m[0][3]);
+ mPlanes[PLANE_RIGHT].setOffset( (m[3][3] - m[0][3]) / len );
//bottom
n = gmtl::Vec<DATA_TYPE, 3>(m[3][0] + m[1][0],
m[3][1] + m[1][1],
m[3][2] + m[1][2]);
- normalize( n );
+ len = normalize( n );
mPlanes[PLANE_BOTTOM].setNormal( n );
- mPlanes[PLANE_BOTTOM].setOffset(m[3][3] + m[1][3]);
+ mPlanes[PLANE_BOTTOM].setOffset( (m[3][3] + m[1][3]) / len );
//top
n = gmtl::Vec<DATA_TYPE, 3>(m[3][0] - m[1][0],
m[3][1] - m[1][1],
m[3][2] - m[1][2]);
- normalize( n );
+ len = normalize( n );
mPlanes[PLANE_TOP].setNormal( n );
- mPlanes[PLANE_TOP].setOffset(m[3][3] - m[1][3]);
+ mPlanes[PLANE_TOP].setOffset( (m[3][3] - m[1][3]) / len );
//near
n = gmtl::Vec<DATA_TYPE, 3>(m[3][0] + m[2][0],
m[3][1] + m[2][1],
m[3][2] + m[2][2]);
- normalize( n );
+ len = normalize( n );
mPlanes[PLANE_NEAR].setNormal( n );
- mPlanes[PLANE_NEAR].setOffset(m[2][3] + m[3][3]);
+ mPlanes[PLANE_NEAR].setOffset( (m[2][3] + m[3][3]) / len );
//far
n = gmtl::Vec<DATA_TYPE, 3>(m[3][0] - m[2][0],
m[3][1] - m[2][1],
m[3][2] - m[2][2]);
- normalize( n );
+ len = normalize( n );
mPlanes[PLANE_FAR].setNormal( n );
- mPlanes[PLANE_FAR].setOffset(m[3][3] - m[2][3]);
+ mPlanes[PLANE_FAR].setOffset( (m[3][3] - m[2][3]) / len );
}
gmtl::Plane<DATA_TYPE> mPlanes[6];
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|