Как сказал Игнасио в комментарии, для большинства углов вы не можете представить синус и косинус как дробь, потому что они иррациональные числа.Так что написание собственных функций синуса и косинуса не поможет.(Вы можете попробовать это; это было бы интересное упражнение, но оно было бы довольно медленным. Реализации синуса и косинуса, которые встроены в Python, написаны на C, на основе кода, которому, вероятно, 40 лет, и поколений компьютеров.ученые оптимизировали их, так что вы, вероятно, не сможете добиться большего.)
На самом деле, даже для углов, которые являются круглым числом градусов, вы, как правило, не можете представить синуси косинус как дроби, но во многих случаях вы можете представить их квадратов как дроби.Поэтому я бы посоветовал рассчитать синусоид и косинус.(В качестве примера рассмотрим 45 градусов)
Конечно, даже при использовании хорошего круглого угла вы не получите дробь из (квадратичных) функций синуса и косинуса, потому что они возвращают плавающую точкуномера.Лучше всего конвертировать (приблизительные) десятичные числа в дроби.Вы можете использовать модуль fraction
, как предложено от mangobug , чтобы сделать это;если вы это сделаете, воспользуйтесь функцией limit_denominator
, потому что вы знаете, что искомые дроби имеют небольшие знаменатели.Кроме того, вы можете написать алгоритм самостоятельно;это еще одно поучительное упражнение.
Наконец, один совет: фактически, координата x соответствует косинусу, а координата y - синусу, если предположить, что ваши углы определены обычным образом.