如何将一个点的y坐标移动到与一条直线相交?

3

enter image description here

我有一个代表圆心的点 c 。在我拖动圆圈后,我希望它的y坐标 hmm 捕捉到点 a b之间绘制的线。如何解决 hmm ?
到目前为止,我已经能够找到点 a b之间的中间 y 值。但是,它没有考虑到点 c 的 x 值。
const snapYToLine = (aY, bY) => {
  const yDist = bY - aY;
  return aY + (yDist * 0.5);
}

const a = { x: 10, y: 10 };
const b = { x: 50, y: 30 };
const c = { x: 20, y: 0 }; // not doing anything with this yet...

const hmm = snapYToLine(a.y, b.y); // will need to include c.x here...
console.log(hmm);
1个回答

2
CX坐标取决于您拖动它的位置,但Y坐标应该使点保持在AB之间的直线上吗?
两点(A和B)之间的直线方程为: (x - Xa) / (Xa - Xb) = (y - Ya) / (Ya - Yb)
因此,hmm = (x - Xa) * (Ya - Yb) / (Xa - Xb) + Ya
因为这是一条直线的方程,您可以在A/BX坐标上拖动点C,仍然可以找到相应的Y值。
希望我理解了您的问题。

1
做到了。谢谢你。为了以后的参考,我建议用(Xc - Xa)替换(x - Xa) - Christopher Stevens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接