7. 수학 함수
AutoLISP에서 사용되는 기본적인 수학 관련 함수는 여타의 프로그램과 크게 다르지 않습니다.
그러나, 연산기호가 숫자나 변수 앞에 위치하기 때문에 익숙해지기 상당한 시간이 걸립니다.
*주의 사항
1. 정수와 실수의 연산 결과는 실수로 나타납니다.
2. 숫자 중에서 실수가 포함되어 있으면 결과값은 실수로 나타납니다.
3. 분수를 표시하기 위해서는 나눗셈을 사용해야 합니다.
1. + (addition)
(1) 기능
일반적인 덧셈과 같이 + 기호 이후의 숫자나 변수를 모두 더합니다.
(2) 사용법
(+ number1 number2 number3 .........)
(3) 예제
(+ 7 5) | : 7+5 = 12 |
(+ 13 7 3) | : 13+7+3 = 23 |
(+ 3.5 2) | : 5.5 |
(setq num1 200) |
|
(setq num2 100) |
|
(+ num1 num2 300) | : 200+100+300 = 600 |
(setq a (+ num1 num2)) | !a = 300 |
(4) 예제 프로그램
; PLUS.LSP
(defun c:plus() (setq num0 (+ 1 2.5)) (setq num1 2000) (setq num2 26) (setq number (+ num0 num1 num2)) ) ; ** Defun 함수 참조 |
Command: (load "c:/plus") C:PLUS Command: plus 2029.5 Command: !number 2029.5 Command: !num0 3.5 Command: !num1 2000 Command: !num2 26
|
2. - (subtraction)
(1) 기능
맨 처음의 숫자 또는 변수에서 이후의 수들의 합을 뺍니다.
1개의 숫자(변수)만 주어질 경우 0에서 주어진 숫자를 뺀 값(음수)을 구하게 됩니다.
(2) 사용법
(- number1 number2 number3 ........)
(3) 예제
(- 23 20) | : 23-20 = 3 |
(- 17 5 1 3) | : 17-(5+1+3) = 8 |
(- 25 5.5 2) | : 25-(5.5+2) = 17.5 |
(setq num1 200) |
|
(setq num2 100) |
|
(- num1 100 num2) | : 200-(100+100) = 0 |
(setq a (- num1 num2)) | : !a = 100 |
(4) 예제 프로그램
; MINUS.LSP
(defun c:minus() (setq num0 2000) (setq num1 (- 2.5 1)) (setq num2 26) (setq number (- num0 num1 num2)) ) ; ** Defun 함수 참조 |
Command: (load "c:/minus") C:MINUS Command: minus 1972.5 Command: !num0 2000 Command: !num1 1.5 Command: !num2 26 Command: !number 1972.5
|
3. * (multiplication)
(1) 기능
* 기호 이후의 모든 수 또는 변수를 곱합니다.
(2) 사용법
(* number1 number2 number3 ..........)
(3) 예제
(* 2 5) | : 2×5 = 10 |
(* 3 -12) | : 3×(-12) = -36 |
(* 5 1.5) | : 5×1.5 = 7.5 |
(setq num1 10) |
|
(setq num2 20) |
|
(* num1 num2) | : 10×20 = 200 |
(setq a (* num1 num2)) | : !a = 200 |
(4) 예제 프로그램
; TIMES.LSP
(defun c:times() (setq num0 2000) (setq num1 (* 2.5 1)) (setq num2 26) (setq number (* num0 num1 num2)) ) ; ** Defun 함수 참조 |
Command: (load "c:/times") C:TIMES Command: times 130000.0 Command: !num0 2000 Command: !num1 2.5 Command: !num2 26 Command: !number 130000.0
|
4. / (division)
(1) 기능
맨 처음 수 또는 변수에서 이후 수들의 곱으로 나눕니다.
(2) 사용법
(/ number1 number2 number3 .......)
(3) 예제
(/ 30 10) | : 30÷10 = 3 |
(/ 40 4 10) | : 40÷(4×10) = 1 |
(/ 15 3 5) | : 15÷(3×5) = 1 |
(setq num1 10) |
|
(setq num2 200) |
|
(/ num2 num1) | : 200÷10 = 20 |
(setq a (/ num2 num1 10)) | : 200÷(10×10) = 2 |
(4) 예제 프로그램
; DIV.LSP
(defun c:div() (setq num0 2000) (setq num1 (/ 2.5 5)) (setq num2 26) (setq number (/ num0 num1 num2)) ) ; ** Defun 함수 참조 |
Command: (load "c:/div") C:DIV Command: div 153.846 Command: !num0 2000 Command: !num1 0.5 Command: !num2 26 Command: !number 153.846
|
(1) 기능
처음 수를 두번째 수로 나누어 나머지를 구함.
(2) 사용법
(rem Number01 Number02)
(3) 예제
(rem 30 10) | : 30÷10 = 3 나머지는 0 |
(rem 50 5) | : 50÷5 = 10 나머지는 0 |
(rem 5 3) | : 5÷3 = 1 나머지는 2 |
6. 증가 연산자(increment)
(1) 기능
지정 숫자나 변수에 1을 더합니다.
(2) 사용법
(1+ Number)
(3) 예제
(1+ 2) | : 3 |
(1+ (+ 10 15)) | : 26 |
(setq Num1 10 Num2 5) |
|
(setq Num3 (1+ Num1)) | : Num3 = 11 |
(setq Num3 (1+ Num2)) | : Num3 = 6 |
7. 감소 연산자(decrement)
(1) 기능
지정 숫자나 변수에서 1을 뺍니다.
(2) 사용법
(1- Number)
(3) 예제
(1- 2) | : 1 |
(1- (+ 10 15)) | : 24 |
(setq Num1 10 Num2 5) |
|
(setq Num3 (1- Num1)) | : Num3 = 9 |
(setq Num3 (1- Num2)) | : Num3 = 4 |
(1) 기능
Number01을 밑으로 하여 Number02 제곱승을 구하는 함수입니다.
Number01과 Number02는 숫자나 변수입니다.
(2) 사용법
(expt Number01 Number02)
(3) 예제
(expt 3 2) | : 3 X 3 = 9 |
(expt 3 3) | : 3 X 3 X 3 = 27 |
(expt 2 3) | : 2 X 2 X 2 = 8 |
(setq Num1 2 Num2 5) |
|
(setq Num3 (expt Num1 Num2)) | : Num3 = 32 |
(1) 기능
지정 숫자나 변수의 제곱근을 구하는 함수입니다.
(2) 사용법
(sqrt Number)
(3) 예제
(sqrt 9) | : 3.0 |
(sqrt 16) | : 4.0 |
(sqrt 25) | : 5.0 |
(setq Num1 36) |
|
(setq Num2 (sqrt Num1)) | : 6.0 |
(1) 기능
지정 숫자나 변수의 자연대수(log number)를 구하는 함수입니다.
(2) 사용법
(log Number)
(3) 예제
(log 4.5) | : 1.50408 |
(log 1.22) | : 0.198851 |
(log 25) | : 3.21888 |
(setq Num1 30) |
|
(setq Num2 (log Num1)) | : 3.4012 |
(1) 기능
지정 숫자나 변수의 절대값을 구하는 함수입니다.
(2) 사용법
(abs Number)
(3) 예제
(abs -4) | : 4 |
(abs 4) | : 4 |
(abs 2.5) | : 2.5 |
(setq Num1 30) |
|
(setq Num2 (abs Num1)) | : 30 |
(1) 기능
나열된 숫자나 변수 중에서 가장 큰 수를 리턴하는 함수입니다.
(2) 사용법
(max Number01 Number02 ....)
(3) 예제
(max 1 2 3 4 5) | : 5 |
(max 4 2 3 1) | : 4 |
(setq Num1 30 Num2 23) |
|
(setq Num3 10 Num4 31) |
|
(setq Num5 (max Num1 Num2 Num3 Num4)) | : 31 |
(1) 기능
나열된 숫자나 변수 중에서 가장 작은 수를 리턴하는 함수입니다.
(2) 사용법
(min Number01 Number02 .... )
(3) 예제
(min 1 2 3 4 5) | : 1 |
(min 4 2 3 1) | : 1 |
(setq Num1 30 Num2 23) |
|
(setq Num3 10 Num4 31) |
|
(setq Num5 (min Num1 Num2 Num3 Num4)) | : 10 |
14. GCD (Greatest Common Denominator)
(1) 기능
지정한 숫자나 변수에서 최대 공약수를 구하는 함수입니다.
(2) 사용법
(gcd Number01 Number02)
(3) 예제
(gcd 1 2) | : 1 |
(gcd 44 10) | : 2 |
(setq Num1 30 Num2 10) |
|
(setq Num3 (gcd Num1 Num2)) | : 10 |
(1) 기능
지정한 숫자나 변수를 e(자연대수)로 하는 제곱값을 구하는 함수
(2) 사용법
(exp number)
(3) 예제
(exp 2.0) | : 7.38906 |
(exp 1.0) | : 2.71828 |
(setq Num1 -0.4) |
|
(setq Num2 (exp Num1)) | : 0.67032 |
(1) 기능
상수 π(3.141592....)값을 구하는 함수라기보다는 변수에 가까운 함수입니다.
변수명으로 PI를 사용할 수 없으며 사용시에는 심각한 에러를 야기시킵니다.
(2) 사용법
(pi)
(3) 예제
(setq DA090 (/ PI 2.0)) | : 1.5708 -> Degree의 90˚ |
(setq DA180 PI) | : 3.141592 -> Degree의 180˚ |
(setq DA270 (* PI 1.5)) | : 4.71239 -> Degree의 270˚ |
(setq DA360 (* PI 2.0)) | : 6.28319 -> Degree의 360˚ |
18. SIN
(1) 기능
지정 각도의 SINE값을 구하는 Sine 함수.
(2) 사용법
(SIN number)
(3) 예
(setq a (sin 25))
19. COS
(1) 기능
지정 각도의 Cosin값을 구하는 함수.
(2) 사용법
(COS number)
(3) 예
(setq a (cos 25))
20. ATAN
(1) 기능
지정 각도의 ARCTANGENT값을 구하는 함수.
(2) 사용법
(ATAN number)
(3) 예
(setq a (atan 0.2))
출처 : http://www.lispcenter.net/Lisp/Lisp_07.htm
'유용한 글 > AutoCad_Lisp' 카테고리의 다른 글
7. 수학 함수 (0) | 2018.06.17 |
---|