Это дает правильный (иш) ответ.Посмотрите на пример, который вы дали;координата, которая выглядит неправильно, является координатой y, которая должна быть 0 при повороте на 180 градусов:
6.123233995736766e-16
То, что e-16
- это научное обозначение для "умножения на десять от степени -16".Итак, это число эквивалентно .00000000000000006123233...
Почему оно не возвращает ровно 0?Из-за особенностей в том, как Python обрабатывает плавающие объекты.
Если вам не нужна такая большая точность, вы можете получить более удобочитаемые результаты, переписав свою функцию для использования round
, например:
def coords_from_degree(line, angle):
a = math.radians(angle)
return (round(math.cos(a)*r, 4),
round(math.sin(a)*r, 4)
)