Архив тегов: Исходники

WaveFront OBJ-файл: Прочитать 3D-модель

Возникла необходимость читать 3D-модель из Wavefront OBJ-файла. Нормального ридера не нашёл, поэтому решил сделать сам. Есть дельфовый, FMX, со своими ограничениями и причудами. Есть всякие рекомендации в инете, обрывочные и несистематизированные. А хотелось бы иметь законченный модуль, включил и погнали.

Матрицы аффинных преобразований в пространстве

Affine 3D

Матрицы аффинных преобразований в пространстве аналогичны матрицам на плоскости с той лишь разницей, что добавляется ещё одна координата. Соответственно, матрицы становятся размером 4✕4 и их становится больше. По-прежнему, только четыре разновидности преобразований: поворот, перенос, масштаб и сдвиг.

Трюки с формой 2.2.2: Тёмная тема Windows в Delphi XE7

Тёмная тема Windows доступна и в XE 7. Но, так как эта версия Delphi создавалась во времена Windows 7, то ни о каком High-DPI, ни о каких тёмных темах, тогда ещё речи не было. Между тем, всё возможно.

Трюки с формой 2.2.1: Тёмная тема Windows в Delphi 12

С возникновением тёмной темы Windows, появились вопросы, почему Delphi её не поддерживает. Вне зависимости от текущей темы, окошки серые, заголовки белые. Давайте попробуем разобраться, что такое тёмное тема в понимании Windows, и как её реализовать в Delphi малыми усилиями.

Трюки с формой 2.1: Edit в заголовке окна

Не являюсь поклонником запихнуть что-нибудь в заголовок, но аргумент «жаль столько места пропадает» принимаю и поддерживаю. Поэтому продолжим размещать элементы редактирования в заголовке. Сейчас будем размещать Edit и ему подобных. Легально, без фокусов.

Контур образа: Алгоритм поиска

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

Алгоритм Рамера–Дугласа–Пойкера

Отличная штука при векторизации растра. Мы нашли контур ромба, но он содержит тысячу точек. Хотя там должно быть всего четыре точки. Четыре, Карл! Вот для того, чтобы точек стало четыре, и может пригодиться алгоритм Рамера–Дугласа–Пойкера.

Kd-Tree. Быстрый поиск в K-мерном пространстве

Rd-Tree

Если есть гигантский массив данных, то неизбежно встаёт вопрос о быстром поиске данных в нём. Очевидно, что надо строить дерево поиска. Существует множество разновидностей подобных деревьев. Для K-мерных величин, например, 2D или 3D координат, неплохим решением является Kd-Tree.

Контур текста в GDI с антиалиасом

GDI Text Contour

Контур текста довольно полезная штука. Не только в праздничном оформлении, но и во вполне деловой практике. Оконтуренный текст достаточно просто получить в GDI+ и, прямо скажем, совсем не просто в D2D. Однако, как быть в старом добром GDI?