Class FovHVHalves

java.lang.Object
com.jogamp.opengl.math.FovHVHalves

public final class FovHVHalves extends Object
Horizontal and vertical field of view (FOV) halves, allowing a non-centered projection.

The values might be either in tangent or radians.

  • Field Details

    • left

      public final float left
      Half horizontal FOV from center to left, either in inTangents or radians.
    • top

      public final float top
      Half vertical FOV from center to top, either in inTangents or radians.
    • bottom

      public final float bottom
      Half vertical FOV from center to bottom, either in inTangents or radians.
    • inTangents

      public final boolean inTangents
      If true, values are in tangent, otherwise radians.
  • Constructor Details

    • FovHVHalves

      public FovHVHalves(float left, float right, float top, float bottom, boolean inTangents)
      Constructor for one FovHVHalves instance.

      It is recommended to pass and store values in tangent if used for perspective FOV calculations, since it will avoid conversion to tangent later on.

      Parameters:
      left - half horizontal FOV, left side, in tangent or radians
      right - half horizontal FOV, right side, in tangent or radians
      top - half vertical FOV, top side, in tangent or radians
      bottom - half vertical FOV, bottom side, in tangent or radians
      inTangents - if true, values are in tangent, otherwise radians
  • Method Details

    • byRadians

      public static FovHVHalves byRadians(float horizontalFov, float verticalFov)
      Returns a symmetrical centered FovHVHalves instance in inTangents, using:
              halfHorizFovTan = tan( horizontalFov / 2f );
              halfVertFovTan  = tan( verticalFov / 2f );
       
      Parameters:
      horizontalFov - whole horizontal FOV in radians
      verticalFov - whole vertical FOV in radians
    • byFovyRadianAndAspect

      public static FovHVHalves byFovyRadianAndAspect(float verticalFov, float aspect)
      Returns a symmetrical centered FovHVHalves instance in inTangents, using:
              top  = bottom = tan( verticalFov / 2f );
              left =  right = aspect * top;
       
      Parameters:
      verticalFov - vertical FOV in radians
      aspect - aspect ration width / height
    • byRadians

      public static FovHVHalves byRadians(float horizontalFov, float horizCenterFromLeft, float verticalFov, float vertCenterFromTop)
      Returns a custom symmetry FovHVHalves instance inTangents, using:
              left   = tan( horizontalFov * horizCenterFromLeft )
              right  = tan( horizontalFov * ( 1f - horizCenterFromLeft ) )
              top    = tan( verticalFov   * vertCenterFromTop )
              bottom = tan( verticalFov   * (1f - vertCenterFromTop ) )
       
      Parameters:
      horizontalFov - whole horizontal FOV in radians
      horizCenterFromLeft - horizontal center from left in [0..1]
      verticalFov - whole vertical FOV in radians
      vertCenterFromTop - vertical center from top in [0..1]
    • byFovyRadianAndAspect

      public static FovHVHalves byFovyRadianAndAspect(float verticalFov, float vertCenterFromTop, float aspect, float horizCenterFromLeft)
      Returns a custom symmetry FovHVHalves instance inTangents, via computing the horizontalFov using:
              halfVertFovTan  = tan( verticalFov / 2f );
              halfHorizFovTan = aspect * halfVertFovTan;
              horizontalFov   = atan( halfHorizFovTan ) * 2f;
              return byRadians(horizontalFov, horizCenterFromLeft, verticalFov, vertCenterFromTop)
       
      Parameters:
      verticalFov - whole vertical FOV in radians
      vertCenterFromTop - vertical center from top in [0..1]
      aspect - aspect ration width / height
      horizCenterFromLeft - horizontal center from left in [0..1]
    • toTangents

      public final FovHVHalves toTangents()
      Returns this instance in tangent values.

      If this instance is inTangents already, method returns this instance, otherwise a newly created instance w/ converted values to tangent.

    • horzFov

      public final float horzFov()
      Returns the full horizontal FOV, i.e. left + right, either in inTangents or radians.
    • vertFov

      public final float vertFov()
      Returns the full vertical FOV, i.e. top + bottom, either in inTangents or radians.
    • toString

      public final String toString()
      Overrides:
      toString in class Object
    • toStringInDegrees

      public final String toStringInDegrees()