Chaos Игра представляет собой простой метод для генерации фракталов. Учитывая начальную точку, отношение длины r и набор 2D точек, многократно выполните следующее:
- Из вашего набора точек, выберите один наугад (равномерно).
- Усредните эту точку и последнюю нарисованную точку (или начальную точку), используя r и 1 - r в качестве весов (т.е. r = 0 означает, что вы получили начальную точку, r = 1 означает, что вы получили случайную точку, а r = 0,5 означает, что вы получить точку на полпути между ними.)
- Нарисуйте результирующую точку.
Например, если вы выбрали вершины равностороннего треугольника и r = 0,5 , построенные точки отобразили бы треугольник Серпинского:
Изображение найдено в Википедии
Вы должны написать программу или функцию, которая «играет» в игру хаоса, чтобы создать фрактал.
вход
Вы можете написать либо программу, либо функцию и получить следующие входные данные через ARGV, STDIN или аргумент функции:
- Количество точек на графике.
- Начальная координата (которая также должна быть нанесена!).
- Усредняющий вес r в интервале [0,1] .
- Список точек на выбор.
Выход
Вы можете визуализировать на экране или написать файл изображения. Если результат растеризован, он должен быть не менее 600 пикселей с каждой стороны, все точки должны быть на холсте, и по крайней мере 75% горизонтального и вертикального экстента изображения должны использоваться для точек (это нужно для того, чтобы избежать отвечает одним черным пикселем, говоря: «Это действительно сильно уменьшено»). Оси x и y должны быть в одном масштабе (то есть линия от (0,0) до (1,1) должна быть под углом 45 градусов), и каждая точка, изображенная в игре хаоса, должна быть представлена как одна pixel (если ваш метод построения графика сглаживает точку, она может быть растянута на 2x2 пикселя).
Цвета - ваш выбор, но вам нужно по крайней мере два различимых цвета: один для фона и один для точек, построенных во время игры в хаос. Вы можете, но не обязательно наносить на график точки ввода.
Пожалуйста, включите три интересных примера выходных данных в свой ответ.
счет
Это код гольф, поэтому самый короткий ответ (в байтах) выигрывает.
Изменить: вам больше не нужно наносить точки ввода, так как они все равно не видны как отдельные пиксели.