This project started off a weekend technical test I was asked by a company as part of their recruiting process (removed any elements I thought could lead people to cheat using it).
The code intentionally has a high amount of comments (with analogies and examples for hard concepts) as this was made for educational purposes.
Since I used raylib and eigen for visualization, which are solid C++ choices for other projects I had in mind, I decided to continue from their existing setup:
- download CMake 4.0+
- then either
- run those commands in a terminal,
mkdir build && cd build cmake .. cmake --build .- run the executables located at the indicated build paths
- or, if you're on VSCode like me, for a more UI approach
- install the Cmake Tools extension
- Search "CMake: Set Launch/Debug Target" in the command palette and select the target you want
- Click on the bottom left
▶️ button
Available targets:
Minimal STEP file loader (cylinders, planes and toruses with their relevant keywords for rendering, everything else (styling, metadata, presentation, assembly) is ignored) and tessellator for B-rep to mesh visualization.
Completed by:
- convenient controls and measurements in the UI,
- face selection for 3D translation involving rudimentary plane-cylinder geometry healing, as well as undo/redo,
- 2nd face selection for their centroid-centroid distance and distance/symmetry translation constraints (chain constraints supported).
Kinematic chain of a serial manipulator.
Only axis 0 (base) can be changed between linear and rotary because linear on any other piece would break the arm.
Real-time PPI sonar display simulating active (send then receive, gets range but less stealthy) and passive (only receive, gets only direction but more stealthy) detection modes, two-way transmission loss, thermocline-induced shadow zones, and a depth-varying sound speed profile.
Assumes we're a surface vessel with sonar transducer pointing downward towards submarines/whales/etc...
3D printing base generation (for a shape/position that couldn't be printed if not for it).
Artificial life particle method N-body simulation exploring emergent behavior inspired by the primordial soup.