(setq pt1 ‘(3.0 4.5)),
(setq pt1 (list 3.0 4.5)).
Поскольку Автолисп всегда проверяет, является ли первый элемент выражения функцией, то выражение типа
(setq pt1 (3.0 4.5))
не будет принято; Автолисп выдаст сообщение об ошибке (в данном случае bad function, т.е., неверная функция), так как численный параметр 3.0 представляет собой вещественное число, а не функцию.
2. МАТЕМАТИКА В АВТОЛИСПЕ
2.1. Функции обработки чисел
Как уже упоминалось, Автолисп хорошо взаимодействует с базами данных, частным случаем которых являются файлы, создаваемые в результате выполнения программ, написанных с использованием операторных языков. Поэтому во многих случаях целесообразно сложные расчеты производить именно таким образом, оставляя Автолиспу лишь те операции, которые непосредственно связаны с созданием графических примитивов.
Структура математического выражения определяется функциональной природой Автолиспа, в соответствии с которой сначала необходимо определить функцию, а затем обрабатываемые параметры, даже если выражение является чисто арифметическим. В этом основное отличие Автолиспа от операторных языков. Строка в Фортране
C=A+B
или в Паскале
c:=a+b
в Автолиспе выглядит как
(setq с (+ a b)).
Сказанное относится и ко всем остальным операциям. Ниже приводится перечень наиболее употребительных функций.
(+ число число ...). Функция возвращает сумму всех чисел. Числа могут быть как целыми, так и вещественными. Сумма целых чисел есть целое число. Если среди чисел есть хотя бы одно вещественное, результат - вещественное число. Например:
(+ 3 5) возвращает 8,
(+ 1 2 3 4.5) возвращает 10.5,
(+ 1 2.0 3 4 5) возвращает 15.0.
(- число [число] ...). Функция вычитает второе число из первого и возвращает результат. Если чисел несколько, то возвращается результат последовательного вычитания всех последующих чисел из первого. Если число одно, его знак меняется на обратный. Примеры:
(- 5 3) возвращает 2,
(- 18 4.5 6 2) возвращает 5.5,
(- 6) возвращает -6.
(* число [число] ...). Функция возвращает произведение всего рядя чисел. Если введено одно число, возвращается результат его умножения на единицу. Примеры:
(* 5 3) возвращает 15,
(* 2 3.5 4 6) возвращает 168.0,
(* 3) возвращает 3.
(/ число [число] ...). Функция возвращает результат деления первого числа на произведение всех последующих. Единственное введенное число делится на единицу. Примеры:
(/ 8 5) возвращает 1.6,
(/ 720 3 5 2) возвращает 24,
(/ 4) возвращает 4.
(1+ число) возвращает число, увеличенное на единицу,
(1- число) возвращает число, уменьшенное на единицу. Примеры:
(1+ -17.5) возвращает -16.5,
(1+ 7) возвращает 8,
(1- -17.5) возвращает -18.5,
(1- 7) возвращает 6.
(abs число). Функция возвращает абсолютную величину числа.
(atan число1 [число2]). Функция возвращает значение в радианах арктангенса, определяемого параметрами. Если параметр только один (число1), возвращается угол, тангенс которого равен этому числу. Если введены два числа, то первое делится на второе и возвращается угол, тангенс которого равен вычисленному частному. Например:
(atan 0.5) возвращает 0.463648,
(atan 1.0) возвращает 0.785398,
(atan -1.0) возвращает -0.785398,
(atan 3.0 4.0) возвращает 0.643501.
Если число2 равно нулю, возвращается угол ±1.5708, знак которого соответствует знаку числа1.
(logand число число ...) возвращает результат логического побитового AND списка целых чисел. Результат - целое число. Примеры:
(logand 7 15 3) возвращает 3,
(logand 2 3 15) возвращает 2,
(logand 8 3 4) возвращает 0.
(logior число число ...) возвращает логическое побитовое OR списка чисел. Примеры:
(logior 1 2 4) возвращает 7,
(logior 9 3) возвращает 11.
(lsh число1 число_битов) производит сдвиг числа1, пересчитанного в двоичную систему, на заданное число_битов. Если число_битов положительно, сдвиг осуществляется влево, если отрицательно - вправо. Примеры:
(lsh 22 -1) возвращает 11,
(lsh 22 2) возвращает 120.
Следующие 14 функций приводятся без примеров:
(cos угол) возвращает значение косинуса угла,
(sin угол) возвращает значение синуса угла,
(exp число) возвращает натуральный антилогарифм числа, (expt основание степень) возвращает результат возведения основания в заданную степень,
(fix число) производит преобразование числа в целое и возвращает целую часть числа,
(float число) производит преобразование числа в вещественное число,
(gcd число1 число2) возвращает наибольший общий делитель двух чисел,
(log число) возвращает натуральный логарифм числа как вещественную величину,
(max число число) возвращает большее из двух чисел,
(min число число) возвращает меньшее из двух чисел,