Created by a human, with a brain badgeA badge with a character next to the text "Web 14," indicating that the site may contain slightly offensive materialDo What The Fuck You Want To Public License badgeD D Race Network badgemi toki e Toki Ponamade with MY OWN TWO PAWS badgeNo cookies badgeNo tracking or analytics badgeMade with server-side scripting badgeHosted on home internet badge


Bezier Flat Art Studio

git: https://ceriinas.me/git/BFAS.git
tar: https://ceriinas.me/git/BFAS.tar.gz
Windows binary (scary security warnings 0.0)


This project started with me looking for a program to make a new profile picture. I wanted something like a path tool which could then be filled, saved as a vector, but paths still edited later. The answer to that is probably "Illustrator;" I don't remember if I just got hooked on the idea of programming it or what but this project happened and the profile picture I had in mind never did, haha.

There were a lot more plans which would have made this a more fully-fledged and useful yet unique program. When I was looking into how to do gradients with points in various places I got distracted looking into non-sibsonian natural neighbor interpolation, though, and got burnt out about the project after putting in that effort. I was also going through some stuff while working on this and repeatedly almost lost the files. . . I am glad it got to be this complete. Saving/loading unfortunately doesn't work so I might come back to fix that, and I wanted to play around with error diffusion (on top of what I have) but otherwise this one is pretty much wrapped up.

The "fireworks" effect was a bug, but looks quite neat so I added it as an option. A zoom level of 1,000,000x is possible without any issues, after that point reality starts to unravel.

I used BFAS to render a Bad Apple!! animation.

Development Photos and Videos



A screenshot of a visualization used when determining how to find the enclosed area of shapes.
A screenshot of a buggy attempt to identify each side of a bezier curve.
A screenshot of progress on a eventually unusable method to find the enclosed area of shapes.
A screenshot of a failure to find the enclosed area of a shape.
A screenshot of a successfully identified bezier-constructed shape.

A screenshot of an attempt to fill a shape made of bezier curves. It is clearly not functional and has artifacts.
A screenshot of a shape made of bezier curves, which has been successfully filled with color.
A screenshot of a shape made of many bezier curves, which has been successfully filled with color.
A screenshot of a square with five color points inside it. Regions within the square are colored demonstrating which points should influence the points within that region's color. Once these are shaded per-pixel, it will be natural neighbor interpolation.
A screenshot of largely successful natural neighbor interpolation.
A screenshot of successful natural neighbor interpolation.
A screenshot of less successful natural neighbor interpolation.
A screenshot displaying successful natural neighbor interpolation inside of two shapes made of bezier curves, which share one bezier curve.