find位于点A和线BC之间的垂直线上的点D的最佳方式

我正在尝试在C#中编写一个脚本来查找特定场景中2D空间中D点的位置。

我知道点A的(X,Y)位置,它不会在包含线段BC的线上。 我也知道D点位于穿过A的垂直线上,并且穿过BC,我们可以称之为P.另外,我知道D距离P的距离。

在这里输入图像说明

任何人都可以摆脱一些线路,哪一个是最佳的方式来实现呢?

如果使用点积,find点P很容易。 在伪代码中:

vec2 BC = C - B vec2 BA = A - B vec2 nBC = normalize( BC ) float dBP = dot( BA, nBC ) vec2 P = B + dBP * nBC vec2 D = P + dist * normalize( A - P ) 

首先,你需要findP点,这是BC 线上最近的点 。 知道P在哪里,你可以建造AP线。 从这个角度来看,在AP上find点D是微不足道的( P + dirAP * dist )。