CameraExtrinsics

CameraExtrinsics defines the 6-DoF position and orientation of a camera in the 3D padel court coordinate system.

6-DoF CameraExtrinsics Pose and Viewing Frustum
6-DoF camera pose in 3D court coordinates showing optical center position, look-at optical axis, and frustum planes.

Properties

  • Name
    position
    Type
    tuple[float, float, float]
    Description

    3D world coordinates (X, Y, Z) of the camera optical center in meters.

  • Name
    rotation_matrix
    Type
    tuple[tuple[float, float, float], ...]
    Description

    3x3 orthogonal world-to-camera rotation matrix R in OpenCV convention.

  • Name
    R
    Type
    np.ndarray
    Description

    3x3 world-to-camera rotation matrix as a NumPy float64 array.

  • Name
    t
    Type
    np.ndarray
    Description

    3D world-to-camera translation vector t = -R @ center.

  • Name
    forward
    Type
    tuple[float, float, float]
    Description

    Unit optical axis vector (+Z_cam) in world coordinates.

  • Name
    up
    Type
    tuple[float, float, float]
    Description

    Unit vector pointing upwards in the image (-Y_cam) in world coordinates.

  • Name
    right
    Type
    tuple[float, float, float]
    Description

    Unit vector pointing right (+X_cam) in world coordinates.

  • Name
    world_to_camera_matrix
    Type
    np.ndarray
    Description

    4x4 homogeneous world-to-camera transformation matrix (OpenCV convention).

  • Name
    opengl_camera_to_world_matrix
    Type
    np.ndarray
    Description

    4x4 camera-to-world transformation matrix in OpenGL / Three.js / Blender convention (+X right, +Y up, -Z forward).


classmethodCameraExtrinsics.from_look_at()

Look-At Initialization

Creates a CameraExtrinsics instance placed at position and oriented directly towards target. Automatically resolves zenith singularities when looking straight down (-Z).

Arguments

  • Name
    position
    Type
    tuple[float, float, float] | Sequence[float]
    Description

    Camera position (X, Y, Z) in meters.

  • Name
    target
    Type
    tuple[float, float, float] | Sequence[float]
    Description

    3D target point (X, Y, Z) the optical axis points at.

  • Name
    roll_deg
    Type
    float
    Description

    Optional camera roll angle around the optical axis in degrees.

Usage

classmethod
from_look_at
from padelkit import CameraExtrinsics

extr = CameraExtrinsics.from_look_at(
    position=(0.0, -13.8, 5.8),
    target=(0.0, 0.0, 0.5),
)

classmethodCameraExtrinsics.from_euler()

Euler Angles Initialization

Creates a CameraExtrinsics instance from pan (yaw_deg), tilt (pitch_deg), and roll (roll_deg) angles.

  • yaw_deg = 0 points along +Y (from near to far side).
  • Negative pitch_deg tilts the camera downwards towards the floor.

Usage

classmethod
from_euler
from padelkit import CameraExtrinsics

extr = CameraExtrinsics.from_euler(
    position=(0.0, -13.5, 5.5),
    yaw_deg=0.0,
    pitch_deg=-22.0,
    roll_deg=0.0,
)

Was this page helpful?