Давайте на секунду забудем о пикселях и проработаем основную математику / геометрию.
Все мы знаем, что
Площадь круга = Pi * Радиус ^ 2
, что означает
Площадь круга = Pi * (Диаметр / 2) ^ 2
Все мы знаем, что
Площадь квадрата, окружающего круг (т.е. каждая сторона квадрата касается окружности) = Диаметр * Диаметр
Таким образом
Отношение площади круга к площади квадрата = площадь круга / площадь квадрата = (Pi * (диаметр / 2) ^ 2) / (диаметр * диаметр) = Pi / 4
Теперь давайтепредположим, что у нас есть круг и квадрат с количеством пикселей, достаточно большим, чтобы нам не приходилось беспокоиться о проблемных краях вокруг границы круга.На самом деле, давайте на секунду предположим, что у нас очень большой диаметр (может быть, 10000 или даже бесконечный)С этим предположением справедливо следующее:
Количество пикселей в круге = (Количество пикселей в квадрате) * (Отношение площади круга к квадратной площади)
Другими словами, для достаточно большого количества пикселей отношение областей идеально нарисованного круга к идеально нарисованному квадрату будет приблизительно соответствовать отношению числа пикселей в пикселизованном круге к количеству пикселей во вмещающем пикселе.квадрат.
Теперь в пикселированном квадрате количество пикселей в этом квадрате - это количество пикселей, умноженное на количество пикселей в высоту.Или, другими словами, это квадрат квадрата (в пикселях).Назовем диаметр пикселя квадрата d .Таким образом, заменив вышеприведенными формулами, мы имеем:
Количество пикселей в круге = (d * d) * (Pi / 4)
Так что теперь давайте решим для d
d = Sqrt (4 * (количество пикселей в круге) / Pi)
Ну, мы уже говорили ранее, что d был диаметр квадрата.Ну, это также бывает диаметр круга.Поэтому, если вы хотите нарисовать круг с определенным количеством пикселей, вы рисуете круг диаметром:
Диаметр круга = Sqrt (4 * (Требуемое количество пикселей вПлощадь круга) / Пи)
Теперь, очевидно, вы должны сделать некоторые выборы в отношении округления и т. Д. (Не существует такого понятия, как дробный пиксель), но вы получите точку.Кроме того, эта формула является более точной, так как желаемое количество пикселей для области круга увеличивается.Для небольших количеств пикселей ошибка округления может не дать правильного количества пикселей.