已知一个点和一个线段,求点到线段的垂足
原理推导我也不记得了,只剩下了这个代码片段,临时用用还是可以的
QPointF CMeasureAlgorithm::perpendicularFoot(const QPointF& p, const QLineF & l)
{
if (!MA_IS_DOUBLE_ZERO(l.length()))
{
auto dotmultiply = ( p.x() - l.p1().x() ) * ( l.p2().x() - l.p1().x() ) + ( p.y() - l.p1().y() ) * ( l.p2().y() - l.p1().y() );
auto relation = dotmultiply / ( ( l.p2().x() - l.p1().x() ) * ( l.p2().x() - l.p1().x() ) + ( l.p2().y() - l.p1().y() ) * ( l.p2().y() - l.p1().y() ) );
return QPointF(l.p1().x() + relation * ( l.p2().x() - l.p1().x() ), l.p1().y() + relation * ( l.p2().y() - l.p1().y() ));
}
else
{
return QPointF();
}
}
基于Qt实现