Package com.io7m.jcamera

# Interface JCameraSphericalType

All Superinterfaces:
  `JCameraReadableType`, `JCameraSphericalReadableType`, `JCameraType`

All Known Implementing Classes:
  `JCameraSpherical`

public interface JCameraSphericalType extends JCameraType, JCameraSphericalReadableType

The type of spherical style flying cameras that point towards a given point `p` and allow for:

- Orbiting horizontally around `p`
- Orbiting vertically around `p`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `cameraClampInclineDisable()`
  Do not clamp rotations around the horizontal axis.
  `void`
  `cameraClampInclineEnable(double min, double max)`
  Clamp the possible rotations around the horizontal axis to the given bounds.
  `void`
  `cameraClampRadiusDisable()`
  Do not clamp the length of the radius.
  `void`
  `cameraClampRadiusEnable(double min, double max)`
  Clamp the length of the radius to the given bounds.
  `void`
  `cameraMoveTargetForwardOnXZ(double u)`
  Move the target point of the camera forward `u` units iff `u` is positive, or backward `u` units iff `u` is negative.
  `void`
  `cameraMoveTargetRight(double u)`
  Move the target point of the camera right `u` units iff `u` is positive, or left `u` units iff `u` is negative.
  `void`
  `cameraMoveTargetUp(double u)`
  Move the target point of the camera up `u` units iff `u` is positive, or down `u` units iff `u` is negative.
  `void`
  `cameraOrbitHeading(double r)`
  `boolean`
  `cameraOrbitIncline(double r)`
  `void`
  `cameraSetAngleHeading(double a)`
  Set the heading angle to `a`.
  `void`
  `cameraSetAngleIncline(double a)`
  Set the incline angle to `a`.
  `void`
  `cameraSetTargetPosition(com.io7m.jtensors.core.unparameterized.vectors.Vector3D v)`
  Set the position of the target point of camera.
  `void`
  `cameraSetTargetPosition3(double x, double y, double z)`
  Set the position of the target point of camera.
  `void`
  `cameraSetZoom(double r)`
  Set the zoom (or radius) of the camera to `r`.
  `boolean`
  `cameraZoomIn(double r)`
  Zoom in the camera by reducing the radius of the sphere.
  `boolean`
  `cameraZoomOut(double r)`
  Zoom out the camera by increasing the radius of the sphere.

  ### Methods inherited from interface com.io7m.jcamera.JCameraReadableType

  `cameraMakeViewMatrix, cameraMakeViewPMatrix`

  ### Methods inherited from interface com.io7m.jcamera.JCameraSphericalReadableType

  `cameraGetAngleHeading, cameraGetAngleIncline, cameraGetForward, cameraGetForwardProjectedOnXZ, cameraGetPosition, cameraGetRight, cameraGetTargetPosition, cameraGetUp, cameraGetZoom`

- ## Method Details

  - ### cameraClampInclineDisable

    void cameraClampInclineDisable()
    Do not clamp rotations around the horizontal axis.
    See Also:
      - `cameraClampInclineEnable(double, double)`

  - ### cameraClampInclineEnable

    void cameraClampInclineEnable(double min, double max)
    Clamp the possible rotations around the horizontal axis to the given bounds.
    Parameters:
      `min` - The minimum angle
      `max` - The maximum angle

  - ### cameraClampRadiusDisable

    void cameraClampRadiusDisable()
    Do not clamp the length of the radius.
    See Also:
      - `cameraClampRadiusEnable(double, double)`

  - ### cameraClampRadiusEnable

    void cameraClampRadiusEnable(double min, double max)
    Clamp the length of the radius to the given bounds.
    Parameters:
      `min` - The minimum length
      `max` - The maximum length

  - ### cameraMoveTargetForwardOnXZ

    void cameraMoveTargetForwardOnXZ(double u)

    Move the target point of the camera forward `u` units iff `u` is positive, or backward `u` units iff `u` is negative.

    The forward direction, in this case, means the current view direction projected onto the X/Z plane. This means that the camera will not move along the Y axis.

    Parameters:
      `u` - The units to move

  - ### cameraMoveTargetRight

    void cameraMoveTargetRight(double u)

    Move the target point of the camera right `u` units iff `u` is positive, or left `u` units iff `u` is negative.

    The right direction, in this case, means the direction perpendicular to the current view direction, `-π / 2` radians around the global Y axis.

    Parameters:
      `u` - The units to move

  - ### cameraMoveTargetUp

    void cameraMoveTargetUp(double u)

    Move the target point of the camera up `u` units iff `u` is positive, or down `u` units iff `u` is negative.

    The up direction, in this case, means the direction towards positive infinity on the global Y axis.

    Parameters:
      `u` - The units to move

  - ### cameraOrbitHeading

    void cameraOrbitHeading(double r)
    Parameters:
      `r` - The radians to rotate

  - ### cameraOrbitIncline

    boolean cameraOrbitIncline(double r)
    Parameters:
      `r` - The radians to orbit
    Returns:
      `true` if the rotation has been clamped
    See Also:
      - `cameraClampInclineEnable(double, double)`

  - ### cameraSetAngleHeading

    void cameraSetAngleHeading(double a)
    Set the heading angle to `a`.
    Parameters:
      `a` - The angle.

  - ### cameraSetAngleIncline

    void cameraSetAngleIncline(double a)
    Set the incline angle to `a`.
    Parameters:
      `a` - The angle.

  - ### cameraSetTargetPosition

    void cameraSetTargetPosition(com.io7m.jtensors.core.unparameterized.vectors.Vector3D v)
    Set the position of the target point of camera.
    Parameters:
      `v` - The position.

  - ### cameraSetTargetPosition3

    void cameraSetTargetPosition3(double x, double y, double z)
    Set the position of the target point of camera.
    Parameters:
      `x` - The x coordinate.
      `y` - The y coordinate.
      `z` - The z coordinate.

  - ### cameraSetZoom

    void cameraSetZoom(double r)
    Set the zoom (or radius) of the camera to `r`.
    Parameters:
      `r` - The camera radius.

  - ### cameraZoomIn

    boolean cameraZoomIn(double r)
    Zoom in the camera by reducing the radius of the sphere.
    Parameters:
      `r` - The amount by which to reduce the radius
    Returns:
      `true` if the radius has been clamped
    See Also:
      - `cameraClampRadiusEnable(double, double)`

  - ### cameraZoomOut

    boolean cameraZoomOut(double r)
    Zoom out the camera by increasing the radius of the sphere.
    Parameters:
      `r` - The amount by which to increase the radius
    Returns:
      `true` if the radius has been clamped
    See Also:
      - `cameraClampRadiusEnable(double, double)`