如何在边缘找到交叉点

时间:2015-01-06 15:14:46

标签: c# intersection

您好我正在编写分析点数据的小脚本 - 一切都差不多完成了但是我坚持找到两条线(边缘)之间的交点,这些点之间有给定的长度。下图更好地说明了问题:

enter image description here

编辑:它唯一的二维问题& DB&的距离BE应该是平等的

1 个答案:

答案 0 :(得分:2)

假设您希望距离DE为给定的L。您的积分{D}{E}

{D} = {B} + x * {a}
{E} = {B} + x * {c}

其中{a}是规范化向量BA{c}是规范化向量BC。 (这些向量必须具有相同的长度,以便可以使用相同的因子x。规范化是实施此操作的最简单方法。)

现在你有了等式:

L = |{D} - {E}|
  = |x*{a} - x*{c}|

分解为矢量分量:

L = sqrt((x*ax - x*cx)² + (x*ay - x*cy)²)
  = x * sqrt((ax - cx)² + (ay - cy)²)

解决x

x = L / sqrt((ax - cx)² + (ay - cy)²)

并在上面的第一个等式中使用找到的x