Auto CAD

Преобразование радиан в градусы и наоборот


Почему компьютеры используют радианы? Сложные вычисления быстрее и точнее выполнять, если пользоваться радианами, именно поэтому компьютеры пользуются радианами для расчета углов. В 8.9 показано соответствие градусов и радиан.

Что такое радиан?

С точки зрения геометрии, радиан — это угол между двумя прямыми, проведенными из центра окружности и отсекающими дугу, длина которой равна радиусу окружности. Один радиан немного меньше 57.30 градусов. Зачем вам это знать? Затем, что когда вы вводите в программу на AutoLISP значение угла в градусах, а программа интерпретирует его как значение в радианах, вы можете получить странный результат.

Что нужно делать, если у вас есть программа, которая поворачивает объекты, но не приводит к тому результату, который вы ожидали? Прежде всего, попробуйте повернуть объект на 90 градусов. Если он поворачивается на угол около 117°, вероятнее всего вы вводите значение в градусах (90) для функции, которая требует значение в радианах (приблизительно 1.507). Поворот чего-либо на 90 радиан потребует 14.3239 полных оборотов. Недостающие

0.3239 оборота составляют примерно 117°. Аналогично, если вы думаете, что вводите в программу угол поворота в радианах, а объект поворачивается все

го на несколько градусов, скорее всего, вы должны пользоваться величинами углов в градусах.

В качестве примера программа, приведенная в листинге 8.7, поворачивает копию выбранных объектов с использованием базовой точки и угла вращения, заданных пользователем. Вы можете поворачивать и копировать объекты с помощью ручек, но для этого вам потребуется несколько шагов. В AutoCAD 2006 команда ROTATE (ПОВЕРНУТЬ) имеет опцию Сору (Копия), но, если вы часто пользуетесь подобной функцией, специальная команда может оказаться полезной.

Следующий код иллюстрирует проблему, с которой часто сталкиваются начинающие программисты. Вам кажется, что программа будет работать, но она выдает не тот результат, которого вы, вероятно, ожидали. Попробуйте сами. Если вы введете эо, надеясь повернуть копию объекта на 90°, вы получите результат, показанный справа (8.7). В чем проблема?

Ключ к решению проблемы показан в командной строке на 8.7 (вместе с объектами). Когда в ответ на запрос угла поворота я ввел эо, в командной строке появилось число 1.570796326794897. Оно выглядит как Уз числа тт. Если вы посмотрите в 8.9, вы увидите, что 90° = тс/2. AutoLISP должен конвертировать 90 градусов в радианы. Так и произошло, потому что я использовал фуНКЦИЮ GETANGLE.

Как ни странно, эта программа могла бы прекрасно работать, если бы я использовал функцию getstring вместо getakgle, т. к. команда ROTATE (ПОВЕРНУТЬ) получала бы значение угла в виде строки, без преобразований. Тем не менее, я не использовал функцию getstring, потому что она не позволяла бы пользователю в ответ на запрос указывать угол двумя точками. Таким образом, команда вела бы себя не так, как остальные команды AutoCAD, а этого следует всячески избегать.

Теперь, когда вы знаете, почему ваша программа работает не так, как ожидалось, давайте посмотрим, как можно решить проблему. Для этого создадим новую функцию, которую можно будет вызывать другими функциями.

Комментарии закрыты