32 .view = glm::lookAt(eye, st.
focal, glm::vec3(0.0F, 1.0F, 0.0F)),
42 static constexpr float k_limit = glm::radians(89.0F);
54 const glm::vec3 forward = glm::normalize(st.
focal -
orbit_eye(st));
55 const glm::vec3 right = glm::normalize(glm::cross(forward, glm::vec3(0.0F, 1.0F, 0.0F)));
56 const glm::vec3 up = glm::normalize(glm::cross(right, forward));
71 st.
azimuth = glm::radians(-90.0F);
void apply_orbit_rotate(OrbitState &st, float dx, float dy)
Apply a mouse delta to azimuth and elevation.
glm::vec3 orbit_eye(const OrbitState &st)
Derive eye position from the current orbit state.
void snap_orbit_ortho(OrbitState &st, int view)
Snap to a named ortho view, preserving distance and focal point.
void apply_orbit_scroll(OrbitState &st, float ticks)
Dolly the camera toward or away from the focal point.
ViewTransform compute_orbit_view_transform(const OrbitState &st, float aspect)
Build a ViewTransform from the current OrbitState.
void apply_orbit_pan(OrbitState &st, float dx, float dy)
Pan the focal point in the camera's local right/up plane.
OrbitState make_orbit_state(const OrbitConfig &config)
Construct an OrbitState from an OrbitConfig.
Tendency< D, float > scale(const Tendency< D, float > &t, float factor)
Uniform scaling of a scalar-output tendency.
float pan_sensitivity
World units per pixel, scaled by distance.
glm::vec3 focal_point
World-space point the camera orbits around.
float initial_distance
Initial radius from focal point.
float min_distance
Minimum dolly distance.
float initial_azimuth
Initial horizontal angle in radians.
float initial_elevation
Initial vertical angle in radians.
float scroll_speed
Fractional distance change per scroll tick.
float max_distance
Maximum dolly distance.
float rotate_sensitivity
Radians per pixel for MMB drag.
Construction parameters for an orbit navigation controller.
float distance
Radius from focal point.
glm::vec3 focal
World-space orbit target.
float elevation
Vertical angle in radians, clamped away from poles.
float azimuth
Horizontal angle in radians.
Mutable orbit navigation state.