commit e87407214f3c61636eead9a4e68a3037a79ba527
parent 193df467957cbc312ff3b7a6c73f2036a268a00c
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date: Mon, 14 Oct 2024 22:30:52 -0700
Alter point removal behavior
In essence, now the point is removed but points mapped to it are
remapped to each other if they're angle wouldn't change.
Diffstat:
2 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/files/floorplans/floorplan/editor.js b/files/floorplans/floorplan/editor.js
@@ -541,9 +541,31 @@ export class FloorplanEditor {
}
}
+ let editor = this
+ const pointsAngle = function(a, b) {
+ a = editor.backend.reqObj(a)
+ b = editor.backend.reqObj(b)
+ return new Vector2(a.x, a.y).angleTo(new Vector2(b.x, b.y))
+ }
+
for (let i in later) {
let t = backend.idType(later[i])
if (t === "pnt") {
+ let p = later[i]
+ for (let o in this.backend.mappedPoints[p]) {
+ let a1 = pointsAngle(p, o)
+ for (let o2 in this.backend.mappedPoints[p]) {
+ if (o2 === o) {
+ continue
+ }
+
+ let a2 = pointsAngle(p, o2)
+ console.warn(a1,a2,a1-a2, geometry.deg(Math.abs(a1-a2)))
+ if (geometry.deg(Math.abs(a1 - a2)) < 1) {
+ editor.backend.mapPoints({ a: o, b: o2 })
+ }
+ }
+ }
this.backend.removePoint(later[i], { unmap: true })
} else if (t === "fur") {
this.backend.removeFurniture(later[i])
diff --git a/files/floorplans/floorplan/geometry.js b/files/floorplans/floorplan/geometry.js
@@ -175,6 +175,10 @@ export function rad(deg) {
return deg * Math.PI / 180
}
+export function deg(rad) {
+ return rad * (180 / Math.PI)
+}
+
export function length(a, b, length) {
if (!length) {
return a.distanceTo(b)