omath::opengl_engine — types & constants
Header:
omath/engines/opengl_engine/constants.hppNamespace:omath::opengl_enginePurpose: define OpenGL coordinate system, matrix types, and angle ranges
Summary
The OpenGL Engine uses a Y-up, right-handed coordinate system:
- Up =
{0, 1, 0}(Y-axis) - Right =
{1, 0, 0}(X-axis) - Forward =
{0, 0, -1}(negative Z-axis)
Matrices are column-major. Angles are clamped pitch (±90°) and normalized yaw/roll (±180°).
Constants
namespace omath::opengl_engine {
constexpr Vector3<float> k_abs_up = {0, 1, 0};
constexpr Vector3<float> k_abs_right = {1, 0, 0};
constexpr Vector3<float> k_abs_forward = {0, 0, -1};
}
These basis vectors define the engine's world coordinate frame.
Matrix types
using Mat4X4 = Mat<4, 4, float, MatStoreType::COLUMN_MAJOR>;
using Mat3X3 = Mat<4, 4, float, MatStoreType::COLUMN_MAJOR>;
using Mat1X3 = Mat<1, 3, float, MatStoreType::COLUMN_MAJOR>;
Column-major storage means columns are contiguous in memory. This matches OpenGL's native matrix layout and shader expectations (GLSL).
Angle types
using PitchAngle = Angle<float, -90.f, 90.f, AngleFlags::Clamped>;
using YawAngle = Angle<float, -180.f, 180.f, AngleFlags::Normalized>;
using RollAngle = Angle<float, -180.f, 180.f, AngleFlags::Normalized>;
using ViewAngles = omath::ViewAngles<PitchAngle, YawAngle, RollAngle>;
- PitchAngle: clamped to [-90°, +90°] (looking down vs. up)
- YawAngle: normalized to [-180°, +180°] (horizontal rotation)
- RollAngle: normalized to [-180°, +180°] (camera roll)
ViewAngles bundles all three into a single type for camera/view transforms.
Coordinate system notes
- Y-up: gravity points along
-Y, height increases with+Y - Right-handed: cross product
right × up = forward(forward is-Z) - Forward = -Z: the camera looks down the negative Z-axis (OpenGL convention)
- This matches OpenGL conventions for 3D graphics pipelines
See also
omath/engines/opengl_engine/formulas.hpp— view/projection matrix buildersomath/trigonometry/angle.hpp— angle normalization & clamping helpersomath/trigonometry/view_angles.hpp— generic pitch/yaw/roll wrapper