-
Optimized Basketball Hoop C++
07/23/2026 at 18:53 • 0 commentsI'm terrible at basketball and I wanted to improve my skills. I could have taken the boring approach and simply improved my skills through practice, but where is the fun in that? Instead I was inspired by Stuff Made Here. He made a curved backboard that would make it easier to shoot a ball into a hoop. The basic idea is to optimize the shape of the backboard so it is more likely to bounce shots into the hoop. You end up with a shape like a concave mirror. Concave mirrors focus light into a single point. Similarly the backboard focuses ball bounces towards the center of the hoop.
![]()
![]()
![]()
The optimization for this project is done using a computer simulation that generates a backboard shape and tests shooting a ball from a bunch of different positions and angles. It sort of keeps trying different backboards until it either runs out of time or stops improving the shape. This is a complex optimization problem that could be solved in a number of different ways. I solved it using something called a Genetic Algorithm.
Sources
Stuff Made Here Video: https://www.youtube.com/watch?v=vtN4tkvcBMA
Github Repo: https://github.com/JoeyShotts/OptimizedBasketballHoop
Thingiverse Printable Model: https://www.thingiverse.com/thing:7386237
CAD: https://cad.onshape.com/documents/86306989aa1c30e44a7d12f8/w/0b1b638670a97f9a8d33990a/e/202dbd67a0fa8fff18fc6649The End Product
Before getting into the details, I want to share the results. I am publishing a printable 3D model of the backboard, so anyone can make it and play with it. This model is limited to be useful for one specific situation, shooting a mini basketball indoors. The backboard is optimized for that specific situation, and while it could probably be used for other situations, it likely won't work as well. However I am also publishing the code, so someone with some coding knowledge can generate a backboard to fit their needs. I'm sure the code and algorithm could be improved. If you have a GPU running the simulation it might take somewhere in the ballpark of 3-10 hours to run.The simulation that determines the percentage of shots that make it into the hoop initially had only around 0.5% of shots making it into the hoop. The final shape allowed around 10.5% of shots to make it into the hoop. To test the effectiveness of the hoop I made a flat backboard and hoop of the same size as the optimized backboard and hoop. I can only very rarely make a shot into the flat backboard, while with the optimized hoop I can pretty consistently make it in.
This kind of optimized backboard and hoop has real applications. The first use case is similar to pickleball. Pickleball has experienced a recent rise in popularity, and one reason why is the sports design. As compared to tennis, it's much easier to play, making it more fun. In a similar vein this basketball backboard makes it easier to shoot hoops, and thus more fun. There is nothing wrong with making something more fun by making it easier. I'm sure kids would find something like this really fun.
The other use case that comes to mind is to help people with disabilities. If someone has experienced some loss of motor abilities, this might provide a way to make basketball a little more doable. A backboard could be optimized for different situations. Maybe it's someone in a wheelchair who is only shooting from one spot. Maybe it's someone who is older and can still stand, but might use a non-standard basketball form. Maybe it's someone who can only shoot from close up, or needs to use a tool or prosthetic to help shoot the ball.
This backboard also provides a valuable learning opportunity for collegiate level computer science students. A lot of focus has been put on Machine Learning and Data Science recently. The modern computing revolution hardly relies on only these techniques. While this project specifically relies on a Genetic Algorithm to optimize the hoop, it would be completely possible to take this project...
Read more » -
Another Polar Plotter Project
09/12/2025 at 13:41 • 0 commentsAnother Plotter Project
I have to confess, the plotter craze got to me. There is something deeply pleasing about a project where your code does something in the real world, where you are creating a tool, and where you are making art. In this project I created a new polar plotter. This project is far more than just some 3D models and circuit design. It’s a new dead simple arduino based gcode controller that works in tandem with a python based application. (If you don’t care to read an article about this project, the github repo has copious amounts of documentation.)
Here is a demonstration of the project.
Before I get into the details of this project, it’s important to talk about the inspiration for this project. The term Polar Plotter comes from a project by Sandy Noble. This project was hosted at polargraph.co.uk and the code can still be found here and here. Noble created an excellent program that can plot some amazing designs. However it is not a gcode machine, and it’s not very general purpose. I wanted something that was minimalistic and easy for people to riff off of.
Then there is the line art itself. I am a big fan of some work done by Mitxela found here. You can also find a huge amount of line art all over the internet, although I like the resources found here and here. In general a lot of these resources are generative art. It’s not AI generated, but rather a lot of different code written by brilliant people all over the internet. The line art must be turned into gcode and here is some information about gcode and generating gcode.
All that being said, the thing that really makes a polar plotter a polar plotter is the simple mechanical design. While it may be simple to make one, it can actually be quite complex to design. Let’s take a look at the finished design and consider some of its features.
In this case the plotter has two motors mounted above the drawing area. Each motor has a pulley with a belt that the pulley can push and pull. The belts meet at a center point with a pen/marker passing directly through the center point. This center part is often called the gondola. The gondola has a servo motor which can raise and lower the marker, using the servo horn to push the marker away from the drawing surface.
![]()
The beauty of this design is that it’s incredibly simple. A typical X/Y plotter might have a gantry that requires a bunch of carefully machined parts to work. Here none of that is required.
Looking closer at the gondola and you might notice that the belts are not directly attached.
![]()
This is because the marker needs to be at the actual centerpoint of the two belts. The two white arms rotate around the blue cylinder. (The blue cylinder is where the marker slides in.) In some plotter designs, this feature is ignored and the belts are directly mounted to the gondola. This creates a problem where the marker won’t be in the expected position. The Gondola will tilt as you move it around so that the weight is always in the lowest possible position. You can see this in the image below.
![]()
Another consideration with a polar plotter is the marker pressure. In order for the marker to actually touch the drawing surface, the marker needs to push the gondola away from the surface. Consider the sideways view below. If the weight is too big, or the motor is too far away, the marker will just hang in midair and won’t touch the board.
![]()
Another mechanical consideration is that the marker can tilt. The further the gondola is from the whiteboard, the more the marker can shake as the plotter moves around and plots. This means the gondola needs to be as close to the whiteboard as possible. Bigger arms will help with this a little bit too. You can see this happen in the gif below.
![]()
This plotter also has the unfortunate and classic problem of belt skipping. When the machine jerks around too much, or the belts get to certain angles, belt skipping can occur. For simplicity...
Read more »
Joeshmoe22







Lutetium
Robin Fröjd
Blair Wyatt
Skyler Brandt
Leo Vu
Kristjan Berce
Josh Gadeken
Brijesh Sondarva
Maksim Surguy
Implemented Robotics
Stefkuhb