gpt4 book ai didi

c# - 如何检查垂直线是否与线段相交? C#

转载 作者:行者123 更新时间:2023-11-30 23:04:53 28 4
gpt4 key购买 nike

我必须检查垂直是否存在。

我正在使用由两点定义的一条线段

  • T1(x1,y1)..T2(x2 ,y2)

然后我必须垂直放置以便它到达第三点

  • T3(x3,y3)

这工作正常,但我不知道如何检查垂线是否存在。

计算垂直交点

我计算了 TP(x4,y4)(点在 T1,T< sub>2 行)与:

double dx = x2 - x1;
double dy = y2 - y1;
double mag = Math.Sqrt(dx * dx + dy * dy);
dx /= mag;
dy /= mag;

double lambda = (dx * (x3 - x1)) + (dy * (y3 - y1));
rx1 = (dx * lambda) + x1;
ry1 = (dy * lambda) + y1;

这很好用:

enter image description here

这应该会引发错误:

enter image description here

最佳答案

如果您只需要检查垂线是否存在,那么您可以执行以下操作(根据您的草图):

  1. 创建向量 v1 (T1-T2)、v2 (T1-T3) 和 v3 (T2-T3)。
  2. 评估角度a1 (v1-v2) 和a2 (v1-v3)。
  3. 如果a1a2的绝对值大于90º,则没有垂直线落在T1和T2之间。

评估向量之间的角度很简单:查找 vector dot product or scalar product .

关于c# - 如何检查垂直线是否与线段相交? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49118760/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com