Lucien Rivière
  • HomeGo to
  • ProfileExperience, skills and CVGo to
  • MethodHow I work, layer by layerGo to
  • ContactSay helloGo to
  • ProjectsEverything I built, filterableGo to
  • CollaboratorsEveryone I built withGo to
  • SignalMapA mobile coverage map of Réunion and Mayotte: click anywhere and see the signal you would get from about 3,100 antennas.Projects
  • ZappyA network survival game in three programs: a C++ server, a 3D viewer and AI players, with LLM role-playing agents as a bonus.Projects
  • MaskGeneratorA small neural network that finds the road lines in a camera image, and a 2D raycast that turns them into lidar-like distances to drive a car.Projects
  • CockerA prototype platform to design an app as a graph of services and deploy it on Kubernetes: sandbox to try it, production to expose it.Projects
  • RaytracerA C++ raytracer where everything (shapes, materials, lights, output) is a plugin, sped up with a BVH, with a live preview window.Projects
  • RoboCarA small real car that drives itself around a track: a camera, a lidar-like view of the road lines, and a model that learned from human driving.Projects
  • CVRIETwo machine-learning studies using only scikit-learn: classifying chest X-rays, and grouping patient testimonies into symptom clusters with no labels.Projects
  • MyTeamsA Teams-like chat in Rust: a multi-client server, a command-line client, a text protocol written as an RFC, and data that survives restarts.Projects
  • ArcadeA retro game console in C++ where games and screens are plug-in libraries: swap the game or the graphics (terminal, SDL, SFML) while it runs.Projects
  • Masked DeliveryA game made in a weekend for Global Game Jam 2026: pick the right mask for each caller, then survive the drive, with penalties that stack up.Projects
  • 42shA Unix shell written in C, tcsh-style: pipes, logic operators, globbing, aliases, variables, line editing and history, checked against Bash.Projects
  • CorewarA virtual machine in C where small programs fight inside a shared memory, with my own warrior and a 3D viewer in the bonus.Projects
  • A-DasHboarDA dashboard of widgets from third-party services, built on JustBetterAuth, an authentication library written from scratch.Projects
  • StoneAnalysisA Python tool that finds the notes in a sound file with a hand-written Fourier transform, and hides secret messages inside the audio.Projects
  • PipetoA security audit of a nuclear-reactor console full of planted vulnerabilities: find them, rank them, patch them and prove the fixes with tests.Projects
  • TardisCleaning SNCF train-delay data, training a model to predict delays, and a Streamlit dashboard. The model barely beat guessing, and the page says so.Projects
  • InterStonarThrow a rock into a simulated universe: planets that attract each other and merge, or shapes it hits, found by stepping with signed distances.Projects
  • SensAIA small chat program for a local AI model that talks to it with plain HTTP, and can force its answers into a JSON shape you define.Projects
  • This portfolioThe site you are on: one set of data, six themes. Each theme is a different way to explore the same work, from a familiar page to a game.Projects
  • Portfolio toysSmall interactive toys from this portfolio: Fourier epicycles, a themed crossword and a bot that walks where you click.Projects
  • snake_pyA contribution to Infamous97440's repository: 2 commits from me.Projects
  • MyTopA clone of the Linux top command in C and ncurses: live CPU, memory, swap and per-process usage read from /proc.Projects
  • Switch to SpaceThemes
  • Switch to Cocktail PartyThemes
  • Switch to ReelThemes
  • Switch to GroveThemes
  • Switch to Voxel RedstoneThemes
  • Search the whole siteActions
  • Download CV (PDF)Actions
  • Copy my email addressActions
  • Turn the home page bot on or offActions
All themes

← All projects

InterStonar

Throw a rock into a simulated universe: planets that attract each other and merge, or shapes it hits, found by stepping with signed distances.

Period
Mar 2026 – Apr 2026
Role
CLI, vectors and the local (shapes) mode
Team
2 people
Status
archived

Stack and tags

Demo

A rock thrown among the planets, then among shapes, recorded in a clean container.
Transcript (final screen)
demo:interstonar$ ./interstonar --global toml/global_scene_example.toml -d 3600 0 0 0 100 0 0
Rock coordinates (x y z) are:
t = 0: (0 0 0)
t = 1: (360,000 0 0)
t = 2: (301,844,089 1,628,346,981 -262,848,507)
Collision between rock and Sun
Mission success
demo:interstonar$ ./interstonar --local toml/local_scene_example.toml 0 0 0 1 1 0 | tail -4

Step 1: (-3.54, -3.54, 0.00)

Result: Intersection with BOX_1
demo:interstonar$ 

You throw a rock from a point, in a direction, into a scene described in a small text file. Will it hit something? InterStonar answers in two very different worlds, chosen by a flag. Built with Samuel Jaglale.

How it works

In space, there are planets with real masses and speeds, and everything attracts everything. The clock ticks, every body is pulled by every other, and when two collide they merge, keeping their total mass and momentum, as physics says they should.

Among shapes, there is no gravity, only spheres, boxes, cylinders and tori. Each shape can say how far a point is from its surface, so the rock moves forward exactly that far at each step: it can never jump through anything, and stops when it touches a surface or leaves the scene. It is the same trick graphics engines use to draw such shapes.

What I took from it

  • One simple question (“how far is the nearest surface?”) can replace a costly calculation, which is why graphics uses it.
  • Letting physics decide the rules, rather than special cases, keeps a simulation honest.

Built with

  • Samuel Jaglalesleepwalkers dev — where dreams become production code. Coding my dreams into reality.GitHubWebsiteLinkedIn