| 564 | | (return nil)) |
|---|
| 565 | | ((not (in-polygon-p (m2-x m2) (m2-y m2) vertices)) |
|---|
| 566 | | (when (and (stripe-dissection-p (m2-x m2) stripe) |
|---|
| 567 | | (or result new-seen)) |
|---|
| 568 | | ;; Wenn wir hier weitermachen und das Polygon |
|---|
| 569 | | ;; nicht konvex ist, ist das Ergebnis nicht |
|---|
| 570 | | ;; zusammenhaengend. Also aufgeben und in der |
|---|
| 571 | | ;; rechten Haelfe des Stripes weitermachen. |
|---|
| 572 | | (setf x new-x |
|---|
| 573 | | y new-y |
|---|
| 574 | | seen (append new-seen (reverse result))) |
|---|
| 575 | | (let ((right (split-stripe-vertically stripe))) |
|---|
| 576 | | (return-from find-free-m2s/stripe |
|---|
| 577 | | (if right |
|---|
| 578 | | (find-free-m2s/stripe n right) |
|---|
| 579 | | nil))))) |
|---|
| | 564 | (return nil)) |
|---|
| | 565 | ((or (not (m2s-connected-p result)) |
|---|
| | 566 | (and (not (in-polygon-p (m2-x m2) (m2-y m2) vertices)) |
|---|
| | 567 | (stripe-dissection-p (m2-x m2) stripe) |
|---|
| | 568 | (or result new-seen))) |
|---|
| | 569 | ;; Wenn wir hier weitermachen und das Polygon |
|---|
| | 570 | ;; nicht konvex ist, ist das Ergebnis nicht |
|---|
| | 571 | ;; zusammenhaengend. Also aufgeben und in der |
|---|
| | 572 | ;; rechten Haelfe des Stripes weitermachen. |
|---|
| | 573 | (setf x new-x |
|---|
| | 574 | y new-y |
|---|
| | 575 | seen (append new-seen (reverse result))) |
|---|
| | 576 | (let ((right (split-stripe-vertically stripe))) |
|---|
| | 577 | (return-from find-free-m2s/stripe |
|---|
| | 578 | (if right |
|---|
| | 579 | (find-free-m2s/stripe n right) |
|---|
| | 580 | nil)))) |
|---|