LuciadCPillar C# 2024.0.05
Luciad.Cameras.OrthographicCamera Class Reference

A camera that uses an orthographic (or parallel) projection. More...

Inheritance diagram for Luciad.Cameras.OrthographicCamera:
Luciad.Cameras.Camera

Classes

class  Builder
 Factory object that can create new OrthographicCamera instances. More...
 

Public Member Functions

Luciad.Cameras.OrthographicCamera.Builder AsBuilder ()
 Returns a Builder that can build cameras identical to this camera. More...
 
Luciad.Cameras.Camera.Look2D AsLook2D ()
 Returns a description of the camera location targeted towards a 2D top-down view of the map. More...
 
- Public Member Functions inherited from Luciad.Cameras.Camera
void Dispose ()
 
virtual Luciad.Cartesian.Coordinate MapToView (Luciad.Cartesian.Coordinate mapPoint)
 Transforms a point in map coordinates to view coordinates. More...
 
virtual Luciad.Cartesian.Coordinate ViewToMap (Luciad.Cartesian.Coordinate viewPoint)
 Transforms a view point to map coordinates. More...
 

Additional Inherited Members

- Properties inherited from Luciad.Cameras.Camera
Luciad.Cartesian.Coordinate Eye [get]
 The current location of the camera in map coordinates. More...
 
double Far [get]
 The distance from the eye to the far clipping plane. More...
 
Luciad.Cartesian.Coordinate Forward [get]
 The (normalized) direction corresponding to the forward direction of the view. More...
 
double Height [get]
 The height in device independent pixels of the viewport of this camera. More...
 
double Near [get]
 The distance from the eye to the near clipping plane. More...
 
Luciad.Cartesian.Coordinate Up [get]
 The (normalized) direction corresponding to the upward direction of the view. More...
 
double Width [get]
 The width in device independent pixels of the viewport of this camera. More...
 

Detailed Description

A camera that uses an orthographic (or parallel) projection.

That the Camera API is a low-level API. For simple map navigation use cases, it's recommended to use the higher-level API. The MapNavigator API works in both 2D and 3D, on all map references. If you use the low-level Camera API, keep in mind that the same camera manipulation implementation might not work for other types of cameras (OrthographicCamera vs PerspectiveCamera) or other (types of) map references (projected vs. geocentric).

A camera transforms points from the map reference to the view (device independent pixel coordinates).

Orthographic Camera

Cameras in LuciadCPillar are immutable. You can manipulate the map's camera by creating a modified copy using the builder. The new camera can then be set on the map.

Currently, the OrthographicCamera is only used in combination with projected (grid) references (aka 2D maps). For now, you cannot use this camera if the map has a geocentric (3D) reference.

For projected (grid) references, the camera should be positioned along the positive Z axis, facing the negative Z direction. This way, the camera is positioned facing the XY-plane, where the map is rendered in.

To manipulate an orthographic camera on a projected (grid) or cartesian reference, we recommend using look2D. This allows you to reason about the camera in 2D space, instead of a 3D space. It also allows you to easily rotate and zoom the camera around any arbitrary view / map point.

Map navigation constraints configured on MapNavigator are not enforced when this camera is updated on the map. Constraints are only respected when using MapNavigator.

// low-level manipulation of an orthographic camera: put the world's origin at pixel 200,200,
// and rotate the camera by 10 degrees (keeping the same scale)
var orthographicCamera = map.Camera as OrthographicCamera;
// Adjust a couple of parameters. scaleX and scaleY remain the same
Camera.Look2D cameraPosition = orthographicCamera.AsLook2D();
Camera.Look2D newCameraPosition = new Camera.Look2D(new Coordinate(0.0, 0.0),
new Coordinate(200.0, 200.0),
cameraPosition.ScaleX, cameraPosition.ScaleY,
cameraPosition.Rotation.Degrees + 10.0);
Camera newCamera = orthographicCamera.AsBuilder().Look2D(newCameraPosition).Build();
// ...
// Set the camera on the map, for example by using Map.AnimationManager
map.Camera = newCamera;
A camera transforms points from the map reference to view coordinates (device independent pixel coord...
Definition: Camera.cs:48
A camera that uses an orthographic (or parallel) projection.
Definition: OrthographicCamera.cs:34
Structure describing the position of the camera for an orthographic top-down view.
Definition: Camera.cs:272
double ScaleX
The scale on the horizontal axis in device independent pixels per map unit.
Definition: Camera.cs:317
double ScaleY
The scale on the vertical axis in device independent pixels per map unit.
Definition: Camera.cs:326
Luciad.Cartesian.Azimuth Rotation
The rotation of the camera.
Definition: Camera.cs:336
Since
2021.1

Member Function Documentation

◆ AsBuilder()

Luciad.Cameras.OrthographicCamera.Builder Luciad.Cameras.OrthographicCamera.AsBuilder ( )
inline

Returns a Builder that can build cameras identical to this camera.

Returns
a Builder that can build cameras identical to this camera.

◆ AsLook2D()

Luciad.Cameras.Camera.Look2D Luciad.Cameras.OrthographicCamera.AsLook2D ( )
inline

Returns a description of the camera location targeted towards a 2D top-down view of the map.

Returns
a description of the camera location targeted towards a 2D top-down view of the map.