Day 1: The black market The text of a nearby ad caught my eye as we waited at the baggage carousel. It was written in two scripts, and to my surprise, neither of them used the Latin alphabet. I could have at least learned the Mongolian phrase for “thank you”, I thought to myself. We grabbed our bags and found the exit. Amongst the people waiting in arrivals, I saw someone holding a sign that said…
It’s been a while It’s been almost 2 years since my last update on pooltool. Usually that’s an indication that the project is dead, but I’m here doing CPR. In fact, despite the radio silence, I’ve been working on pooltool alongside what has been an eventful 2 years with finishing my PhD, starting a new job, moving countries, yada, yada, yada. During that time I could never find the energy to give…
Backstory In the last post I turned pooltool from a code-based simulation into a 3D-rendered interactive game. In this post I extend this direction of the project by transitioning from primitive cartoon graphics to something a bit more realistic. Sitting down to write this post has made me realize just how far down the rabbit hole I am. When I first started pooltool, I never even expected it to be…
Goal In the last post I implemented a prototype that visualizes shots with pygame . But my plans are much more ambitious than visualizing shots on a pixel-art table. My goal is to turn this simulation into an interactive, 3D game/tool . That’s what this post is about. My credentials for making a game None. Game engine selection If I was a game developer, I would have written this in C# or C++,…
Outline In the first and second posts of this series, I discussed ad nauseam the physics and algorithmic theory behind pool simulation. With this all now behind me, it’s time to take this theory to the streets . The skeleton This project started with 2 main modules: engine.py and physics.py . The rationale for this design was to separate the physics from the objects that the physics acts on…
Intro Overview This post details the step-by-step process of creating an audio classifier that tracks and responds to the behavior of my girlfriend’s dogs while we are gone. The resulting data is distilled into an interactive interface such as the one shown here. [ Click for interactive plot ] Where I left off In the first post of this series, I made a virtual dog-sitter that detects audio events,…
Intro What is a pool simulator? In the last post I discussed the physics for all the different phenomena in pool and outlined equations of motion for each scenario. Yet there is still a critical missing piece: how and when should these equations be applied? For instance, I have equations to resolve the collision between two balls, but how do I know which two balls collided and when? A pool…
I recently moved in with my girlfriend (Kourtney) who has a 6-month old puppy named Maple. She’s a sweet girl (the puppy), however she was born in the COVID era, and that comes with some behavioral challenges. The biggest problem is that she’s developed an unrealistic assumption that she can be with us 100% of the time. And when that unrealistic expectation is challenged by us leaving the…
This post is the first of many in my journey to make a realistic pool/billiards simulator called pooltool . Before jumping into code, I have to trudge through the theory of both (a) the physics of pool, and (b) the algorithms for evolving a pool shot. The physics of pool is what is covered in this post , and algorithms for evolving a pool shot covered in the second post . Both of these will…