/strange_pattern

Программа для генерации бесконечного узора

Primary LanguageC++MIT LicenseMIT

Программа для генерации бесконечного узора

Описание

Программа генерирует бесконечный узор, где каждая точка пространства сама определяет свое состояние вне зависимости от других точек. Это достигается за счет использования некоторой операции над координатами точки и дальнейшей проверки полученного числа на простоту. Изначальная идея состояла в проверке числа, полученного операцией X XOR Y, на простоту, где X и Y - координаты точки. Такой простой алгоритм дает следующий узор:

strange_pattern_example

Как работает данная программа?

Пример кода:

long long gx; // координата X точки
long long gy; // координата Y точки
// задаем координаты точки
//...

long long temp = gx ^ gy; // основной вариант предварительной обработки координат

// проверка числа temp на простоту
// isprime - это Алгоритм Бэйли-Померанс-Селфридж-Вагстафф (BPSW) проверки n на простоту
if(BPSW::isprime(std::abs(temp)) == true) {
  // точка закрашена, например data[gx][gy] = 1;
} else {
  // точка пустая
}

Пример работы программы

📺Видео1. :tv:Видео2.

Для пользователей Windows

Вы можете воспользоваться готовой программой 2d_pattern.exe, которая находится в архиве в папке bin. Не забудьте в консоли запустившейся программы ввести ширину и высоту окна.

Также можно сгенерировать звук на основе XOR алгоритма узора. Для этого в папке bin есть программа simple_sound. Введите длину трека в секундах, длину одного тика, начальные координаты и скорость смещения. На выходе программа сгенерирует wav файл с мелодией.

Управление программой: Переключитель на экран программы, который отображает узор, и нажимайте соответствующие клавиши. Убедитесь, что язык ввода английский.

  • W двигаться вверх
  • S двигаться вниз
  • D двигаться вправо
  • A двигаться влево
  • F увеличить скорость перемещения
  • B сбросить скорость перемещения
  • R включить или выключить автоматическое перемещение
  • T смена алгоритма
  • I сохранить узор в формате jpg
  • V начать или остановить запись видео в формате avi

Реализация алгоритма другими пользователями