Package com.jogamp.opengl.math
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 Summary
Fields Modifier and Type Field Description float
bottom
Half vertical FOV from center to bottom, either ininTangents
or radians.boolean
inTangents
If true, values are in tangent, otherwise radians.float
left
Half horizontal FOV from center to left, either ininTangents
or radians.float
right
Half horizontal FOV from center to right, either ininTangents
or radians.float
top
Half vertical FOV from center to top, either ininTangents
or radians.
-
Constructor Summary
Constructors Constructor Description FovHVHalves(float left, float right, float top, float bottom, boolean inTangents)
Constructor for oneFovHVHalves
instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static FovHVHalves
byFovyRadianAndAspect(float verticalFov, float aspect)
Returns a symmetrical centeredFovHVHalves
instance ininTangents
, using:static FovHVHalves
byFovyRadianAndAspect(float verticalFov, float vertCenterFromTop, float aspect, float horizCenterFromLeft)
static FovHVHalves
byRadians(float horizontalFov, float verticalFov)
Returns a symmetrical centeredFovHVHalves
instance ininTangents
, using:static FovHVHalves
byRadians(float horizontalFov, float horizCenterFromLeft, float verticalFov, float vertCenterFromTop)
Returns a custom symmetryFovHVHalves
instanceinTangents
, using:float
horzFov()
Returns the full horizontal FOV, i.e.String
toString()
String
toStringInDegrees()
FovHVHalves
toTangents()
Returns this instance in tangent values.float
vertFov()
Returns the full vertical FOV, i.e.
-
-
-
Field Detail
-
left
public final float left
Half horizontal FOV from center to left, either ininTangents
or radians.
-
right
public final float right
Half horizontal FOV from center to right, either ininTangents
or radians.
-
top
public final float top
Half vertical FOV from center to top, either ininTangents
or radians.
-
bottom
public final float bottom
Half vertical FOV from center to bottom, either ininTangents
or radians.
-
inTangents
public final boolean inTangents
If true, values are in tangent, otherwise radians.
-
-
Constructor Detail
-
FovHVHalves
public FovHVHalves(float left, float right, float top, float bottom, boolean inTangents)
Constructor for oneFovHVHalves
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 radiansright
- half horizontal FOV, right side, in tangent or radianstop
- half vertical FOV, top side, in tangent or radiansbottom
- half vertical FOV, bottom side, in tangent or radiansinTangents
- if true, values are in tangent, otherwise radians
-
-
Method Detail
-
byRadians
public static FovHVHalves byRadians(float horizontalFov, float verticalFov)
Returns a symmetrical centeredFovHVHalves
instance ininTangents
, using:halfHorizFovTan = tan( horizontalFov / 2f ); halfVertFovTan = tan( verticalFov / 2f );
- Parameters:
horizontalFov
- whole horizontal FOV in radiansverticalFov
- whole vertical FOV in radians
-
byFovyRadianAndAspect
public static FovHVHalves byFovyRadianAndAspect(float verticalFov, float aspect)
Returns a symmetrical centeredFovHVHalves
instance ininTangents
, using:top = bottom = tan( verticalFov / 2f ); left = right = aspect * top;
- Parameters:
verticalFov
- vertical FOV in radiansaspect
- aspect ration width / height
-
byRadians
public static FovHVHalves byRadians(float horizontalFov, float horizCenterFromLeft, float verticalFov, float vertCenterFromTop)
Returns a custom symmetryFovHVHalves
instanceinTangents
, 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 radianshorizCenterFromLeft
- horizontal center from left in [0..1]verticalFov
- whole vertical FOV in radiansvertCenterFromTop
- vertical center from top in [0..1]
-
byFovyRadianAndAspect
public static FovHVHalves byFovyRadianAndAspect(float verticalFov, float vertCenterFromTop, float aspect, float horizCenterFromLeft)
Returns a custom symmetryFovHVHalves
instanceinTangents
, via computing thehorizontalFov
using:halfVertFovTan = tan( verticalFov / 2f ); halfHorizFovTan = aspect * halfVertFovTan; horizontalFov = atan( halfHorizFovTan ) * 2f; return
byRadians
(horizontalFov, horizCenterFromLeft, verticalFov, vertCenterFromTop)- Parameters:
verticalFov
- whole vertical FOV in radiansvertCenterFromTop
- vertical center from top in [0..1]aspect
- aspect ration width / heighthorizCenterFromLeft
- 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()
-
vertFov
public final float vertFov()
-
toStringInDegrees
public final String toStringInDegrees()
-
-