根据直线的表示方式$p = at + b$,可以设一个点$P(p_x,p_y)$,任意一点$A(x_0,y_0)$到点$P$的距离可以根据两点间距离公式求出。
然后根据对表达式求二阶导数,可以证明该函数存在最小值。
令一阶导数等于零可以求得取最小值时,$t$的取值。将t带入可以计算出最短距离的平方。最后算得
点到线段的最短距离
根据点到直线的距离的计算方式,把线段看成是直线,最后计算出t,然后根据t的值将t缩小到[0,1]之间。
1 | if t < 0 |
这样就可以计算点到线段的最短距离了。