点到直线和点到线段的最短距离

简介: 一.点到直线距离         已知一个点P(X0, Y0), 求点到直线Ax + By + C = 0的距离公式为:d = [AX0 + BY0 + C的绝对值]/[(A^2 + B^2)的算术平方根],如求点P(-1, 2)到直线2X + Y - 10 = 0的距离:X0 = -1, Y0 = 2, A = 2, B = 1, C = -10 代入公式 d =[2 * (-1) + 1 * 2 - 10 的绝对值] / 根号[2 * 2 + 1 * 1] = 10 / 根号5。

一.点到直线距离

        已知一个点P(X0, Y0), 求点到直线Ax + By + C = 0的距离公式为:d = [AX0 + BY0 + C的绝对值]/[(A^2 + B^2)的算术平方根],如求点P(-1, 2)到直线2X + Y - 10 = 0的距离:X0 = -1, Y0 = 2, A = 2, B = 1, C = -10 代入公式
d =[2 * (-1) + 1 * 2 - 10 的绝对值] / 根号[2 * 2 + 1 * 1] = 10 /
根号5。

        已知两点的坐便(x1, y1),(x2, y2) ,另外一个点的坐标是(x0, y0); 求(x0, y0)到经过(x1, y1) (x2, y2)直线的距离。
        直线方程中 A = y2 - y1,B = x1- x2,C = x2 * y1 - x1 * y2(叉积);点的直线的距离公式为: double d = (fabs((y2 - y1) * x0 +(x1 - x2) * y0 + ((x2 * y1) -(x1
* y2)))) / (sqrt(pow(y2 - y1, 2) + pow(x1 - x2, 2)))。

二.点到线段最短距离

 
 
private static double distance(Point p, Point p1) {
    return Math.hypot(p.x-p1.x, p.y-p1.y);
  }
  //点到线段的最短距离,x0,y0是圆心
  private static double pointToLine(Point p1,Point p2, Point p) {
    double ans = 0;
    double a, b, c;
    a = distance(p1, p2);
    b = distance(p1, p);
    c = distance(p2, p);
    if (c+b==a) {//点在线段上
      ans = 0;
      return ans;
    }
    if (a<=0.00001) {//不是线段,是一个点
      ans = b;
      return ans;
    }
    if (c*c >= a*a + b*b) { //组成直角三角形或钝角三角形,p1为直角或钝角
      ans = b;
      return ans;
    }
    if (b * b >= a * a + c * c) {// 组成直角三角形或钝角三角形,p2为直角或钝角
      ans = c;
      return ans;
    }
    // 组成锐角三角形,则求三角形的高
    double p0 = (a + b + c) / 2;// 半周长
    double s = Math.sqrt(p0 * (p0 - a) * (p0 - b) * (p0 - c));// 海伦公式求面积
    ans = 2*s / a;// 返回点到线的距离(利用三角形面积公式求高)
    return ans;
  }
目录
相关文章
|
消息中间件 Java 数据库连接
JMS 消息队列接口基本使用指南
JMS 消息队列接口基本使用指南
929 0
|
9月前
|
存储 运维 数据可视化
博物馆私有化部署:从传统展馆到智慧文化空间的转变
在数字化浪潮下,博物馆面临数据安全、信息孤岛和技术人才缺乏等挑战。私有化部署通过数据安全可控、系统定制化和网络环境稳定等优势,成为博物馆数字化转型的重要选择。板栗看板作为高效的项目管理工具,助力博物馆提升团队协作效率,确保数据安全。
214 12
|
11月前
|
网络协议 Ubuntu Linux
解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)
解决 `ssh: connect to host IP port 22: Connection timed out` 报错涉及检查 SSH 服务状态、防火墙配置、网络连通性和主机名解析等多个方面。通过逐步排查上述问题,并在 `scp` 命令中正确指定端口,可以有效解决连接超时的问题,确保文件传输的顺利进行。希望本文提供的解决方案能帮助您快速定位并解决该错误。
2773 3
|
Java 索引
Java“StringIndexOutOfBoundsException”解决
Java中“StringIndexOutOfBoundsException”异常通常在字符串索引超出其边界时抛出。解决方法包括检查字符串长度、确保索引值有效,以及使用条件语句避免越界访问。
623 2
|
API
FFmpeg中AVPacket、AVFrame结构的基本使用
FFmpeg中AVPacket和AVFrame结构的内存分配、释放和引用计数处理,以及如何避免内存泄漏。
362 3
|
网络协议 物联网 开发者
详细介绍 MQTT 的工作原理,包括 MQTT 协议的特点、核心概念以及消息传递的流程
详细介绍 MQTT 的工作原理,包括 MQTT 协议的特点、核心概念以及消息传递的流程
7321 1
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能仓储管理系统
使用Python实现智能仓储管理系统
397 4
|
机器学习/深度学习 算法 数据处理
盘点四种计算数组中元素值为1的个数的方法
盘点四种计算数组中元素值为1的个数的方法
330 0
|
JavaScript
Vue 编写(preventReClick)防暴点 +防抖(debounce)和节流(throttle)函数
Vue 编写(preventReClick)防暴点 +防抖(debounce)和节流(throttle)函数
702 0
|
编解码 缓存 算法
h264编码流程分析
h264编码流程分析
780 0