AutoLISP 取得2點中點
因為沒有內建函數可以直接得到,
所以大部分的人都會把點座標的X跟Y取出相加除以2,
這裡提供另外兩個方法,
方法一:
而寫成函數是下面這樣:
方法二:
所以大部分的人都會把點座標的X跟Y取出相加除以2,
;;;P1 為第一點 ;;;P2 為第二點 ;;;P3 為兩點中點 (setq P1 (list 0 0 0)) (setq P2 (list 10 0 0)) (setq P3 (list (/ (+ (car P1) (car P2)) 2) (/ (+ (cadr P1) (cadr P2)) 2) (/ (+ (caddr P1) (caddr P2)) 2) ))而得到中點,
這裡提供另外兩個方法,
方法一:
;;;P1 為第一點 ;;;P2 為第二點< ;;;P3 為兩點中點 (setq P1 (list 0 0 0)) (setq P2 (list 10 0 0)) (setq P3 (polar P1 (angle P1 P2) (/ (distance P1 P2) 2)))
(defun K:P2PMID(PT1 PT2 /);;;求得2點中點 (polar PT1 (angle PT1 PT2) (/ (distance PT1 PT2) 2)) )
方法二:
;;;P1 為第一點 ;;;P2 為第二點 ;;;P3 為兩點中點 (setq P1 (list 0 0 0)) (setq P2 (list 10 0 0)) (setq pt3 (mapcar '(lambda (x y) (/ (+ x y) 2)) P1 P2))
留言
張貼留言