Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функции, работающие со списками и точечными парами




Функции вычислений

К основным вычислительным функциям относятся следующие функции:

- (fix <число>) - усечение числа до целого (отбрасывается дробная часть);

- (rem [<число1> [<число2>... [<числоN>]... ]]) - получение остатка от деления аргументов <число1> на <число2>, затем остатка от деления результата на аргумент <число3> и т. д.;

- (mах [<число1> [<число2>... [<числоN>]... ]]) - определение максимального из чисел;

- (min [<число1> [<число2>... [<число1N>]... ]]) - определение минимального из чисел;

- (gcd <число1> <число2>) - вычисление наибольшего общего делителя для двух положительных целых чисел;

- (angle <точка1> <точка2>) - вычисление угла, в радианах, между осью Х текущей системы координат и вектором, идущим из точки заданной аргументом <точка1> в точку заданную аргументом <точка2>;

- (distance <точка1> <точка2>) - вычисление расстояния между двумя точками, заданными аргументами <точка1> и <точка2>;

- (sqrt <число>) - вычисление квадратного корня;

- (sin <число>) - вычисление синуса угла;

- (cos <число>) - вычисление косинуса угла;

- (atan <число1> [<число2>]) - вычисление арктангенса; если второй аргумент опущен, то вычисляется арктангенс от первого аргумента <число1>; если заданы оба аргумента, то вычисляется арктангенс частного от деления первого аргумента на второй <число1>/<число2>; если аргумент <число2> равен нулю, то возвращается угол +pi/2 или -pi/2 (знак выбирается по знаку аргумента <число1>);

- (ехр <число>) - вычисление натурального антилогарифма- результата возведения в степень постоянной е (2.71828);

- (expt <основание> <степень>) - возведение числа в степень;

- (log <число>) - вычисление натурального логарифма.

Примеры:

(fix -10.083) - возвращает -10;

(fix 40.45) - возвращает 40;

(rem 14 2) - возвращает о (результат целый, т. к. оба аргумента целые);

(rem 12.9 3.5) - возвращает 2.4;

(max 7 3.4 2.0092) - возвращает 7.о (результат вещественный, поскольку есть вещественные аргументы);

(min 7 3.4 2.0092) - возвращает 2.0092;

(gcd 42 12) - возвращает б;

(angle ' (0 0) ' (50.0 50.0)) - возвращает 0.785398;

(distance ' (0 0) ' (250.0 0.0)) - возвращает 250.0;

(sqrt 25) - возвращает 5.0;

(sin 0.0) - возвращает 0.0;

(cos 0.0) - возвращает 1.0;

(atan 1) - возвращает 0. 785398;

(atan -1 0) - возвращает -1.5708;

(ехр 1) - возвращает 2.71828;

(expt 2 2) - возвращает 4 (оба аргумента целые);

(expt -2 2.0) - возвращает 4.0;

(log 1) - возвращает 0.0.

 

 

Следующая группа функций - это функции, работающие со списками и точечными парами. Точечная пара - это двухэлементный список вида (а. b), в котором в качестве особого разделителя выступает точка (точка в такой записи отделяется пробелом как от первого, так и от второго элементов). Точечные пары используются для хранения в файлах системы AutoCAD данных о графических примитивах. Первый элемент точечной пары обычно является целым числом и называется DXF-кодом, а второй - данными этого кода. Основной способ получения точечных пар - функция cons.

Есть отличия в работе некоторых функций со списками и с точечными парами.

Функция list - это основная функция, позволяющая создать список:

(list (<элемент1> [<элемент2>... [<элементN>]... ] ])

В качестве аргументов <элементы>, из которых образуется список, могут выступать любые объекты, которыми оперирует AutoLISP. Самый распространенный список - это список из двух или трех вещественных чисел, представляющий точку.

В качестве элементов списка могут выступать другие списки или точечные пары.

Примеры:

(list 12.12 0.34 5.88) - возвращает (12.12 0.34 5.88);

(list 1 "ad2" (list 0 1 2)) - возвращает (1 "ad2" (0 1 2)) (третьим элементом нового списка является список из чисел 0, 1 и 2).

Следующие функции выполняют основные операции со списками:

- (append [<список1> [<список2>... [<списокN>]... ] ]) - слияние списков в один;

- (nth <номер> <список>) - извлечение из списка элемента по порядковому номеру (нумерация элементов списка выполняется слева направо и начинается с нуля);

- (reverse <список>) - переворот списка;

- (car <список>) - извлечение первого элемента списка или точечной пары;

- (cdr <список>) - извлечение из списка подсписка путем удаления первого элемента, если аргумент <список> является простым списком (т. е. не точечной парой), или извлечение второго элемента, если <список> является точечной парой.

Примеры:

(append '(14 16) '(12.12 0.34 5.88)) - возвращает (14 16 12.12 0.34 5.88);

(nth о '(12.12 0.34 5.88)) - возвращает 12.12;

(reverse '(12.12 0.34 5.88)) - возвращает (5.88 0.34 12.12);

(car '(12.12 0.34 5. 88)) - возвращает 12.12;

(car '(62. 1)) - возвращает 62;

(cdr '(12.12 0.34 5.88)) - возвращает (0.34 5.88);

(cdr ' (62. 1)) - возвращает 1.

От функции car и cdr путем их повторения в разных комбинациях от двух до четырех раз в языке AutoLISP образованы следующие функции (их двадцать восемь):

- (сааr <список>) -равносильно (car (car <список>));

- (cadr <список>) -равносильно (car (cdr <список>));

- (cdar <список>) -равносильно (cdr (car <список>));

- (cddr <список>) -равносильно (cdr (cdr <список>));

- (саааr <список>) - равносильно (car (car (car <список>)))

- (caadr <список>) - равносильно (car (car (cdr <список>)))

- (cadar <список>) - равносильно (car (cdr (car <список>)))

- (caddr <список>) - равносильно (car (cdr (cdr <список>)))

- (cdaar <список>) - равносильно (cdr (car (car <список>)))

- (cdadr <список>) -равносильно (cdr (car (cdr <список>)))

- (cddar <список>) - равносильно (cdr (cdr (car <список>)))

- (cdddr <список>) -равносильно (cdr (cdr (cdr <список>)))

- (caaaar <список>) -равносильно (car (car (car (car <список>))));

- (caaadr <список>) -равносильно (car (car (car (cdr <список>)))).

Аналогичным методом раскрываются оставшиеся функции (caadar, caaddr, cadaar, cadadr, caddar, cadddr, cdaaar, cdaadr, cdadar, cdaddr, cddaar, cdddar, cddadr, cddddr).

Функция cons добавляет к списку первый элемент или создает точечную пару:

(cons <аргумент1> <аргумент2>)

Если <аргумент2> является списком, то функция cons добавляет в него <аргумент1> в качестве нового первого элемента. Если <аргумент2> является атомом (т. е. не списком), то функция cons создает точечную пару типа (<аргумент1>. <аргумент2>).

Примеры:

(cons 67.4 '(10.3 12.9 -3.9)) - возвращает (67.4 10.3 12.9 -3.9);

(cons "Happy" '("New" "Year")) - возвращает ("Happy" "New" "Year");

(cons 2 4) - возвращает (2. 4);

(cons 8 "0") - возвращает (8. "0");

(cons 62 l) - возвращает (62. l).

Функция member проверяет принадлежность элемента списку:

(member <элемент> <список>)

Если функция member обнаруживает <элемент> в аргументе <список>, то возвращает остаток списка, начиная с этого места; если <элемент> в аргументе <список> не обнаруживается, то функция возвращает nil.

Примеры:

(member 1 '(4 50 1 2)) - возвращает (1 2);

(member 4 '(4 50 1 2)) - возвращает (4 50 1 2);

(member 0 '(4 50 1 2)) - возвращает nil.

 

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 205; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.