Рассчитать координаты пикселей для 8 равноотстоящих точек на окружности

У меня есть круг с центром в 0 с радиусом 80. Как с помощью Python вычислить координаты для 8 равноудаленных точек по окружности круга?

2 ответа

Решение
r = 80
numPoints = 8.0
points = []
for index in range(numPoints):
    points.append([r*math.cos((index*2*math.pi)/numPoints),r*math.sin((index*2*math.pi)/numPoints)])
return points

Вы можете упростить это, если знаете, что у вас всегда будет всего 8 очков с чем-то вроде:

r = 80
numPoints = 8
points = []
x = (r*math.sqrt(2))/2
points = [[0,r],[x,x],[r,0],[-x,x],[-r,0],[-x,-x],[0,-r],[x,-x]]
print points

где х - это х / у точки 45 градусов и 80 единиц от начала координат

нажмите на эту картинку для большей ясности

на картинке выше.

координаты 1,2,3,4,5,6,7,8 - равноудаленные точки на окружности радиуса R, центр которой находится в точке X (0,0)

возьмите треугольник XLZ, под прямым углом к ​​L,

Пусть LZ = H, LY = A

    XL + LY = R => XL + A = R => XL = R-A 

так как XLZ является прямым углом, квадрат XZ = квадрат XL + квадрат LZ

                R square = (R-A) square + h square ————1

так как эти 8 точек составляют восьмиугольник тета = 360 градусов / 8 = 45 градусов

загар 45 град = ч / хл = ч / ра => 1 = ч / ра => ч = ра —————2

Координаты Z: (RA, h) = > (h,h)

из уравнений 1 и 2

R квадрат = h квадрат + h квадрат => 2 h квадрат = R квадрат => h = R/ квадрат 2

поэтому координаты в точке 2 (Z) = (R/sqrt2, R/sqrt2)

остальные могут быть легко получены, поскольку они просто противоположны

Так что все координаты

1 (0,R) 2 (R/sqrt2,R/sqrt2) 3 (R,0) 4 (-R/sqrt2, R/sqrt2) 5 (-R,0) 6 (-R/sqrt2,-R/sqrt2) 7 (0,-R) 8 (R/sqrt2, -R/sqrt2)

Другие вопросы по тегам