MatrixD.frustum constructor

MatrixD.frustum(
  1. double left,
  2. double right,
  3. double bottom,
  4. double top,
  5. double nearPlane,
  6. double farPlane,
)

Implementation

factory MatrixD.frustum(
  double left,
  double right,
  double bottom,
  double top,
  double nearPlane,
  double farPlane,
) {
  MatrixD result = .zero();

  final rl = right - left;
  final tb = top - bottom;
  final fn = farPlane - nearPlane;

  result.m0 = (nearPlane*2.0)/rl;
  result.m5 = (nearPlane*2.0)/tb;
  result.m8 = (right + left)/rl;
  result.m9 = (top + bottom)/tb;
  result.m10 = -(farPlane + nearPlane)/fn;
  result.m11 = -1.0;
  result.m14 = -(farPlane*nearPlane*2.0)/fn;

  return result;
}