Class PerspectiveCamera
Perspective camera class for 3D rendering.
Provides a perspective projection camera with configurable field of view, aspect ratio, and near/far clipping planes. Supports view transformations and coordinate conversions.
Fields
| perspectivecamera.m_projection | Projection matrix for perspective transformation. | 
| perspectivecamera.m_inv_projection | Inverse projection matrix. | 
| perspectivecamera.m_view | View matrix computed from eye, center, and up vectors. | 
| perspectivecamera.center | Position where the camera is looking at. | 
| perspectivecamera.eye | Position of the camera in world space. | 
| perspectivecamera.up | Normalized up vector defining camera orientation. | 
Methods
| perspectivecamera:init (fov, aspect, nclip, fclip) | Creates a new PerspectiveCamera instance. | 
| perspectivecamera:update_view_matrix () | Updates the view matrix based on current eye, center, and up vectors. | 
| perspectivecamera:screen_point_to_ray (x, y, viewport) | Generates a ray from the camera through a screen point. | 
| perspectivecamera:world_to_screen_point (x, y, z, viewport) | Transforms a position from world space into screen space. | 
| perspectivecamera:get_direction () | Gets the normalized direction vector the camera is facing. | 
Fields
- perspectivecamera.m_projection
 - 
    Projection matrix for perspective transformation.
    
- m_projection mat4
 
 - perspectivecamera.m_inv_projection
 - 
    Inverse projection matrix.
    
- m_inv_projection mat4
 
 - perspectivecamera.m_view
 - 
    View matrix computed from eye, center, and up vectors.
 Updated by calling updateviewmatrix().
    
- m_view mat4 readonly
 
 - perspectivecamera.center
 - 
    Position where the camera is looking at.
    
- center vec3
 
 - perspectivecamera.eye
 - 
    Position of the camera in world space.
    
- eye vec3
 
 - perspectivecamera.up
 - 
    Normalized up vector defining camera orientation.
    
- up vec3
 
 
Methods
- perspectivecamera:init (fov, aspect, nclip, fclip)
 - 
    Creates a new PerspectiveCamera instance.
 Initializes the camera with perspective projection.
    
Parameters:
- fov number Field of view of the camera, in degrees (default: 60)
 - aspect number The aspect ratio (width/height) (default: 1.6666667)
 - nclip number The distance of the near clipping plane from the camera (default: 0.1)
 - fclip number The distance of the far clipping plane from the camera (default: 2048.0)
 
 - perspectivecamera:update_view_matrix ()
 - Updates the view matrix based on current eye, center, and up vectors. Call this method after modifying the camera position or orientation.
 - perspectivecamera:screen_point_to_ray (x, y, viewport)
 - 
    Generates a ray from the camera through a screen point.
 Useful for ray casting, mouse picking, and collision detection.
    
Parameters:
- x number Screen position x coordinate
 - y number Screen position y coordinate
 - viewport table Viewport rectangle {x, y, width, height}
 
Returns:
- 
           table
        Ray data containing {origin = vec3, direction = vec3}
    
 
 - perspectivecamera:world_to_screen_point (x, y, z, viewport)
 - 
    Transforms a position from world space into screen space.
 Converts 3D world coordinates to 2D screen coordinates.
    
Parameters:
- x number or table World position x coordinate, or vec3 object containing world position
 - y number World position y coordinate (ignored if x is vec3)
 - z number World position z coordinate (ignored if x is vec3)
 - viewport table Screen viewport {x, y, width, height}
 
Returns:
- 
           vec2
        Screen space coordinates
    
 
 - perspectivecamera:get_direction ()
 - 
    Gets the normalized direction vector the camera is facing.
    
Returns:
- 
           vec3
        Normalized direction vector from eye to center