www.spaceplanner.app

Web client to the spaceplanner API
git clone git://jacobedwards.org/www.spaceplanner.app
Log | Files | Refs

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:
Mfiles/floorplans/floorplan/editor.js | 22++++++++++++++++++++++
Mfiles/floorplans/floorplan/geometry.js | 4++++
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)