CMSC23700 Common Code Library
Support code for CS23700 programming projects
cs237-transform.hxx
Go to the documentation of this file.
1 
10 /*
11  * COPYRIGHT (c) 2013 John Reppy (http://cs.uchicago.edu/~jhr)
12  * All rights reserved.
13  */
14 
15 #ifndef _CS237_TRANSFORM_HXX_
16 #define _CS237_TRANSFORM_HXX_
17 
18 #ifndef _CS237_HXX_
19 #error "cs237-transform.hxx should not be included directly"
20 #endif
21 
22 namespace cs237 {
23 
26  template <typename T>
27  __detail::mat4x4<T> scale (T s);
28 
34  template <typename T>
35  __detail::mat4x4<T> scale (__detail::mat4x4<T> const &m, T s);
36 
39  template <typename T>
40  __detail::mat4x4<T> scale (__detail::vec3<T> const &s);
41 
47  template <typename T>
48  __detail::mat4x4<T> scale (__detail::mat4x4<T> const &m, __detail::vec3<T> const &s);
49 
52  template <typename T>
53  __detail::mat4x4<T> rotateX (T theta);
54 
60  template <typename T>
61  __detail::mat4x4<T> rotateX (__detail::mat4x4<T> const &m, T theta);
62 
65  template <typename T>
66  __detail::mat4x4<T> rotateY (T theta);
67 
73  template <typename T>
74  __detail::mat4x4<T> rotateY (__detail::mat4x4<T> const &m, T theta);
75 
78  template <typename T>
79  __detail::mat4x4<T> rotateZ (T theta);
80 
86  template <typename T>
87  __detail::mat4x4<T> rotateZ (__detail::mat4x4<T> const &m, T theta);
88 
92  template <typename T>
93  __detail::mat4x4<T> rotate (T theta, __detail::vec3<T> const &axis);
94 
99  template <typename T>
100  __detail::mat4x4<T> rotate (__detail::mat4x4<T> const &m, T theta, __detail::vec3<T> const &axis);
101 
104  template <typename T>
105  __detail::mat4x4<T> translate (__detail::vec3<T> const &offset);
106 
112  template <typename T>
113  __detail::mat4x4<T> translate (__detail::mat4x4<T> const &m, __detail::vec3<T> const &offset);
114 
120  template <typename T>
121  __detail::mat4x4<T> lookAt (
122  __detail::vec3<T> const &eye,
123  __detail::vec3<T> const &center,
124  __detail::vec3<T> const &up);
125 
135  template <typename T>
136  __detail::mat4x4<T> ortho (
137  T const &left, T const &right,
138  T const &bottom, T const &top,
139  T const &nearVal, T const &farVal);
140 
142  template <typename T>
143  __detail::mat4x4<T> ortho2D (T const &left, T const &right, T const &bottom, T const &top);
144 
151  template <typename T>
152  __detail::mat4x4<T> perspective (T const &fov, T const &aspect, T const &zNear, T const &zFar);
153 
155  template <typename T>
156  __detail::mat4x4<T> frustum (T const &left, T const &right, T const &bottom, T const &top, T const &nearVal, T const &farVal);
157 
158 } /* namespace cs237 */
159 
160 
161 #endif /* !_CS237_TRANSFORM_HXX_ */
__detail::mat4x4< T > perspective(T const &fov, T const &aspect, T const &zNear, T const &zFar)
specifies a perspective projection matrix
__detail::mat4x4< T > rotateX(T theta)
__detail::mat4x4< T > rotateZ(T theta)
__detail::mat4x4< T > rotate(T theta, __detail::vec3< T > const &axis)
__detail::mat4x4< T > ortho2D(T const &left, T const &right, T const &bottom, T const &top)
set up a transformation matrix that produces two-dimensional orthographic viewing region ...
__detail::mat4x4< T > lookAt(__detail::vec3< T > const &eye, __detail::vec3< T > const &center, __detail::vec3< T > const &up)
build a a viewing matrix derived from an eye point, a reference point indicating the center of the sc...
__detail::mat4x4< T > translate(__detail::vec3< T > const &offset)
Definition: cs237-aabb.hxx:18
__detail::mat4x4< T > scale(T s)
__detail::mat4x4< T > frustum(T const &left, T const &right, T const &bottom, T const &top, T const &nearVal, T const &farVal)
specifies a viewing frustum into the world coordinate system
__detail::mat4x4< T > ortho(T const &left, T const &right, T const &bottom, T const &top, T const &nearVal, T const &farVal)
__detail::mat4x4< T > rotateY(T theta)