ВАРИАНТЫ ИНДИВИДУАЛЬНЫХ ЗАДАНИЙ
1. Постройте линию, введя данные точек T 1, T 2, T 3 с использованием функций типа SETQ. Точка Т1 при X =20+ n , Y =50+ n; точка Т2 при X =80- n , Y =100- n. Используя полярные координаты, постройте точку Т3 ( R =100- n , L =40+ n ).
2. Постройте окружность на основе введенных данных точки центра PC с X =100- n , Y =100+ n и радиуса R =70+ n.
3. Запишите в переменную К результат A * B * C при A =15+ n , B =5+ n , C =5+ n c помощью функции SETQ.
4. Оформите ввод A , B , C через функцию GETINT или GETREAL.
5. Выведите данные на экран для всех заданий.
ЛАБОРАТОРНАЯ РАБОТА 3
ПОСТРОЕНИЕ ПРОСТЕЙШИХ ЛИСП-ПРОГРАММ. ЗАГРУЗКА, ОТЛАДКА И ВЫПОЛНЕНИЕ ПРОГРАММ
Цель работы: изучение способов задания геометрических точек в программе на AutoLISP, методики программирования построения параметризованных изображений.
ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ
Геометрические точки в программе
Приведенные ранее простые примеры не демонстрируют все преимущества программирования на AutoLISP по сравнению с использованием редактора ACAD. Рассмотрим программу, иллюстрирующую принцип построения параметризованных изображений. Для такого построения требуется задавать геометрические объекты «внутри программы», т.е. без участия пользователя. [4-6]
Геометрическая точка в программе может быть задана пятью способами.
Первый нам уже известен − ввод точки пользователем через функцию GETPOINT.
Второй − непосредственное указание координат точки в виде списка из двух (двухмерная точка) или трех (трехмерная точка) элементов с помощью функции QUOTE.
|
|
Примеры:
(QUOTE (1.0 1.0)) − точка с координатами 1,1; '(1.0 1.0) − аналогично;
'(1.0 2.0 3.0) − точка в трехмерном пространстве с координатами X=1, Y=2, Z =3.
Третий способ − задание точки через другую точку, угол и расстояние с помощью функции POLAR:
(POLAR <точка> <угол> <расстояние>).
Эта функция возвращает точку, находящуюся под углом <угол> и на расстоянии <расстояние> от заданной <точки>. Угол указывается в радианах против часовой стрелки.
POLAR − основная функция для внутрипрограммных геометрических построений. Ее можно и удобно использовать практически во всех случаях.
Четвертый способ − определение точки пересечения двух отрезков с помощью функции INTERS:
(INTERS <точка1> <точка2> <точка3> <точка4> [<признак>]).
Функция INTERS находит точку пересечения двух отрезков − отрезка от <точки1> к <точке2> с отрезком от <точки3> к <точке4> и возвращает найденную точку; <признак> − любое выражение AutoLISP. Если <признак> равен NIL, то будет определена точка пересечения линий бесконечной длины, наложенных на заданные отрезки. Если <признак> имеет любое значение, отличное от NIL, или если аргумент <признак> вообще отсутствует, то ищется точка пересечения только внутри отрезков. Если точка пересечения в этой ситуации не найдена, то функция INTERS возвращает NIL.
|
|
Пятый способ – с помощью функций ANGLE и DISTANCE.
Функция ANGLE задается в виде правила: (ANGLE <точка1> <точка2>).
Функция ANGLE возвращает действительное число, равное углу в радианах, образованному прямой, проходящей через <точку1> и <точку2>, с осью Х.
Функция (DISTANCE <точка1> <точка2>) возвращает действительное число, равное расстоянию между <точкой1> и <точкой2>. [4-6]
Принцип построения параметризованных изображений в программе
Принцип построения параметризованных изображений иллюстрирует программа 3, позволяющая построить квадрат с задаваемой стороной и вписанную в него окружность. Аналогично можно строить и более сложные изображения: для получения нового изображения с помощью программы пользователь задает новые значения параметров (точки, расстояния, числа и др.). Из этих данных в программе могут быть получены другие данные с помощью математических функций, функции POLAR и т.п. Полученные данные будут использованы в качестве аргументов команд ACAD посредством функции COMMAND. [4-6]
|
|
; Программа 3. Квадрат с вписанной окружностью
(DE F UN C:QUADR ( ) ; заголовок описываемой функции
; Зададим начальную точку − левый нижний угол квадрата:
(SETQ P1 (GETPOINT “\n Нач . точка :”))
; Зададим длину квадрата:
(SETQ L (GETDIST “\nДлина стороны:”))
; определим три оставшиеся вершины квадрата:
(SETQ Р 2 (POLAR P1 0.0 L))
(SETQ P3 (POLAR P2 (/ PI 2) L)) ; угол = PI/2
(SETQ P4 (POLAR P3 PI L)); угол = PI
; Построим квадрат на экране:
( COMMAND “ LINE ” P 1 P 2 P 3 P 4 “С”)
; (Здесь “С” задает опцию “Замкнуть”)
;Определим радиус окружности:
(SETQ R(/L 2));радиус R=L/2
; Определим центр окружности РС:
(SETQ PR (POLAR P1 0.0 R)) ;PR - точка касания
; на нижней стороне
(SETQ PC (POLAR PR (/ PI 2) R))
; Построим окружность на экране:
(COMMAND “CIRCLE” PC R)
) ; Конец описания функции QUADR
Обратим внимание на несколько необычное имя функции − C:QUADR. Символы «С:» имеют определенный смысл, который будет разъяснен далее.
Дата добавления: 2019-09-13; просмотров: 208; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!