From caff77dddfa7fec7610276afd1aa02ab8b7f5e8b Mon Sep 17 00:00:00 2001 From: lau90eth Date: Tue, 4 Nov 2025 10:35:45 +0100 Subject: [PATCH 1/3] fix #87: untangling phase to reduce trace crossings --- src/solvers/UntanglingSolver.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/solvers/UntanglingSolver.ts diff --git a/src/solvers/UntanglingSolver.ts b/src/solvers/UntanglingSolver.ts new file mode 100644 index 0000000..dbf4ffe --- /dev/null +++ b/src/solvers/UntanglingSolver.ts @@ -0,0 +1,25 @@ +import type { TraceLine } from "../types" + +export class UntanglingSolver { + solve(traces: TraceLine[]): TraceLine[] { + return traces.map(trace => { + const dx = Math.abs(trace.start.x - trace.end.x) + const dy = Math.abs(trace.start.y - trace.end.y) + + if (dx > 3 && dy < 0.5) { + const midX = (trace.start.x + trace.end.x) / 2 + const offset = trace.start.y > 0 ? 1.5 : -1.5 + + return { + ...trace, + path: [ + trace.start, + { x: midX, y: trace.start.y + offset }, + trace.end + ] + } + } + return trace + }) + } +} From ecdf1cffdb4273f494b56cd03c8af964bcf43764 Mon Sep 17 00:00:00 2001 From: lau90eth Date: Tue, 4 Nov 2025 11:16:43 +0100 Subject: [PATCH 2/3] fix: format and add missing types.ts --- package.json | 2 +- principale | 13 +++++++++++++ src/schematicTracePipelineSolver.ts# | 6 ++++++ src/solvers/UntanglingSolver.ts | 6 +++--- 4 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 principale create mode 100644 src/schematicTracePipelineSolver.ts# diff --git a/package.json b/package.json index c526574..63e4fe2 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "format:check": "biome format ." }, "devDependencies": { - "@biomejs/biome": "^2.2.2", + "@biomejs/biome": "^2.3.3", "@react-hook/resize-observer": "^2.0.2", "@tscircuit/math-utils": "^0.0.19", "@types/bun": "^1.2.21", diff --git a/principale b/principale new file mode 100644 index 0000000..0dadaa0 --- /dev/null +++ b/principale @@ -0,0 +1,13 @@ +code src/solvers/UntanglingSolver.ts +@' +export interface Point { + x: number; + y: number; +} + +export interface TraceLine { + start: Point; + end: Point; + path?: Point[]; +} +'@ | Out-File -FilePath src/types.ts -Encoding utf8 diff --git a/src/schematicTracePipelineSolver.ts# b/src/schematicTracePipelineSolver.ts# new file mode 100644 index 0000000..0589496 --- /dev/null +++ b/src/schematicTracePipelineSolver.ts# @@ -0,0 +1,6 @@ +import { UntanglingSolver } from "./solvers/UntanglingSolver.ts" + +const traces = this.traceLinesSolver.solve(pairwiseConnections) +const untangledTraces = new UntanglingSolver().solve(traces) + +return untangledTraces \ No newline at end of file diff --git a/src/solvers/UntanglingSolver.ts b/src/solvers/UntanglingSolver.ts index dbf4ffe..d033370 100644 --- a/src/solvers/UntanglingSolver.ts +++ b/src/solvers/UntanglingSolver.ts @@ -2,7 +2,7 @@ export class UntanglingSolver { solve(traces: TraceLine[]): TraceLine[] { - return traces.map(trace => { + return traces.map((trace) => { const dx = Math.abs(trace.start.x - trace.end.x) const dy = Math.abs(trace.start.y - trace.end.y) @@ -15,8 +15,8 @@ export class UntanglingSolver { path: [ trace.start, { x: midX, y: trace.start.y + offset }, - trace.end - ] + trace.end, + ], } } return trace From 5e7da8cfe979eaaf495fc7cc6ed2b81aa3216636 Mon Sep 17 00:00:00 2001 From: lau90eth Date: Tue, 4 Nov 2025 11:22:20 +0100 Subject: [PATCH 3/3] fix: add missing types.ts for TraceLine --- src/types.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/types.ts diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..2e9dc45 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,10 @@ +export interface Point { + x: number + y: number +} + +export interface TraceLine { + start: Point + end: Point + path?: Point[] +}