baidu_39417249 2018-05-07 09:02 采纳率: 100%
浏览 2945
已采纳

点到直线的最短距离和问题,优化算法

求空间中一个点的坐标,这个坐标到n多个直线的距离和最短,n已知,直线方程已知

  • 写回答

6条回答 默认 最新

  • threenewbee 2018-05-07 09:36
    关注

    这个是NP hard的问题,除非死算,没有什么好的办法,但是如果你只是需要近似最优解,可以用启发式算法,比如模拟退火、遗传算法之类。
    所谓启发算法,就是说结果很好算,但是算法本身很难,可以通过随机和试探逼近最优解的方法。
    也就是先随机选取一些点,然后向某个方向移动,看距离是否缩小,如果是,那么就移动到那个点,再选取周围点,继续。直到选取的点往四周都增大。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 一抹蓝2 2018-05-07 09:11
    关注

    直接用高中时所学习到的解析几何知识对点到线段的距离进行求解。其基本思想是先判断点在线段端点、点在线上等等的特殊情况,逐步的由特殊到一般,当忽略点在线段上的特殊情况时,判断点到线段方向的垂线是否落在线段上的方法是通过比较横纵坐标的方式来判断,最后把不同的判断情况用不同的几何方式来进行处理计算得出结果

    评论
  • 本自具足反求诸己 2018-05-07 09:36
    关注

    点到直线的距离是存在平行的直线经过该点,这两条平行直线之间的距离就是点到直线的距离。换个说法就是将假设点的坐标带入原先的直线方程,将原先直线方程的常量值设定为新的数值。
    新的数值和原先的直线方程的数值,以及直线的斜率可以计算出距离来。这样多个直线方程会得到一个确定的点的。超过三维之后的坐标系计算量会暴涨。如果在三维坐标系里面,
    记得用投影化简直线方程到平面上。

    评论
  • qq_30736125 2018-05-07 13:28
    关注

    #include

    int main() {
    double x0, y0, x1, y1;
    double a, b, c;
    double x;

    printf("x0 = ");
    scanf("%lf", &x0);
    printf("y0 = ");
    scanf("%lf", &y0);
    printf("x1 = ");
    scanf("%lf", &x1);
    printf("y1 = ");
    scanf("%lf", &y1);
    
    printf("\n\n");
    
    b = x1 - x0;
    a = y0 - y1;
    c = x0 * y1 - x1 * y0;
    a /= b;
    c /= b;
    
    while (1) {
        printf("x = ");
        scanf("%lf", &x);
        printf("y = %lf\n\n", -c - a * x);
    }
    

    }

    评论
  • 风飘红技术中心 2018-05-07 20:54
    关注

    如果知道直线方程,可以把方程转换为斜截式,又因为你要求该点到直线距离最短则为垂直于改直线距离最短,垂直线的斜率和原直线斜率相乘等于-1,那么新直线斜率就知道了,对于y=kx+b这个方程,只有b一个未知数,很容易求出新的直线方程,再求两直线相交于一点,最后求两点间的距离即可~求采纳

    评论
  • 码云哥 2018-05-08 06:27
    关注

    三圆定位,百度一下 微信的三点定位,有详细的介绍,还有 rssi的三点定位算法,都可以借鉴一下,

    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 怎么下载MySQL,怎么卸干净原来的MySQL
  • ¥15 网络打印机Ip地址自动获取出现问题
  • ¥15 求局部放电案例库,用于预测局部放电类型
  • ¥100 QT Open62541
  • ¥15 stata合并季度数据和日度数据
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应
  • ¥15 Vue3 中使用 `vue-router` 只能跳转到主页面?
  • ¥15 用QT,进行QGIS二次开发,如何在添加栅格图层时,将黑白的矢量图渲染成彩色
  • ¥50 监控摄像头 乐橙和家亲版 保存sd卡的文件怎么打开?视频怎么播放?
  • ¥15 Python的Py-QT扩展库开发GUI