|
From: <k-...@us...> - 2013-04-22 15:02:09
|
Revision: 618
http://sourceforge.net/p/euslisp/code/618
Author: k-okada
Date: 2013-04-22 15:02:00 +0000 (Mon, 22 Apr 2013)
Log Message:
-----------
use searched-edgeq, impremented as convex-hull-3d-ol of primptpatch.l
Modified Paths:
--------------
trunk/EusLisp/lisp/geo/primt.l
Modified: trunk/EusLisp/lisp/geo/primt.l
===================================================================
--- trunk/EusLisp/lisp/geo/primt.l 2013-04-22 13:10:57 UTC (rev 617)
+++ trunk/EusLisp/lisp/geo/primt.l 2013-04-22 15:02:00 UTC (rev 618)
@@ -350,6 +350,7 @@
(newbody)
(faceq)
(edgeq)
+ (searched-edgeq)
(searched-v)
)
(setq *points* vertices
@@ -396,16 +397,29 @@
p1 p2 p3 (set-difference *vertices* searched-v :key #'car)))
(setq newedges (send newface :edges))
(dolist (ne newedges)
- (if (memq ne edgeq)
- (progn
- (setq edgeq (delete ne edgeq))
- (let ((ver))
- (dolist (v (send ne :vertices))
- (setq ver (find v *vertices* :key #'car))
- (if (enclosed-vertexp ver)
- (setq *vertices* (delete ver *vertices* :count 1 )
- )))))
- (setq edgeq (append edgeq (list ne)))))
+ (cond ((memq ne edgeq)
+ (setq edgeq (delete ne edgeq))
+ (setq searched-edgeq (cons ne searched-edgeq))
+ (let ((ver))
+ (dolist (v (send ne :vertices))
+ (setq ver (find v *vertices* :key #'car))
+ (if (enclosed-vertexp ver)
+ (setq *vertices* (delete ver *vertices* :count 1)))
+ ))
+ )
+ ((memq ne searched-edgeq)
+ (format *error-output* "~%re-searched edge:~A~%" ne)
+ (let ((*coplanar-threshold*
+ (/ *coplanar-threshold* 2)))
+ (format *error-output*
+ "thd:~A->~A~%" (* 2 *coplanar-threshold*)
+ *coplanar-threshold*)
+ (if (< *coplanar-threshold* 0.00001)
+ (error "edgeq error!!")
+ (return-from convex-hull-3d
+ (convex-hull-3d vertices)))))
+ (t
+ (setq edgeq (append edgeq (list ne))))))
(setq faceq (cons newface faceq))
(nconc *faces* (list newface))
(if *debug* (print (length *faces* )))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|