ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
Loading...
Searching...
No Matches
turntable.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2025 Povl Filip Sonne-Frederiksen
2
//
3
// SPDX-License-Identifier: GPL-3.0-or-later
4
5
#pragma once
6
7
#include <array>
8
#include <chrono>
9
#include <cmath>
10
#include <memory>
11
#include <numbers>
12
13
// Forward-declare to avoid pulling PCL/VTK into the math-only header.
14
namespace
rux
{
15
class
VizualizationObserver
;
16
}
// namespace rux
17
18
namespace
rux::view
{
19
21
struct
TurntableState
{
22
bool
active
=
false
;
23
bool
spinning
=
true
;
24
bool
tick_running
=
false
;
25
double
azimuth
= 0.0;
26
double
angular_velocity
= 0.3;
27
double
radius
= 5.0;
28
double
elevation_deg
= 20.0;
29
std::array<double, 3>
center
= {0.0, 0.0, 0.0};
30
std::chrono::steady_clock::time_point
last_tick
{};
31
};
32
37
[[nodiscard]]
inline
std::array<double, 3>
38
orbit_camera_position
(
const
std::array<double, 3> ¢er,
double
radius,
39
double
azimuth_rad,
double
elevation_deg)
noexcept
{
40
const
double
el = elevation_deg * (std::numbers::pi / 180.0);
41
return
{center[0] + radius * std::cos(azimuth_rad) * std::cos(el),
42
center[1] + radius * std::sin(azimuth_rad) * std::cos(el),
43
center[2] + radius * std::sin(el)};
44
}
45
55
void
register_turntable_callbacks
(std::shared_ptr<TurntableState> state,
56
rux::VizualizationObserver
&observer);
57
58
}
// namespace rux::view
rux::VizualizationObserver
Definition
processing_observer.hpp:21
rux::view
Definition
component_renderer.hpp:16
rux::view::orbit_camera_position
std::array< double, 3 > orbit_camera_position(const std::array< double, 3 > ¢er, double radius, double azimuth_rad, double elevation_deg) noexcept
Compute the camera world position for one turntable orbit step.
Definition
turntable.hpp:38
rux::view::register_turntable_callbacks
void register_turntable_callbacks(std::shared_ptr< TurntableState > state, rux::VizualizationObserver &observer)
Register turntable keyboard callbacks and wire up the per-tick orbit loop.
rux
Definition
stage_bridge.hpp:27
rux::view::TurntableState
Shared state for the turntable orbit mode.
Definition
turntable.hpp:21
rux::view::TurntableState::last_tick
std::chrono::steady_clock::time_point last_tick
Definition
turntable.hpp:30
rux::view::TurntableState::tick_running
bool tick_running
Whether the per-tick task chain is live.
Definition
turntable.hpp:24
rux::view::TurntableState::radius
double radius
Camera distance from scene centre.
Definition
turntable.hpp:27
rux::view::TurntableState::spinning
bool spinning
Camera is rotating (can be paused).
Definition
turntable.hpp:23
rux::view::TurntableState::angular_velocity
double angular_velocity
rad/s
Definition
turntable.hpp:26
rux::view::TurntableState::elevation_deg
double elevation_deg
Camera elevation above horizontal plane.
Definition
turntable.hpp:28
rux::view::TurntableState::active
bool active
Turntable mode is enabled.
Definition
turntable.hpp:22
rux::view::TurntableState::azimuth
double azimuth
Current angle around world Z, radians.
Definition
turntable.hpp:25
rux::view::TurntableState::center
std::array< double, 3 > center
Scene focal point.
Definition
turntable.hpp:29
apps
rux
include
view
turntable.hpp
Generated by
1.18.0