#python #math #geometry
Вопрос:
Всем привет. Я не очень хорошо разбираюсь в математике, поэтому мне понадобится помощь в написании функции на Python. Есть арка, и мне нужно знать x
и y
каждого пикселя на арке. Все данные, которые у меня есть, я записал на картинке. Дайте мне знать, если что-то потребуется уточнить дополнительно.
Ответ №1:
Имея длину и радиус дуги, мы можем найти угол дуги в радианах
fi = L/R= 366.5/350 (60 degrees, BTW)
Полуугольный
hf = fi/2 = 366.5/700 (30 degrees)
Координаты центра круга
cx = R * sin(hf) = 350*1/2 = 175
cy = R * cos(hf) = 350*0.866 = 303.1
Теперь мы можем сделать цикл, чтобы получить координаты пикселей с заданным разрешением с начальным углом -Pi/2-Pi/6
(в общем случае -Pi/2-hf
)
for i in range(2220):
an = -math.pi*2/3 i * 366.5/350 / 2220
x = cx R * math.cos(an)
y = cy R * math.sin(an)
Чтобы исправить ваш код:
cx = radius * math.sin(hf)
cy = -radius * math.cos(hf)
xl.append(cx radius * math.cos(an))
yl.append(cy - radius * math.sin(an))
Комментарии:
1. y = cx математика.cos(an) вы имеете в виду cy?
2. Конечно, и
sin
там. Ошибка копирования-вставки3. можете ли вы объяснить эту строку an = -математика.pi*2/3 i * длина/радиус / 2220
4. i * длина/радиус / 2220-это количество пикселей, умноженное на разрешение по углу в радианах. (0,021021027 в градусах). Нулевой угол-это правильное направление (ось OX), поэтому мы должны сдвинуть угол на Pi/2 к верхней точке и на hf (здесь Pi/6=30 градусов) к углу начала дуги
5. Также добавьте умножение на радиус