[bknr-cvs] ksprotte changed trunk/projects/bos/m2/allocation.lisp

BKNR Commits bknr at bknr.net
Wed Jul 23 11:02:25 UTC 2008


Revision: 3574
Author: ksprotte
URL: http://bknr.net/trac/changeset/3574

working on allocation
U   trunk/projects/bos/m2/allocation.lisp

Modified: trunk/projects/bos/m2/allocation.lisp
===================================================================
--- trunk/projects/bos/m2/allocation.lisp	2008-07-23 09:34:27 UTC (rev 3573)
+++ trunk/projects/bos/m2/allocation.lisp	2008-07-23 11:02:25 UTC (rev 3574)
@@ -561,22 +561,23 @@
 			(let ((m2 (find-next-m2)))
 			  (cond
 			    ((null m2)
-			     (return nil))
-			    ((not (in-polygon-p (m2-x m2) (m2-y m2) vertices))
-			     (when (and (stripe-dissection-p (m2-x m2) stripe)
-					(or result new-seen))
-			       ;; Wenn wir hier weitermachen und das Polygon
-			       ;; nicht konvex ist, ist das Ergebnis nicht
-			       ;; zusammenhaengend.  Also aufgeben und in der
-			       ;; rechten Haelfe des Stripes weitermachen.
-			       (setf x new-x
-				     y new-y
-				     seen (append new-seen (reverse result)))
-			       (let ((right (split-stripe-vertically stripe)))
-				 (return-from find-free-m2s/stripe
-				   (if right
-				       (find-free-m2s/stripe n right)
-				       nil)))))
+			     (return nil))                                                                                     
+			    ((or (not (m2s-connected-p result))
+                                 (and (not (in-polygon-p (m2-x m2) (m2-y m2) vertices))
+                                      (stripe-dissection-p (m2-x m2) stripe)
+                                      (or result new-seen)))			    
+                             ;; Wenn wir hier weitermachen und das Polygon
+                             ;; nicht konvex ist, ist das Ergebnis nicht
+                             ;; zusammenhaengend.  Also aufgeben und in der
+                             ;; rechten Haelfe des Stripes weitermachen.
+                             (setf x new-x
+                                   y new-y
+                                   seen (append new-seen (reverse result)))
+                             (let ((right (split-stripe-vertically stripe)))
+                               (return-from find-free-m2s/stripe
+                                 (if right
+                                     (find-free-m2s/stripe n right)
+                                     nil))))
 			    ((null (m2-contract m2))
 			     (return m2))))))))
         (dotimes (dummy n
@@ -585,8 +586,10 @@
                           y new-y
                           seen new-seen)
                     (when result
+                      (assert (= (length result) n))
 		      (with-slots (area) stripe
-			(decf (allocation-area-free-m2s area) n)
+                        (print (list '********** 'will-decrease-count-by n))                        
+                        (decf (allocation-area-free-m2s area) n)
 			(when (null (allocation-area-free-m2s area))
 			  (deactivate-allocation-area area))))
 		    result))




More information about the Bknr-cvs mailing list