Дополнительно · 5
Радианы
В уроке «Вращение» и в уроке «Синус и косинус» мы уже пользовались радианами, не объясняя толком, что это такое — просто “не градусы”. Разберёмся, что стоит за этим словом.
Градусы кажутся привычными, но по сути это такая же условность, как и любая другая: кто-то давно решил делить полный оборот на 360 одинаковых частей, и с тех пор так и считают. Особого смысла в числе 360 нет — с тем же успехом могли бы выбрать 100 или 1000. Радианы менее привычны, зато, в отличие от градусов, у них есть самый настоящий смысл — не выдуманный, а взятый прямо из геометрии.
Возьмём окружность радиусом ровно 1 — единичную окружность, как в уроке «Синус и косинус». Угол, отложенный от центра, вырезает на ней дугу — кусок края окружности между двумя лучами угла. Представь, что эта дуга — кусочек верёвочки. Потяни за её конец, выпрями в прямую линию и измерь линейкой. Вот эта длина и есть угол в радианах.
У окружности радиусом 1 длина всей окружности целиком равна 2π.
Число π (читается “пи”) — самое обычное число, такое же, как и
любое другое, просто с бесконечной, никогда не обрывающейся записью
после запятой — поэтому его и не выписывают цифрами до конца, а
обозначают отдельной буквой. Приблизительно π равно 3.14. Значит,
полный оборот — это 2π радиан (примерно 6.28), половина оборота
(180°) — π радиан (примерно 3.14), четверть оборота (90°) — π/2
(примерно 1.57).
Если окружность не единичная
Заголовок раздела «Если окружность не единичная»Возьми окружность радиусом больше 1 — та же самая дуга для того же самого угла станет длиннее: длина дуги растёт вместе с радиусом, пропорционально ему. Радиусом 2 — дуга вдвое длиннее, радиусом 3 — втрое. Чтобы получить именно угол, а не длину дуги с примесью радиуса, лишний радиус нужно убрать — точно так же, как в уроке «Направление» убирали лишнюю длину вектора делением на неё же. Разделив длину дуги на радиус окружности, получаем угол в радианах, каким бы ни был радиус:
// Длина дуги, делённая на радиус, — угол в радианах, который эту дугу// вырезал, какой бы ни была сама окружность.let radians = arc_length / radius;Перевод между градусами и радианами
Заголовок раздела «Перевод между градусами и радианами»Раз половина оборота — это и π радиан, и 180°, перевести одно в
другое совсем просто: оба числа означают одно и то же, просто в
разных единицах. Чтобы перейти от градусов к радианам, умножаем на
π, делённое на 180; чтобы вернуться обратно — умножаем на 180,
делённое на π.
Писать эту формулу самому, впрочем, не придётся — в Rust уже готовы методы для этого, как в уроке «Методы»:
let radians = angle_degrees.to_radians();let degrees = angle_radians.to_degrees();Попробуй сам
Заголовок раздела «Попробуй сам»На картинке выше — окружность радиусом ровно 1 (можно считать, что это 1 метр, 1 сантиметр, что угодно — главное, что единица). Из точки в центре выходят две толстые серые линии и упираются в саму окружность — между ними получился уголок. Этот уголок отрезает от окружности (она нарисована пунктиром) кусочек её края — вот этот кусочек и называется дугой, мы выделили её красным. Рядом с дугой красным же числом записана её длина. А раз радиус окружности равен 1, эта длина и есть угол в радианах — то есть это одно и то же число.
Меняй angle — дуга на окружности меняется вместе с ним. Нажми
“Выпрямить” — окружность покатится по линейке вправо, как колесо, и
дуга останется позади неё распрямленной линией той же длины, что и
сама дуга. Длина этой линии, если посмотреть на линейку под ней, в
точности равна значению в радианах. Нажми “Свернуть”, чтобы
окружность вернулась обратно, наматывая дугу на себя.
Что здесь происходит
Заголовок раздела «Что здесь происходит»- Радиан — длина дуги единичной окружности (радиус ровно 1), которую стягивает угол. Не абстрактная единица вроде градуса, а самая настоящая длина.
π— такое же число, как и любое другое, просто с бесконечной записью после запятой, поэтому его обозначают отдельной буквой, а не выписывают цифрами до конца. Приблизительноπравно3.14.- Длина всей единичной окружности —
2π, поэтому полный оборот — это2πрадиан, половина оборота —π, четверть —π/2. arc_length / radius— то же деление, убирающее лишнюю длину, что и в уроке «Направление», только здесь оно избавляет не вектор от лишней длины, а дугу от лишнего радиуса окружности.- В демке кнопка “Выпрямить” прокатывает окружность по линейке, как
колесо, — дуга остаётся позади распрямленным отрезком той же
длины. Эта длина и есть угол в радианах, показанный в поле
angle. .to_radians()и.to_degrees()— готовые методы, переводящие угол туда и обратно, без ручной формулы сπ.