• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef ANDROID_DVR_ORTHO_H_
2 #define ANDROID_DVR_ORTHO_H_
3 
4 #include <private/dvr/types.h>
5 
6 namespace android {
7 namespace dvr {
8 
9 template <class T>
OrthoMatrix(T left,T right,T bottom,T top,T znear,T zfar)10 Eigen::AffineMatrix<T, 4> OrthoMatrix(T left, T right, T bottom, T top,
11                                       T znear, T zfar) {
12   Eigen::AffineMatrix<T, 4> result;
13   const T t2 = static_cast<T>(2);
14   const T a = t2 / (right - left);
15   const T b = t2 / (top - bottom);
16   const T c = t2 / (zfar - znear);
17   const T xoff = -(right + left) / (right - left);
18   const T yoff = -(top + bottom) / (top - bottom);
19   const T zoff = -(zfar + znear) / (zfar - znear);
20   const T t1 = static_cast<T>(1);
21   result.matrix() << a, 0, 0, xoff,
22             0, b, 0, yoff,
23             0, 0, c, zoff,
24             0, 0, 0, t1;
25   return result;
26 }
27 
28 }  // namespace android
29 }  // namespace dvr
30 
31 #endif  // ANDROID_DVR_ORTHO_H_
32