Рассчитать координаты пикселей для 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)