|
@@ -58,6 +58,25 @@ Matrix4.prototype.makeOrthographic = function ( left, right, top, bottom, near,
|
|
|
|
|
|
};
|
|
|
|
|
|
+Frustum.prototype.setFromProjectionMatrix = function( m ) {
|
|
|
+
|
|
|
+ const planes = this.planes;
|
|
|
+ const me = m.elements;
|
|
|
+ const me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];
|
|
|
+ const me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];
|
|
|
+ const me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];
|
|
|
+ const me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];
|
|
|
+
|
|
|
+ planes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();
|
|
|
+ planes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();
|
|
|
+ planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();
|
|
|
+ planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();
|
|
|
+ planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();
|
|
|
+ planes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();
|
|
|
+
|
|
|
+ return this;
|
|
|
+
|
|
|
+};
|
|
|
|
|
|
const _frustum = new Frustum();
|
|
|
const _projScreenMatrix = new Matrix4();
|