View API
The view package owns camera and projection math. It is backend neutral and does not apply terminal y-scale correction.
Types
Camera3:eye,target, andupvectors.Viewport: output width and height.SensorSpec: physical sensor width and height in millimeters.LensSpec: focal length in millimeters plus FOV helpers.WorldUnit: meters represented by one world-space unit.ScientificCamera:Camera3plus sensor, lens, and world-unit metadata.PerspectiveProjection: viewport plus perspective scale.OrthographicProjection: viewport plus orthographic scale.ProjectedVertex: projectedx,y, anddepth.
Camera
Camera3::look_at(eye, target, up): builds a camera description.Camera3::default(distance): camera at(0, 0, -distance)looking at origin.Camera3::view_transform(): world-to-camera 4x4 transform.world_to_camera_point/world_to_camera_direction: apply the view transform.
Scientific Camera
SensorSpec::apsc()/full_frame()/medium_format(): common sensor presets.SensorSpec::custom(width_mm, height_mm): custom positive sensor size.LensSpec::new(focal_length_mm): focal length in millimeters.horizontal_fov/vertical_fov/diagonal_fov: FOV helpers using2 * atan(sensor_dimension / (2 * focal_length)).WorldUnit::new(meters_per_unit): explicit world-unit scale.ScientificCamera::auto(viewport): full-frame, 50mm default camera.ScientificCamera::to_perspective_projection(viewport): derives the current single-axisPerspectiveProjection.scalefrom vertical sensor scale.
Projection
PerspectiveProjection::project_point(point): perspective screen projection.OrthographicProjection::project_point(point): orthographic screen projection.project_perspective_vertices/project_orthographic_vertices: batch helpers.interpolate_perspective_depth(p0, p1, p2, b0, b1, b2): reciprocal-depth interpolation for perspective triangle rasterization, with a safe linear fallback.