Я попытался создать изображение, подобное приведенному ниже, в качестве случайного фона для веб-сайта, но после нескольких попыток я не смог найти алгоритм, который выполняет эту работу.
Что должна делать программа?
Он должен иметь возможность случайным образом заполнить плоскость треугольниками. Все эти треугольники должны быть независимыми, поэтому я не хочу просто рисовать длинные линии на холсте цветом созданных треугольников.
Алгоритмы, которые я пробовал до сих пор:
1.
- Сделать случайные очки
- Делайте случайные соединения с длиной ниже определенного значения (это может привести к дырам в треугольной сети)
- Попробуйте выяснить, какие соединения образуют треугольник (здесь я не справился)
2.
- Начните с одного треугольника
Создайте новую точку рядом с существующим соединением и добавьте оттуда треугольник, не вызывающий пересечений. Это приводило к проблемам всякий раз, когда оставалось небольшое отверстие, как на этом рисунке:
3.
- Сделать случайные точки
- Сделайте все возможные соединения (каждая точка с каждой другой)
- Сортировка соединений по длине
- Для каждого соединения, начинающегося с самой короткой линии, если она не пересекается ни с одной другой линией. В противном случае удалите соединение.
На самом деле это была моя лучшая попытка, даже если программе потребовалось слишком много времени, чтобы сделать это всего с несколькими точками. Вот так выглядел результат:
Я не нашел способа узнать, какие соединения образуют треугольник, и поэтому я не мог раскрасить их независимо...
Так что, надеюсь, вы знаете, как создать хороший холст с треугольниками, как на первой картинке, и дайте мне знать...