Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Real-time image manipulation with Voronoi/Delaunay (github.com/mauricegit)
87 points by EllipticCurve on May 18, 2019 | hide | past | favorite | 12 comments



For those with money to burn on custom flooring, the Voronoi transform of the rhombic Penrose tiling is lovely. From the Penrose tiling, you get that neat non-repeating pattern. From the Voronoi transform, you get something less likely to hurt your feet or get chipped-off corners.

I suggest quartzite or pearly white granite, with pink granite for the pentagons.

The pattern should also work nicely for driveways and showers, likely with different material. The feel in a shower should be almost as nice as hexagon tile, and it is possible to put perfect 5-way symmetry around a pentagonal drain hole.



Cool idea, but I wonder about the feasibility. Do companies exist which can make these small tiles to such precise specification? And do they number them so you know where to place each one? How do you place the tiles so you don't get drift?


If you really want "small tiles to such precise specification", you can get stone cut with a waterjet... https://www.waterjetwonders.com/

...but that doesn't seem to be required. I guess it depends on how much you hate grout lines. My square 18" (45 cm) tiles have grout lines that are about 3/8" (1 cm) thick. There is plenty of wiggle room for inaccuracy. You could cut down big tiles with a chop saw.

If you want thin grout lines, or even none at all, you can pay for that. Using a waterjet might also save on wasted stone, which could matter if you use something costly like jade or lapis lazuli.

They wouldn't need to be numbered. There are not very many distinct shapes. It looks like a dozen, judging from those images somebody posted. (last 6 at the bottom of the page) Maybe you'd need numbering if you had the supplier cut unique edge tiles, but you could just cut those when installing.


That is a really cool idea! The whole Voronoi topic is kind of a passion project - I really like the look and feel of the Voronoi pattern.

So I'll keep that in mind for later, thanks!


Keep exploring it. Voronoi diagrams are woefully underappreciated. Your project looks to be the thing that is finally going to make me do a video card upgrade I've been procrastinating for years.


I completely agree! That's why I wrote the underlaying Voronoi/Delaunay library myself from scratch as well (turns out - not the fastest but still really fast and robust compared other implementations).

Do you have any interesting ideas for other projects on top of your head? I struggle a bit to actually use it in a useful way.

That is awesome, do it :)


Not this late at night I'm afraid, and my intuition far outstrips my experience in this area as I haven't had time to pursue recreational math the last few years.

Not sure how to put this, but referencing the collection of artistic imagery upthread - it's so easy to get things that look like perspective and geometrical figures with Voronoi diagrams, as well as the similarity to hallucinogenic noise, that I suspect the brain uses something similar for the sake of efficient image decomposition.

It's often interesting to set good sense aside temporarily and apply a tool or technique to things they shouldn't be used for. Since the game Doom is often used as a sort of 'Hello World' for quirky renderers like ASCII graphics, what if you rendered the viewpoint as a Voronoi diagram and (ab)used distance as an input to one of the parameters in your algorithm?

Meantime, here's a nice little paper on applying Voronoi diagrams to audio manipulation, which was where I first encountered them: http://www.audiomulch.com/downloads/articles/Metasurface_nim...


awesome project and beautiful visual result!

minor semantic quibble: I don't understand the use of the term "real-time" for this project. Can you elaborate on which definition is your project using, and how it applies?


Thanks, that means a lot :)

In this case real-time in the sense that one can adjust parameters and (for not too many points) get an instant result instead of an image on disk. Additionally, I used all components to have it displayed with an adjustable fps count (OpenGL based rendering).

But I see, that the meaning of real-time is a bit biased. Any suggestions?


> But I see, that the meaning of real-time is a bit biased. Any suggestions?

"Interactive"?


Right. Must have slipped me, fits a lot better, I agree! Next time..




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: