DynamicsLab is a work in progress real-time simulation tool for multibody dynamics systems. It is designed to help users visualize, analyze, and interact with complex system data efficiently. By combining powerful simulation capabilities with an intuitive interface.
- Real-time Simulation: Simulates rigid body dynamics with position, velocity, and acceleration updates.
- Interactive Camera: Provides intuitive camera controls for navigation and inspection of the simulation environment.
- Modular Project Structure: Designed for extensibility, making it easier to integrate new features or modify existing functionality.
- User Interface: Built using Dear ImGui, providing real-time control and visualization of simulation and camera data.
- Cross-platform Support: Based on GLFW and OpenGL, the project is compatible with major OS platforms.
![]() |
![]() |
![]() |
---|---|---|
View Full | View Full | View Full |
The application enables camera navigation to explore the simulation from any viewpoint. Users can control the camera position and orientation via:
-
Mouse Input:
- Movement: Adjusts the camera's rotation.
- Scrolling: Camera movement speed.
-
Keyboard Input:
- W/A/S/D keys for navigation.
- Left Shift/Control for upward/downward movement.
1 x 1 x 1 m 10 kilogram cube.
Mass: $ m = 10 kg $
Moment of Inertia: $ I = 60 kgm^2 $
Variable from Book | Description | Corresponding Name in Code | Additional Notes |
---|---|---|---|
M* | System mass-inertia matrix | SystemMassInertiaMatrix |
Represents the mass and inertia properties of the system. |
P | Quaternion constraint matrix | QuaternionConstraintMatrix |
Handles constraints related to quaternion representation. |
q | Generalized position coordinates of the system | GeneralizedCoordinates |
Position variables describing the configuration of the system. |
q̇ (q dot) | Generalized velocity coordinates | GeneralizedVelocities |
Velocity variables associated with the system coordinates. |
q̈ (q double dot) | Generalized accelerations | GeneralizedAccelerations |
Acceleration variables for the system's motion. |
b* | Velocity-dependent term | VelocityDependentTerm |
Represents effects dependent on the velocity, such as Coriolis or damping forces. |
c | Quaternion norm squared value | QuaternionNormSquared |
Constraint ensuring quaternions remain normalized. |
g* | Generalized external forces | GeneralizedExternalForces |
External forces acting on the system. |
-
Nikravesh, Parviz E. Computer-Aided Analysis of Mechanical Systems. Prentice-Hall, Inc., USA, 1988. ISBN: 0131642200.
-
GLFW - A multi-platform library for OpenGL, OpenGL ES, and Vulkan development.
- Website: https://www.glfw.org
-
GLM - OpenGL Mathematics, a header-only C++ library for graphics software.
- GitHub: https://github.com/g-truc/glm
-
Dear ImGui - A bloat-free graphical user interface library for C++.
- GitHub: https://github.com/ocornut/imgui
-
Eigen - A C++ template library for linear algebra.
- Website: https://eigen.tuxfamily.org