已知一个点和一个线段,求点到线段的垂足

该篇文章介绍了在Qt中使用QPointF和QLineF类实现的一个计算点到线段垂足的函数,通过几何原理计算垂足位置,适用于临时或特定场景的快速应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

已知一个点和一个线段,求点到线段的垂足

原理推导我也不记得了,只剩下了这个代码片段,临时用用还是可以的

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实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值