From a57935ccea01a58acc2117007aa1ea0fe594d373 Mon Sep 17 00:00:00 2001 From: Brendan Zabarauskas Date: Sun, 7 Apr 2013 23:04:54 +1000 Subject: [PATCH] Clean up 'orthographic' function and rename to 'ortho' --- src/projection.rs | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/projection.rs b/src/projection.rs index 85c2d72..df08fea 100644 --- a/src/projection.rs +++ b/src/projection.rs @@ -68,14 +68,33 @@ pub fn frustum + Add + Sub + * (http://www.opengl.org/sdk/docs/man2/xhtml/glOrtho.xml) function. */ #[inline(always)] -pub fn orthographic + Add + Sub + Mul + Div + Neg>(left: T, right: T, bottom: T, top: T, near: T, far: T) -> Mat4 { +pub fn ortho + Add + Sub + Mul + Div + Neg>(left: T, right: T, bottom: T, top: T, near: T, far: T) -> Mat4 { let _0: T = num::cast(0); let _1: T = num::cast(1); let _2: T = num::cast(2); - BaseMat4::new(_2 / (right - left), _0, _0, _0, - _0, _2 / (top - bottom), _0, _0, - _0, _0, -_2 / (far - near), _0, - -(right + left) / (right - left), -(top + bottom) / (top - bottom), - -(far + near) / (far - near), _1) + let c0r0 = _2 / (right - left); + let c0r1 = _0; + let c0r2 = _0; + let c0r3 = -(right + left) / (right - left); + + let c1r0 = _0; + let c1r1 = _2 / (top - bottom); + let c1r2 = _0; + let c1r3 = -(top + bottom) / (top - bottom); + + let c2r0 = _0; + let c2r1 = _0; + let c2r2 = -_2 / (far - near); + let c2r3 = -(far + near) / (far - near); + + let c3r0 = _0; + let c3r1 = _0; + let c3r2 = _0; + let c3r3 = _1; + + BaseMat4::new(c0r0, c0r1, c0r2, c0r3, + c1r0, c1r1, c1r2, c1r3, + c2r0, c2r1, c2r2, c2r3, + c3r0, c3r1, c3r2, c3r3) }