• 点到线的距离计算公式


        图形编程中可能会用到点到线的距离计算这个问题。找了下资料,五花八门,仔细试了下,许多是错的。还有许多是起始条件不一样而不适用的。经过最近的研究、推算与总结。终于把这一块搞清楚了。写出来一是给自己的劳动成果拍照留底,二是分享给大家,让大家不必走弯路。

    点:(x0,y0)
    线:Ax+By+C=0
    ①距离=ABS(A*x0+B*y0+C) / SQRT(A*A+B*B)

    线:y=kx+b
    ②距离=ABS(k*x0-y0+b) / SQRT(k*k+1)

    变量关系
    k=-A/B
    A=-kB
    b=-C/B
    C=-bB

    线为2个不同点(x1,y1)和(x2,y2)来确定
    A=-(y1-y2)/(x1-x2)*B
    C=-(y2*x1-y1*x2)/(x1-x2)*B
    代入①,得
    ③距离=ABS[-(y1-y2)/(x1-x2)*x0 + y0 - (y2*x1-y1*x2)/(x1-x2)] / SQRT{1+[(y1-y2)/(x1-x2)]^2}
    化简得
    ④距离=ABS[(y1-y2)*x0 - (x1-x2)*y0 + y2*x1 - y1*x2] / SQRT[(x1-x2)^2+(y1-y2)^2]

    变量关系
    k=(y1-y2)/(x1-x2)
    b=(y2*x1-y1*x2)/(x1-x2)

    以上公式已通过测试。
    测试数据:
    (x0,y0)=(1,1)
    (x1,y1)=(1,4)
    (x2,y2)=(5,1)
    根据勾3股4弦5,得高= 3*4/5=2.4,即距离=2.4

        太久没推导数学公式了,中途在数学与编程都犯了点小错,搞了3天终于算是OK。各位就不必再像我这么犯傻了。

  • 相关阅读:
    团队冲刺--第二阶段(五)
    团队冲刺--第二阶段(四)
    团队冲刺--第二阶段(三)
    团队冲刺--第二阶段(二)
    团队冲刺--第二阶段(一)
    第一阶段意见评论
    人月神话阅读笔记02
    基础-定位
    基础-颜色
    标准文档流
  • 原文地址:https://www.cnblogs.com/BillySir/p/PointAndLineDistance.html
Copyright © 2020-2023  润新知