- PVSM.RU - https://www.pvsm.ru -
Привет! Однажды утром мне пришла в голову идея находить "исключающее ИЛИ" между координатами точки пространства и проверять полученное число на простоту. Результат такого простого алгоритма вы можете видеть на картинке. Подробнее под катом.
Алгоритм на языке C++
long long temp = x ^ y; // x и y координаты точки
// Далее идет проверка temp на простоту одним из алгоритмов.
// Например алгоритм Бэйли-Померанс-Селфридж-Вагстафф (BPSW) проверки n на простоту
if(isprime(temp) == true) {
// рисуем закрашенную точку
} else {
// оставляем точку пустой
}
Такой алгоритм дает следующие бесконечные узоры:
Можно также посмотреть видео с узорами:
Если заменить операцию XOR (исключающее ИЛИ) на операцию ИЛИ или И, можно получить фрактальные треугольники:
Также можно вместо проверки на простое число использовать любые другие проверки, например деление без остатка на какое-либо число. Но такие варианты дают менее разнообразные узоры.
Для тестирования генератора узора я написал простую программу, которую можно скачать вместе с исходниками здесь [1]. Для работы с изображениями используется библиотека OpenCV.
Автор: Ярослав
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/286809
Ссылки в тексте:
[1] здесь: https://github.com/NewYaroslav/strange_pattern
[2] Источник: https://habr.com/post/417861/?utm_source=habrahabr&utm_medium=rss&utm_campaign=417861
Нажмите здесь для печати.