본문 바로가기
AutoCAD/Lisp Subroutine

삼각함수

by Crony 2012. 8. 16.



The Well  중에서 acad.lsp에서 발췌하였습니다.

자주 사용하지는 않지만 필요하신분들이 계실것 같아서 올립니다^^

;TANGENT FUNCTION
(defun Tan (x) 
  (cond ((= (cos x) 0.0)(if (minusp x) -1.0E200 1.0E200)) 
            (t (/ (sin x) (cos x))) 
  ) 
) 
;SECANT FUNCTION
(defun Sec (x) 
  (if (= (cos x) 0) 
    (if (minusp x) -1.0E200 1.0E200) 
    (/ 1.0 (cos x)) 
  ) 
) 
;;COSECANT FUNCTION
(defun CoSec (x) 
  (if (= (sin x) 0) 
    (if (minusp x) -1.0E200 1.0E200) 
    (/ 1.0 (sin x)) 
  ) 
) 
;COTANGENT FUNCTION
(defun CoTan (x) 
  (cond ((= (sin x) 0.0) 
       (if (minusp x) -1.0E200 1.0E200)) 
              (t (/ (cos x) (sin x)))) 
) 
;ARC COSECANT FUNCTION
(defun ACoSec (x) 
  (cond ((< (abe x) 1.0)(princ "\n*ERROR* (abs x) < 1.0 from ACSC function\n") nil) 
         ((= x 1.0) 0.0) 
         ((= x -1.0) pi) 
         (T (atan (/ (/ 1.0 x)(sqrt(- 1.0 (/ 1.0 (* x x))))))) 
  ) 
) 
;ARC SECANT FUNCTION
(defun ASec (x) 
  (cond ((< (abe x) 1.0)(princ "\n*ERROR* (abs x) < 1.0 from ASEC function\n") nil) 
            ((= x 1.0) 0.0) 
            ((= x -1.0) pi) 
           (T (- (/ pi 2.0) (atan (/ (/ 1.0 x)(sqrt(- 1.0 (/ 1.0 (* x x)))))))) 
  ) 
) 
;ARC SINE
(defun ASin (x) 
  (cond ((= x 1.0) (/ pi 2.0)) 
            ((= x -1.0) (/ pi -2.0)) 
            ((< (abs x) 1.0) (atan (/ x (sqrt(- 1.0 (* x x)))))) 
            (t (princ "\n*ERROR* (abs x) > 1.0 from ASIN function. \n") nil) 
  ) 
) 
;ARC COSINE
(defun ACoSin (x) 
  (cond  ((= x 1.0) 0.0) 
             ((= x -1.0) pi) 
             ((< (abs x) 1.0)(- (/ pi 2.0) (atan (/x (sprt(- 1.0 (* x x))))))) 
             (t (princ "\n*ERROR* (abs x) >1.0 from ACOS function\n") nil) 
  ) 
)