zoukankan      html  css  js  c++  java
  • 已知直线上的两点 A(x1, y1), B(x2, y2) 和另外一点 C(x0, y0),求C点到直线的距离。

    数学知识太差,一点点积累,高手勿喷。

    1. 先求出AB向量
    a = ( x2-x1, y2-y1 )

    2. 求AB向量的单位方向向量
    b = √((x2-x1)^2 + (y2-y1)^2))

    a1 = ( (x2-x1)/b, (y2-y1)/b )

    3.求出CA的法向向量(或CB的法向向量)
    c = ( y0-y1, -(x0-x1) )

    4. 距离 = AC法向向量与BC向量的单位方向向量的数量积
    距离d = a1 * c = ( (x2-x1)(y0-y1) - (y2-y1)(x0-x1) ) / √((x2-x1)^2 + (y2-y1)^2))

    參考http://zhidao.baidu.com/link?url=_p1KjVfPqY4ZnEf9h4GNR1OiwkoDrds_LfTCyZTTTo6sljXJP8i-tUtSHECt5_k8WwA0g04lkBUNrEGCz0hcUK
    原文中还有第5步,我把第四步作了一些改动,感觉就够了。
    事实上我也不懂,特别是第四步为什么会得到距离?

    请高手指点指正。
    谢谢


    ps: 推断垂足在线段内:

    AC*AC - d*d < AB*AB && BC*BC - d*d < AB*AB

  • 相关阅读:
    java入门了解14
    java入门了解13
    java入门了解12
    java入门了解11
    Hive-安装
    Hive-基本概念
    Java笔记20
    Java-笔记19
    Java-笔记18-复习
    Java-笔记18
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4254930.html
Copyright © 2011-2022 走看看