Hallo,
ich habe zwei Rechtecke gegeben. An jedem Rechteck befinden sich 8 Verbindungspunkte (oben, unten, links, rechts und die Eckpunkte). Jetzt möchte ich eine Linie von Rechteck A zu Rechteck B zeichnen und dabei die beiden kürzesten Verbindungspunkte herausbekommen.
Es geht hierbei um Javascript Code, ich habe schon einmal etwas funktionierendes aufgebaut, aber vielleicht geht es ja optimaler.
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
const startRectConnectorPositions = lane.startRect.getConnectorPositions(); // Alle Verbindungspunkte von Rechteck A holen
const targetRectConnectorPositions = lane.targetRect.getConnectorPositions(); // Alle Verbindungspunkte von Rechteck B holen
const laneConnections = [];
startRectConnectorPositions.forEach(startPosition => { // Alle Eckpunkte von A mit allen Eckpunkten von B verrechnen
targetRectConnectorPositions.forEach(targetPosition => {
const distance = Math.hypot(targetPosition.x - startPosition.x, targetPosition.y - startPosition.y); // Die Distanz der Punkte berechnen
laneConnections.push({
start: startPosition,
target: targetPosition,
distance: distance
});
});
});
const targetLaneConnection = laneConnections.reduce((a, b) => a.distance < b.distance ? a : b); // Die kürzeste Distanz aus dem Array holen
|
Vielleicht gibt es da ja etwas performanteres / eleganteres