Size: a a a

2021 June 19

AN

Alex Noname in rust_offtopic
PIL такое рисует
источник

A

AR in rust_offtopic
О... Вспоминается zx spectrum и бейсик) Рисование окружностей
источник

AN

Alex Noname in rust_offtopic
кек
источник

SP

Stanislav Popov in rust_offtopic
короче все просто
источник

SP

Stanislav Popov in rust_offtopic
я придумал
источник

SP

Stanislav Popov in rust_offtopic
называться эта штука будет обратный алгоритм брезенхема
источник

SP

Stanislav Popov in rust_offtopic
устойчив будет вообще ко всему
источник

SP

Stanislav Popov in rust_offtopic
каждый пиксель это нода
источник

KR

Kai Ren in rust_offtopic
О, кстати, дотумкал как вывести кривизну дуги. Берём две точки на дуге проводим линию, берём центр отрезка и делаем перпендикуляр, который пересекает дугу в такой-то точке. Это нам даёт прямоугольный треугольник. Дальше шаманим с коефициентами углов (у нас есть эталоный коэфициент на 45deg для двух перпендикулярных радиусов), и получаем радиус окружности. По радиусу просто дорисовываем окружность а дальше тривиально.

Но это те же яйца, вид сбоку. Если у тебя 3-5 пикселей кусочок дуги всего, то погрешность будет точно такая же большая. Волшебной пилюли нет.
источник

SP

Stanislav Popov in rust_offtopic
там вот. каждый пиксель это нода.

проходимся по всем пикселям чем то вроде алгоритмом дейкстры, и потом берем просто пары пикселей или по три-четыре пикселя и смотрим какой они дают dx/dy
источник

KR

Kai Ren in rust_offtopic
касательную ищешь?
источник

SP

Stanislav Popov in rust_offtopic
нет смотри, алгоритм рисования круга рисует его определённым образом
источник

SP

Stanislav Popov in rust_offtopic
там есть хорошо повторяющийся паттерн
источник

SP

Stanislav Popov in rust_offtopic
вернее случаев там всего четыре
источник

SP

Stanislav Popov in rust_offtopic
4 соседа почти не бывает
источник

SP

Stanislav Popov in rust_offtopic
диагональный сосед - если ровно 90 градусов
источник

SP

Stanislav Popov in rust_offtopic
а там в основном вариации
*
**
**
источник

SP

Stanislav Popov in rust_offtopic
просто детектим эти вариации, аккумулируем "ошибку"
источник

SP

Stanislav Popov in rust_offtopic
собтсвенно даже по длинне серии из диагональных можно сказать многое о радиусе
источник

SP

Stanislav Popov in rust_offtopic
мы нашли например L-последовательности на определённых расстояниях - это уже говорит очень о многом
источник