Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Filling a plane with triangles (Triangulation)

I tried to create an image like the one below as a random background for a website, but after multiple attempts I couldn't find an algorithm that gets the job done.

enter image description here

What should the program do?

It should be able to fill a plane randomly with triangles. These triangles should all be independent, so I don't simply want to draw long lines on the canvas an color the triangles that are created.

Algorithms I've tried so far:

1.

  • Make random Points
  • Make random Connections with a length below a specific value (This could leed to holes in the triangle net)
  • Try to find out what connections make a triangle (I failed here)

2.

  • Start with a single triangle
  • Create a new Point close to an existing connection and add a triangle from there that doesn't cause any intersections. This lead to problems whenever it left a little hole like in this picture:

    enter image description here

3.

  • Make random points
  • Make all possible connections (every point to every other)
  • Sort the connections by length
  • For every connection starting with the shortest draw if it isn't intersecting with any other drawn line. Otherwise delete the connection.

This was actually my best attemt even if it took the program far to long to get it done with only a few points. This is how the result looked:

enter image description here

I didn't find a way to find out what connections make a triangle and therefor I couldn't color them indipendently...

So hopefully you know a way to create a nice triangle-filled canvas like in the first picture and let me know...

like image 365
Anton Ballmaier Avatar asked Sep 14 '25 16:09

Anton Ballmaier


1 Answers

A good solution is to start with random points (with your preferred distribution) and apply some triangulation algorithm. Among these, the Delaunay triangulation is a good candidate, for its low computational complexity and code availability.


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!