IP76.RU Графика. Математика. Delphi.
103 subscribers
101 photos
2 files
151 links
Алгоритмы, исходники, теория, GDI, GDI+, D2D
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Разделить массив точек на две прямоугольные области

Понадобилось сделать быстрый поиск ближайших точек в громадном массиве координат. Кое-что набросал в процессе. Показалось полезным показать наброски.

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

1) Поиск двух максимально удалённых точек в массиве.
2) Бежим по массиву, определяем к кому ближе очередная точка и формируем соответствующий прямоугольник.
3) Корректировка результата в том случае, если все точки оказались ближайшими только к одно из двух.

Точки можно ставить кликом, можно нажать "Добавить". В этом случае добавиться несколько случайных точек в количестве, указанном в левом нижнем SpinEdit'е.

Если есть мысли по оптимизации, поделитесь )))

Исходник (zip) 61.4 Кб. Delphi XE7.
Прога (zip) 932 Мб.
👍6🔥3
OpenGL: Тестовое задание

Когда-то делал в одну контору. Остались исходники. Написано за ночь )
Чуть подрихтовал сейчас.

Задание (253 Кб)

Картинки для тестов (2 Мб)
Исходник (192 Кб) Delphi XE7
Прога (1.05 Мб)
👍7🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Infinite Text. GDI+

Пятница. Вечер.
Наткнулся на такой интересный эффект (CSS+JS).
Воспроизвел в дельфи.

Исходник (61 Кб) Delphi XE7
Прога (910 Кб)
👍8🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Сеть из точек. GDI+

Давно хотел сделать в дельфи этот эффект.

Исходник (61 Кб) Delphi XE7
Прога (930 Кб)
🔥12
g10.gif
13.5 MB
Метель. GDI+

Вот такой эффект метели получился.
Посмотреть в браузере - Метель JS.

Для, собственно, бури:
- В проге включить Image и Auto.
- На сайте включить Автобурю.

Как обычно, свою картинку в проге можно вставить через контекстное меню "Paste" в окне отрисовки.

Исходник (193 Кб) Delphi XE7
Прога (1.06 Мб)
🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
Kd-Tree. Быстрый поиск в K-мерном пространстве

У меня был отпуск в начале мая.
Отпуск - прекрасное время для решения сильно тревожащих вопросов.
Меня сильно тревожил вопрос с Kd-Tree и проблемой наибыстрейшего поиска ближайшей точки.
Для себя его решил, о чём и предоставляю материал.

Kd-Tree - это дерево поиска на гигантском массиве K-мерных данных.
Суть - построение индекса. Что получилось, судить вам.

Читать статью...
🔥11
This media is not supported in your browser
VIEW IN TELEGRAM
Текст из "Звёздных войн". GDI+

Попросили сделать такой эффект.
Всё оформлено в одну функцию. Можно менять угол наклона, шрифт подхватит из холста. Текст, естественно, модифицируем.
Перспектива сделана на основе статьи Вывести текст в перспективе.
Кнопка Set Text установит новый текст и перезапустит показ.

Исходник (531 Кб) Delphi XE7
Прога (1.35 Мб)
🔥13👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Эквидистантная линия вокруг кривой

Математика построения эквидистантной линии не моя (ссылка ниже).

1. Получить отрезки кривой через метод TGPGraphicsPath.Flatten.
2. Скормить получившуюся ломаную библиотеке Clipper2.

Исходник (115 Кб) Delphi XE7. Clipper2 внутри.
Прога (960 Кб)
🔥9👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D. Эффект направленного размытия

Эффект аналогичен гауссовскому размытию, за исключением того, что можно исказить размытие в определенном направлении.

Исходник (462 Кб) Delphi XE7.
Прога (1.33 Мб)
🔥12
This media is not supported in your browser
VIEW IN TELEGRAM
Радиальная деформация изображения

Сделано на TBitmap.Scanline, без чего-либо дополнительного.
Билинейный фильтр взят из "Перспективной трансформации".

Исходник (175 Кб) Delphi XE7.
Прога x64 (1.26 Мб)
Пришлось компилировать в 64, потому что злой параноик касперский взъелся на 32-битный вариант.
🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект лупы

Немного подшаманим в эффекте выше и получим эффект лупы.
Колесом мыши можно менять диаметр лупы.

Исходник (235 Кб) Delphi XE7.
Прога x64 (1.35 Мб)
🔥12👍1
TBitmap.PixelFormat

Небольшая справочная статья по свойству TBitmap.PixelFormat. Задумывается, как ненагруженный вспомогательный материал для других статей.
https://ip76.ru/bitmap-pixelformat/

Пробую некий интерактив, что нужно добавить, что удалить?
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
TBitmap.PixelFormat

Маленькая справочная статья опять выросла в какого-то здорового мутанта.
Подробный разбор каждого формата.
Затронуты вопросы, как работать с палитрой.
Конечно, исходники.

Почитать...
🔥13👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Алгоритм Рамера–Дугласа–Пойкера

Алгоритм Рамера–Дугласа–Пойкера превращает неувернно-дрожащий набор точек в уверенную ломаную, состоящую из бескомпромиссных линий.

Почитать...
🔥13
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект "Прощай лето"
Незапланированный отпуск кончился безвозвратно...

Из интересного внутри:
1) GDIPlus Блюр-эффект
2) Полупрозрачный TGPBitmap

Исходник (62 Кб) Delphi XE7
Прога (908 Кб)
🔥10👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D. Морфологический эффект

Почитать про эффект на microsoft

Исходник (216 Кб) Delphi XE7
Прога (1.13 Мб)
🔥12
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D. Эффект Гауссова размывания

Почитать про эффект на microsoft

Исходник (293 Кб) Delphi XE7
Прога (1.19 Мб)
🔥13
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D. Эффект пастеризации

Суть эффекта - уменьшить количество цветов в изображении.
Чего не написано в доках:
- Опытным путём выяснено, что на каждый канал можно задать число в интервале 2..16. Всё остальное обрубается по этим значениям.
- Если не выставлять значение по какому-либо каналу, то эффект берёт значение, равное 4.

Рядом со спинами - количество уникальных цветов.
С нажатым Ctrl изменения в спинах будут синхронными.
Эффект доступен в Windows 10 и выше.

Исходник (231 Кб) Delphi XE7
Прога (1.12 Мб)
🔥12
This media is not supported in your browser
VIEW IN TELEGRAM
Direct2D. Эффект вращения оттенка

У эффекта один параметр - угол поворота оттенка. Угол соответствует определению тона.

Исходник (242 Кб) Delphi XE7
Прога (1.13 Мб)
🔥12