БлогNot. Визуализируем иррациональные числа по Бремеру или Transform для C++/CLI

Визуализируем иррациональные числа по Бремеру или Transform для C++/CLI

Прикреплённый ниже проект C++/CLI рисует одно из известных графических представлений числа пи (визуализацию Бремера), почитать об этой и других визуализациях можно, например, здесь или вот тут.

Математические визуализации числа Пи - это интересно. Плюс проект показывает некоторые тонкости в работе с графикой на C++/CLI, в частности, как минимизировать искажения при переходе от "мировых" координат к пиксельным (см. SetTransformationWithoutDistortion в коде). Ну и вообще о работе со свойством Transform объекта Graphics на C++ особо нигде нету информации.

пример сгенерированной картинки, визуализация по Бремеру числа пи с миллионом знаков в дробной части
пример сгенерированной картинки, визуализация по Бремеру числа пи с миллионом знаков в дробной части

Картинку можно сохранить, можно также поменять количество шагов расчёта (до миллиона, так как имеющийся в архиве проекта файл pi.txt содержит число пи с точностью до миллиона знаков в дробной части). Достаточно изменить этот текстовый файл (десятичной точки после первого символа "3" нету, все числа расположены в одну строку!), чтобы программа смогла работать с большим количеством данных.

При перерисовке картинка масштабируется по меньшему из размеров окна приложения. Есть также опция "рамка", особо не нужная. Она нарисует обрамление области построения. Ниже прикреплён архив с решением Visual C++, который собирался в Studio 2019, но на уровне исходников, думаю, это легко перенести и в другие версии.

 Скачать решение Визуализация Бремера на C++/CLI в архиве .zip (467 Кб)

Если взять вот отсюда число Эйлера e 5 миллионами знаков в дробной части, удалить из файла лишние строки и точку после "2" а затем слить все строки в одну (например, вот этим решением), то впервые в истории увидим и число Эйлера, изображённое по методике Бремера.

Число e как визуализация Бремера
Число e как визуализация Бремера

Если же у дроби будет период, даже достаточно большой, то никакого "космического числа" мы не увидим, а лишь скучную прямую:

Какая-то дробь с периодом как визуализация Бремера
Какая-то дробь с периодом как визуализация Бремера

А дальше, как говорится, полный простор для творчества.

Например, напрашивается для визуализации по Бремеру ещё одно число - константа "золотого сечения" Phi.

Миллион знаков этого числа я взял отсюда и подготовил файл данных по той же методике, что для остальных картинок. Число Phi оказалось просто прекрасно, как летящий прямо по оси восприятия дракон, вот оно:

визуализация по Бремеру константы золотого сечения Phi = 1.618... (миллион знаков в дробной части)
визуализация по Бремеру константы золотого сечения Phi = 1.618... (миллион знаков в дробной части)

Пора уже открывать отдельную галерею :) Вот корень из 2 отсюда, не правда ли, он похож на убегающую вправо двойку-шахматного коня?

Корень из 2 с миллионом знаков в дробной части, визуализация по Бремеру
Корень из 2 с миллионом знаков в дробной части, визуализация по Бремеру

Как видим, так можно изобразить любое иррациональное число.

Вот корень из трёх (ссылка), он как какая-то космическая рыба.

Корень из 3 с миллионом знаков в дробной части, визуализация по Бремеру
Корень из 3 с миллионом знаков в дробной части, визуализация по Бремеру

Иррациональный корень из 5, цифры для которого взяты отсюда, явно находится в поисках кольцевой гармонии в своём клеточном уравнении окружности!

Корень из 5 с миллионом знаков в дробной части, визуализация по Бремеру
Корень из 5 с миллионом знаков в дробной части, визуализация по Бремеру

Число Zeta(3) или постоянную Апери можно с нужной точностью взять вот отсюда.

Скажет, она не похожа на себя, Дзету? Ещё как похожа :)

Zeta(3) с миллионом знаков в дробной части, визуализация по Бремеру
Zeta(3) с миллионом знаков в дробной части, визуализация по Бремеру

теги: c++ числа графика программирование математика studio

05.01.2020, 15:49; рейтинг: 58