Skip to main content

CameraProjection

Enum CameraProjection 

Source
pub enum CameraProjection {
    WebMercator,
    Equirectangular,
    Globe,
    VerticalPerspective {
        center: GeoCoord,
        camera_height: f64,
    },
}
Expand description

Camera-facing map projection selection.

Variants§

§

WebMercator

Web Mercator (EPSG:3857).

§

Equirectangular

Equirectangular / Plate Carree.

§

Globe

Globe / geocentric Earth-centered projection.

§

VerticalPerspective

Near-sided vertical perspective projection onto a tangent plane.

Fields

§center: GeoCoord

Tangency center of the projection.

§camera_height: f64

Viewer height above the ellipsoid surface in meters.

Implementations§

Source§

impl CameraProjection

Source

pub fn support_level(&self) -> ProjectionSupport

Release-support classification for this projection.

Source

pub fn is_stable_for_v1(&self) -> bool

Whether this projection is part of the intended stable v1.0 surface.

Source

pub fn is_experimental_for_v1(&self) -> bool

Whether this projection should be treated as experimental in v1.0.

Source

pub fn vertical_perspective(center: GeoCoord, camera_height: f64) -> Self

Construct a vertical-perspective projection from a center point and viewer height.

Source

pub fn center(&self) -> Option<GeoCoord>

Return the configured center for center-aware projections.

Source

pub fn camera_height(&self) -> Option<f64>

Return the configured viewer height for vertical perspective.

Source

pub fn is_tile_compatible(&self) -> bool

Whether this projection is fully compatible with the current slippy-map tile and terrain update path.

Source

pub fn project(&self, geo: &GeoCoord) -> WorldCoord

Project a geographic coordinate into engine world space.

Source

pub fn unproject(&self, world: &WorldCoord) -> GeoCoord

Inverse-project engine world space back into geographic coordinates.

Source

pub fn scale_factor(&self, geo: &GeoCoord) -> f64

Projection-local scale factor at the given geographic coordinate.

Source

pub fn max_extent(&self) -> f64

Maximum useful half-extent for camera clamping and wrapping.

Source

pub fn world_size(&self) -> f64

Full projected world width in meters.

Source

pub fn project_position(&self, geo: &GeoCoord) -> [f64; 3]

Project a geographic coordinate into the active planar world space as raw XYZ meters.

Source

pub fn tile_geo_bounds(&self, tile: &TileId) -> GeoBounds

Geographic bounds for a slippy-map tile, expressed as south-west and north-east corners.

Source

pub fn project_tile_corner(&self, tile: &TileId, u: f64, v: f64) -> [f64; 3]

Project a tile corner into the active planar world space.

Source

pub fn project_tile_center(&self, tile: &TileId) -> [f64; 3]

Project the geographic centre of a tile into planar world space.

This is equivalent to averaging the four projected corners but requires only a single projection call, making it ~4× cheaper for the per-frame tile reposition path.

Trait Implementations§

Source§

impl Clone for CameraProjection

Source§

fn clone(&self) -> CameraProjection

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CameraProjection

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CameraProjection

Source§

fn default() -> CameraProjection

Returns the “default value” for a type. Read more
Source§

impl Hash for CameraProjection

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for CameraProjection

Source§

fn eq(&self, other: &CameraProjection) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for CameraProjection

Source§

impl Eq for CameraProjection

Source§

impl StructuralPartialEq for CameraProjection

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.