Tweaks in diagonal lines

This commit is contained in:
PMKuipers 2023-07-17 17:47:37 +02:00
parent 5ab38bb1c6
commit 57d02448c8
2 changed files with 10 additions and 10 deletions

View File

@ -197,10 +197,10 @@ export class SimpleLine {
}
if(this.specs.anchors[anchor].includes("top")){
y = 0;
dirY = 1;
dirY = -1;
} else if (this.specs.anchors[anchor].includes("bottom")) {
y = el.offsetHeight -1;
dirY = -1;
dirY = 1;
} else { // middle
y = el.offsetHeight / 2;
dirY = 0;
@ -264,22 +264,22 @@ export class SimpleLine {
// Determine basic h/w between start and end anchor to help determine desired control point length
const w = Math.max(elStartPos.x + startAnchor.x,elEndPos.x + endAnchor.x)
- Math.min(elStartPos.x + startAnchor.x,elEndPos.x + endAnchor.x);
const h = Math.max(elStartPos.y + startAnchor.y,elEndPos.x + endAnchor.y)
- Math.min(elStartPos.y + startAnchor.y,elEndPos.x + endAnchor.y);
const h = Math.max(elStartPos.y + startAnchor.y,elEndPos.y + endAnchor.y)
- Math.min(elStartPos.y + startAnchor.y,elEndPos.y + endAnchor.y);
const weight = Math.sqrt(h*h+w*w)/2;
// Determine start positions and end positions relative to container
const cStartPos = {
x: elStartPos.x + startAnchor.x,
y: elStartPos.y + startAnchor.y,
dirx: elStartPos.x + startAnchor.x + startAnchor.dir.x * this.specs.gravity.start * (w/2),
diry: elStartPos.y + startAnchor.y + startAnchor.dir.y * this.specs.gravity.start * (h/2),
dirx: elStartPos.x + startAnchor.x + startAnchor.dir.x * this.specs.gravity.start * weight,
diry: elStartPos.y + startAnchor.y + startAnchor.dir.y * this.specs.gravity.start * weight,
};
const cEndPos = {
x: elEndPos.x + endAnchor.x,
y: elEndPos.y + endAnchor.y,
dirx: elEndPos.x + endAnchor.x + endAnchor.dir.x * this.specs.gravity.end * (w/2),
diry: elEndPos.y + endAnchor.y + endAnchor.dir.y * this.specs.gravity.end * (h/2),
dirx: elEndPos.x + endAnchor.x + endAnchor.dir.x * this.specs.gravity.end * weight,
diry: elEndPos.y + endAnchor.y + endAnchor.dir.y * this.specs.gravity.end * weight,
};
// determine the bounding rectangle of the

View File

@ -37,7 +37,7 @@
import { SimpleLine } from "../amd/src/simpleline.js";
let line = new SimpleLine("#start","#end", {autorefresh: 10});
let line2 = new SimpleLine("#start2","#end2",{autorefresh: 10});
let line2 = new SimpleLine("#start2","#end2",{autorefresh: 10, anchors: {start: ["bottom","right"], end: ["top","left"]}});
</script>
</head>