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

        

 

 

5. 나머지(Rem)

    (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

 

 

8. Expt

    (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

 

 

9. SQRT

    (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

 

 

10. LOG

    (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

 

 

11. ABS

    (1) 기능

      지정 숫자나 변수의 절대값을 구하는 함수입니다.

    (2) 사용법

      (abs Number)

    (3) 예제

       (abs -4)

       : 4

       (abs 4)

       : 4

       (abs 2.5)

       : 2.5

       (setq Num1 30)

       

       (setq Num2 (abs Num1))

       : 30

 

 

12. MAX(Maximum)

    (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

 

 

13. MIN(Minimum)

    (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

 

 

15. EXP

    (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

 

 

17. PI

    (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

+ Recent posts