亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 最小包圍圓.lsp

?? 計算幾何中的幾種lisp語言的算法
?? LSP
字號:
;;;************************************
;;;求最小包圍圓的lisp程序--------------
;;;其算法為參見了有關文獻--------------
;;;這種算法在退化很嚴重的情況結果也正確
;;;其中程序主段是核心算法,其他的附加程
;;;序為取點,畫點,畫圓和半徑,用來測試
;;;************************************
(defun C:test (/ olderr en errmsg oce oldmode ss ptlist x cen radius ptmax)
  ;;定義錯誤函數和預處理---------------
  (setvar "errno" 0)
  (setq olderr *error*)
  (defun *error* (msg / en errmsg)
    (setq en (getvar "errno"))
    (setq errmsg (strcat "errno=" (itoa en) "\nError:" msg))
    (alert errmsg)
    (setq *error* olderr)
  )
  (graphscr)
  (setq oldmode (getvar "osmode"))
  (setq oce (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (command ".ucs" "W")
  ;;取點,畫點,并對函數用時計算-------
  (setq sl ' ( (-4 . "<OR" )
	      (0 . "POINT")
	      (0 . "LINE")
	      (0 . "POLYLINE")
	      (0 . "LWPOLYLINE")
	      (-4 . "OR>" )))
  (setq ss (ssget sl))
  (setq ptlist (ssgetpoint1 ss))
  (setq t1 (getvar "CDATE"))
  (setq x (mincir ptlist))
  (setq t2 (getvar "CDATE"))
  (setq usetime (* (- t2 t1) 1e6))
  (princ (strcat "\n用時=" (rtos usetime 2 6) "秒"))
  (if (= nil x)
    (progn 
      (alert "點的有效數目太小,請重新輸入!")
      (command ".ucs" "p")
      (setvar "osmode" oldmode)
      (setvar "cmdecho" oce)
      (princ "\n")
      (princ)
    )
    (progn 
      (setq cen (car x) radius (cadr x) ptmax (caddr x))
      ;;;畫圓及半徑,列出圓的圓心半徑值
      (entmake
        (append
          '((0 . "circle") (100 . "AcDbEntity") (100 . "AcDbCircle")) 
          (list (cons 10 cen))(list (cons 40 radius))(list (cons 62 1))
        )
      )
      (entmake
        (append
          '((0 . "line") (100 . "AcDbEntity") (100 . "AcDbLine")) 
          (list (cons 10 cen))(list (cons 11 ptmax))(list (cons 62 1))
        )
      )
      (command ".ucs" "p")
      (setvar "osmode" oldmode)
      (setvar "cmdecho" oce)
      (princ "\n")
      (list cen radius)
    )
  )
)
;;;************************************
;;;求最小包圍圓的函數,空集返回空集,否
;;;則返回最小圓的圓心,半徑和圓上的一點
;;;這是程序的主段----------------------
;;;************************************
(defun mincir (ptlist / p1 p2 p3 ptmax cen_r cen radius)
  ;;定義中點函數,本來R2004版中無須定義
  ;;但不知道為什么到R2006版沒有定義了。
  (defun mid (p1 p2)
    (polar p1 (angle p1 p2) (* (distance p1 p2) 0.5)) 
  )
  ;;判斷有效點個數---------------------
  (cond
    ((= (length ptlist) 0)
     nil
    )
    ((= (length ptlist) 1)
     (progn
       (alert "點集合為一點,最小圓半徑為0")
       (list (car ptlist) 0 (car ptlist))
     )
    )
    ((= (length ptlist) 2)
     (progn
       (alert "點集合為兩點,最小圓直徑為其兩點距離,\n圓心為其連線中點")
       (setq cen (mid (car ptlist) (cadr ptlist)) radius (/ (distance (car ptlist) (cadr ptlist)) 2))
       (list cen radius (car ptlist))
     )
    )
    (t
     (progn
       ;;上面啰嗦的一大段在實際情況中一般不會出現
       ;;判斷點是否在圓內------------------------
       (defun in1 (pt cen r)
	 (if (< (- (distance pt cen) r) 1e-8)
	   t
	   nil
	 )
       )
       ;;判斷點集是否在圓內----------------------
       (defun in2 (ptl cen r)
	 (if (apply 'and (mapcar '(lambda (x) (in1 x cen r))  ptl))
	   t
	   nil
	 )
       )
       ;;定義三點最小圓圓心及其半徑,若是銳角三角
       ;;形,則是其三點圓,否則是其最大邊的直徑圓
       (defun 3pc (pa pb pc / a b c l p ja jb jc ppa ppb ppc cen radius)
	 (setq a (list (distance pb pc) pa))
	 (setq b (list (distance pc pa) pb))
	 (setq c (list (distance pa pb) pc))
	 (setq l (list a b c))
	 (setq p (/ (+ (car a) (car b) (car c)) 2))
	 (setq a (nth (car (vl-sort-i (mapcar 'car l) '>)) l))
	 (setq b (nth (cadr (vl-sort-i (mapcar 'car l) '>)) l))
	 (setq c (nth (caddr (vl-sort-i (mapcar 'car l) '>)) l))
	 (setq l (+ (* (car b) (car b)) (* (car c) (car c)) (* (car a) (car a) -1.0)))
	 ;;上面l利用了余弦定理作為判斷-----------
	 (if (< l 1e-8)
	   (list (mid (cadr b) (cadr c))(/ (car a) 2)(list (cadr b) (cadr c) (cadr a)))
	   (progn 
	     (setq ja (angle pb pc))
	     (setq jb (angle pc pa))
	     (setq jc (angle pa pb))
	     (setq ppc (polar (mid pa pb) (+ (/ pi 2) jc) p))
	     (setq ppa (polar (mid pb pc) (+ (/ pi 2) ja) p))
	     (setq ppb (polar (mid pc pa) (+ (/ pi 2) jb) p))
	     (setq cen (inters ppc (mid pa pb) ppa (mid pb pc) nil))
	     (setq radius (distance cen pa))
	     (list cen radius (list pa pb pc))
	   )
	 )
       )
       ;;定義四點的最小圓圓心半徑,并返回三點坐標
       (defun 4pc (p1 p2 p3 ptmax / pts 3pt)
	 (setq pts (list (3pc p1 p2 p3) (3pc p1 p2 ptmax) (3pc p1 p3 ptmax) (3pc p2 p3 ptmax)))
	 (setq 3pt (vl-sort-i (mapcar 'cadr pts) '<))
	 (setq pts (list (nth (car 3pt) pts)  (nth (cadr 3pt) pts)
		         (nth (caddr 3pt) pts)(nth (cadddr 3pt) pts)))
	 (nth (vl-position t (mapcar '(lambda (x) (in2 (list p1 p2 p3 ptmax) (car x) (cadr x))) pts)) pts)
       )
       ;;定義求點集中離圓心最遠的點的函數--------
       (defun maxd-cir (ptl cen / distl)
	 (setq distl (mapcar '(lambda (x) (distance x cen)) ptl))
	 (nth (car (vl-sort-i distl '>)) ptl)
       )
       ;;開始遞歸運算----------------------------
       (setq p1	(car ptlist) p2 (cadr ptlist) p3 (caddr ptlist))
       (setq cen_r (3pc p1 p2 p3))
       (setq ptmax (maxd-cir ptlist (car cen_r)))
       (while (= nil (in1 ptmax (car cen_r) (cadr cen_r)))
         (setq cen_r (4pc p1 p2 p3 ptmax)) 
         (setq p1 (car (caddr cen_r)) p2 (cadr (caddr cen_r)) p3 (caddr (caddr cen_r)))
	 (setq ptmax (maxd-cir ptlist (car cen_r)))
       ) 
       (list (car cen_r) (cadr cen_r) ptmax)
      );;for progn
    );;  for t    
  );;    for cond 
);;      for defun
;;以下代碼來自曉東
;;定義取點函數----
(defun ssgetpoint (ss / i listpp a b c) 
  (setq i 0 listpp nil ) 
  (if ss 
    (repeat (sslength ss) 
      (setq a (ssname ss i)) 
      (setq b (entget a)) 
      (setq c (cdr (assoc 10 b))) 
      (setq listpp (cons c listpp)) 
      (setq i (1+ i))  
    ) 
  ) 
  listpp 
)
(defun ssgetpoint1 (ss / i listpp a b c) 
  (setq i 0 listpp nil ) 
  (if ss 
    (repeat (sslength ss) 
      (setq a (ssname ss i)) 
      (setq b (entget a))
      (setq ename (cdr (assoc 0 b)))
      (cond
	( (or nil (= ename  "POLYLINE") (= ename "LWPOLYLINE"))
	  (progn
	    (setq c (GetListOfPline a))
	    (setq listpp (append c listpp))
	  )
        )
	( (= ename "LINE")
	  (progn 
            (setq c (cdr (assoc 10 b)))
            (setq d (cdr (assoc 11 b)))
            (setq listpp (cons c listpp))
            (setq listpp (cons d listpp))
	  )
	)
	( (= ename "POINT")
	  (progn
	    (setq c (cdr (assoc 10 b)))
	    (setq listpp (cons c listpp))
	  )
	)
      )
      (setq i (1+ i))
    )	    
  )  
  listpp 
)
;; Get all nodes of the LWPolyline, Polyline.
(defun GetListOfPline (EntityName / SSE_Pline N newEntityName)
  (setq SSE_Pline (entget EntityName))
  (setq LastList nil)
  (if (= (cdr (assoc 0 SSE_Pline)) "LWPOLYLINE")
    (progn
      (setq LastList (LIST (LIST 0 0)))
      (setq N 0)
      (while (/= (nth N SSE_Pline) nil)
	(if (= (car (nth N SSE_Pline)) 10)
	  (setq	LastList (append LastList
				 (list (list (cadr (nth N SSE_Pline))
					     (caddr (nth N SSE_Pline))
					     0
				       )
				 )
			 )
	  )
	)
	(setq N (+ N 1))
      )
      (setq LastList (cdr LastList))
    )
  )
  (if (= (cdr (ASSOC 0 SSE_Pline)) "POLYLINE")
    (PROGN
      (setq LastList (list (list 0 0)))
      (setq newEntityName (entnext EntityName))
      (while (= (cdr (assoc 0 (entget newEntityName))) "VERTEX")
	(setq
	  LastList (append
		     LastList
		     (list
		       (list (cadr (assoc 10 (entget newEntityName)))
			     (caddr (assoc 10 (entget newEntityName)))
			     0
		       )
		     )
		   )
	)
	(setq newEntityName (entnext newEntityName))
      )
      (setq LastList (cdr LastList))
    )
  )
  (setq LastList LastList)
) ;_defun

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合久久久久| 91久久精品网| 在线观看日韩电影| 日韩精品综合一本久道在线视频| 国产精品久久久久久妇女6080| 水蜜桃久久夜色精品一区的特点| 成人一道本在线| 日韩欧美国产成人一区二区| 亚洲毛片av在线| 波多野结衣一区二区三区| 在线不卡免费欧美| 伊人夜夜躁av伊人久久| youjizz国产精品| 久久久精品一品道一区| 久久不见久久见中文字幕免费| 精品1区2区3区| 亚洲国产综合在线| 日本乱码高清不卡字幕| 日韩理论片一区二区| 国产成人在线免费| 久久青草国产手机看片福利盒子| 蜜桃视频在线一区| 欧美一区二区三区视频在线| 亚洲成人午夜影院| 欧美视频在线观看一区二区| 亚洲欧美成aⅴ人在线观看| 懂色av中文一区二区三区| 久久久久久久网| 国产电影一区二区三区| 亚洲国产高清不卡| 国产成人精品三级麻豆| 国产精品沙发午睡系列990531| 国产成人午夜精品影院观看视频| 久久伊人蜜桃av一区二区| 国产一区在线精品| 国产三级精品在线| 成人免费视频视频在线观看免费| 欧美国产一区在线| 97久久人人超碰| 亚洲人成7777| 欧美日韩国产免费| 美女在线视频一区| 国产亚洲短视频| 99久久精品国产导航| 亚洲日本一区二区| 欧美日韩一级黄| 青青草成人在线观看| 欧美精品一区二区三区蜜臀| 国产精品99久久久久久有的能看| 国产精品久线在线观看| 欧美在线视频你懂得| 日韩电影在线免费观看| 精品国产乱码久久久久久影片| 国产精品一区二区免费不卡| 亚洲视频一区二区免费在线观看| 91电影在线观看| 精品一区精品二区高清| 欧美激情综合五月色丁香| 色综合天天综合网国产成人综合天| 玉足女爽爽91| 欧美va亚洲va香蕉在线| 国产精品自拍一区| 亚洲午夜国产一区99re久久| 精品欧美乱码久久久久久 | 一本到不卡精品视频在线观看| 伊人一区二区三区| 亚洲精品一区二区精华| 欧美系列亚洲系列| 激情综合色丁香一区二区| 中文字幕一区在线| 日韩一区二区在线观看视频| 福利一区福利二区| 日本欧美加勒比视频| 国产精品麻豆欧美日韩ww| 欧美一区三区二区| 97久久人人超碰| 国产又粗又猛又爽又黄91精品| 一区二区三区小说| 国产欧美综合色| 欧美一区二区播放| 色婷婷久久99综合精品jk白丝| 秋霞午夜av一区二区三区| 亚洲欧美一区二区三区极速播放| 欧美精品一区二区三区久久久| 欧美三级中文字| 99久久精品情趣| 国产精品综合av一区二区国产馆| 亚洲高清免费观看高清完整版在线观看| 久久久久免费观看| 日韩午夜电影在线观看| 欧美日韩精品免费| 91丨porny丨国产入口| 国产精品99久久久久久宅男| 久久99精品国产麻豆婷婷| 午夜电影网亚洲视频| 日韩精品亚洲一区二区三区免费| 国产精品毛片久久久久久久| 2020国产精品自拍| 欧美成va人片在线观看| 欧美精品乱码久久久久久按摩| 色网站国产精品| 9人人澡人人爽人人精品| 成人小视频在线| 国产精品一区专区| 国产自产高清不卡| 蜜臀av一区二区| 麻豆国产欧美一区二区三区| 婷婷成人综合网| 日韩精品一级二级| 日本系列欧美系列| 石原莉奈在线亚洲二区| 亚瑟在线精品视频| 五月婷婷另类国产| 日本aⅴ免费视频一区二区三区| 亚洲v中文字幕| 青青草原综合久久大伊人精品| 日本不卡中文字幕| 蜜桃视频一区二区| 国内精品久久久久影院色| 韩国av一区二区三区| 国产在线一区二区| 成人av资源在线观看| 91亚洲男人天堂| 欧美日韩国产系列| 日韩欧美在线网站| 国产亚洲精品超碰| 亚洲精品日产精品乱码不卡| 亚洲国产一区二区三区| 日韩成人免费看| 精品一区二区三区的国产在线播放 | 亚洲永久精品国产| 亚洲国产成人av网| 蜜臀av一区二区在线免费观看| 精品中文字幕一区二区| 福利91精品一区二区三区| 色综合欧美在线视频区| 制服丝袜亚洲色图| 久久久久综合网| 亚洲精品乱码久久久久久 | 欧美亚洲综合久久| 日韩一级片网址| 日本在线不卡一区| 国产精品一区二区男女羞羞无遮挡| 成人免费毛片高清视频| 欧美午夜在线观看| 久久新电视剧免费观看| 亚洲色大成网站www久久九九| 亚洲成人av电影在线| 国内外精品视频| 欧美性感一区二区三区| 精品国产区一区| 一区二区三区四区亚洲| 精品一区二区精品| 日本黄色一区二区| 久久久久久久久久电影| 亚洲激情图片小说视频| 国产在线视视频有精品| 欧美亚洲愉拍一区二区| 国产亚洲人成网站| 日韩精品免费专区| 91论坛在线播放| wwww国产精品欧美| 亚洲一区二区av在线| 国产福利一区二区三区视频在线 | 日韩午夜小视频| 18成人在线观看| 国产一区二区三区在线观看免费| 一本到不卡免费一区二区| 久久一二三国产| 午夜精品aaa| 色欲综合视频天天天| 国产午夜精品一区二区| 日本成人中文字幕在线视频| 91黄视频在线| 国产精品白丝在线| 国产真实乱子伦精品视频| 欧美人xxxx| 亚洲自拍偷拍网站| 97se亚洲国产综合自在线观| 精品不卡在线视频| 日韩精品每日更新| 欧美美女直播网站| 亚洲午夜三级在线| 91麻豆精品一区二区三区| 国产亚洲精品bt天堂精选| 久久国产精品区| 欧美一级理论片| 日韩主播视频在线| 欧美精品v国产精品v日韩精品 | 久久成人av少妇免费| 日韩欧美在线123| 午夜欧美视频在线观看| 色综合一区二区| 亚洲精品中文字幕乱码三区| 99精品视频在线播放观看| 欧美激情在线看| 91一区二区在线| 国产精品久久久久久久蜜臀 | 国产乱码精品一区二区三区忘忧草 | 国产精品18久久久久|