Нахождение точек по периметру круга

Мне нужно нарисовать линию от центра круга. Для этого я сначала выбрал центр изображения в качестве центра круга и нарисовал круг с известным радиусом. После этого, используя параметрическое уравнение круга, я просто вычислил x и y по периметру, увеличив угол на 6 градусов.

 x = cx + r * cos(a)
 y = cy + r * sin(a) 

Я использую OpenCV, чтобы сделать все это, где координаты пикселей начинаются с верхнего левого угла. Поэтому моя проблема заключается в том, что для цикла 360 градусов алгоритм должен рисовать 60 линий, но когда угол достигает 120 градусов, он завершает один цикл, и я заметил, что каждая линия отделима около 15 градусов вместо 6 градусов. Ниже мое изображение после 120 градусов.

Изображение после 120 градусов

1 ответ

Решение

sin а также cos ожидать, что угол будет в радианах. Если вы укажете угол в градусах, фактическая разница будет 6 == 6 - 2 * Pi что составляет около -16,22°.

Так что просто рассчитайте радианы из градусов:

x = cx + r * cos(a * CV_PI / 180.0)
y = cy + r * sin(a * CV_PI / 180.0) 
Другие вопросы по тегам