🐛 Fix CLJS bounds-map deduplication and update intersect test

In the CLJS branch of resolve-modif-tree-ids, get-parent-seq returns
shape maps, but the js/Set was populated with UUIDs. As a result,
.has and .add were passing full shape maps instead of their :id
values, so parent deduplication never worked in ClojureScript.
Fixed both .has and .add calls to extract (:id %) from the shape map.

Also update the collinear-overlap test in geom-shapes-intersect-test
to expect true now that the ::coplanar keyword fix (commit 847bf51)
makes on-segment? collinear checks actually reachable.
This commit is contained in:
Andrey Antukh 2026-04-14 19:43:36 +00:00
parent b66b39735a
commit a4647b33ee
2 changed files with 6 additions and 8 deletions

View File

@ -79,10 +79,10 @@
(loop [new-ids
(->> (cfh/get-parent-seq objects cid)
(take-while #(and (cfh/group-like-shape? %)
(not (.has ids %))))
(not (.has ids (:id %)))))
(seq))]
(when (some? new-ids)
(.add ids (first new-ids))
(.add ids (:id (first new-ids)))
(recur (next new-ids))))
(recur (next base-ids)))))
ids)))

View File

@ -52,12 +52,10 @@
[(pt 0 5) (pt 10 5)]))))
(t/testing "Two collinear overlapping segments"
;; NOTE: The implementation compares orientation result (namespaced keyword ::coplanar)
;; against unnamespaced :coplanar, so the collinear branch never triggers.
;; Collinear overlapping segments are NOT detected as intersecting.
(t/is (false? (gint/intersect-segments?
[(pt 0 0) (pt 10 0)]
[(pt 5 0) (pt 15 0)]))))
;; Collinear overlapping segments correctly detected as intersecting.
(t/is (true? (gint/intersect-segments?
[(pt 0 0) (pt 10 0)]
[(pt 5 0) (pt 15 0)]))))
(t/testing "Two non-overlapping collinear segments"
(t/is (false? (gint/intersect-segments?