1.背景

最近遇到一个问题,可以抽象成如题目描述的问题。

如何求解例如 矩形(EFGH),矩形(IJKL),矩形(MNOP)  到矩形 ABCD的距离呢?

2.分析

最短距离 会出现在 矩形1 的边界上某点 到矩形2边界上某点的连线。

该问题可以进一步简化成对同一平面上的一条线段 到另一条线段的最短距离进行求解。

也就是 分别求解 矩形1 的4条边 到矩形2 的4条边的最短距离,然后再取 最小值即可。

如何求解 一段线段到另一段线段的最短距离呢?假设 线段1为 AB,线段2 为CD;

情况1: 线段1 和线段2 相交,最短距离为0;

情况2: 线段1 和线段2 不想交;此时 最短距离 会出现在点A到CD的最短距离 或 点B到CD的最短距离 或 点C到AB的最短距离 或 点D到AB的最短距离。

Dmin = min(Da-cd,Db-cd,Dc-ab,Dd-ab);

问题也就可以进一步简化成 求解 平面上一个点到一段线段的最短距离;

点到线段的最短距离分为如下3中情况:

情况1:点在直线上,距离为0;(情况1可以合并到情况2中)

情况2:过点做垂线,垂足在线段内,垂足和该点的连线为最短距离;

情况3: 过点做垂线,垂足在线段外,则距离垂足近的线段端点到该点的距离为最短距离。

3. 代码

3.1 计算同一平面上某点A,到线段CD 的距离。

3.2 计算同一平面上线段AB,到线段CD的最短距离。

3.3 计算同一平面上矩形ABCD 到EFGH 的最短距离。

4 参考文献

二维平面上两个矩形之间的最小距离相关推荐

  1. 给定两个数组arrx和arry,长度都为N。代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点?

    问题描述: 给定两个数组arrx和arry,长度都为N.代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点? 思想 坐标系中两个点 ...

  2. JavaScript:实现计算二维平面上两点之间的距离算法(附完整源码)

    JavaScript:实现计算二维平面上两点之间的距离算法 /*Calculate the mathematical properties involving coordinatesCalculate ...

  3. Java黑皮书课后题第10章:*10.15(几何:边框)边框是指包围一个二维平面上点集的最小矩形,编写一个方法,为二维平面上一系列点返回一个边框

    *10.15编写一个方法,为二维平面上一系列点返回一个边框 题目 程序 代码 Test15.java Test13_MyRectangle2D.java 运行结果 题目 点击这里跳转编程练习题10.1 ...

  4. 现在,我们用大炮来打蚊子:蚊子分布在一个M×N格的二维平面上,每只蚊子占据一格。向该平面的任意位置发射炮弹,炮弹的杀伤范围如下示意:

    目录 输入格式: 输出格式: 输入样例: 输出样例: 正确答案: 现在,我们用大炮来打蚊子:蚊子分布在一个M×N格的二维平面上,每只蚊子占据一格.向该平面的任意位置发射炮弹,炮弹的杀伤范围如下示意: ...

  5. 可视化 —— 二维平面上的散列点在坐标轴方向上的移动

    二维平面可以通过平面直角坐标系表示: 二维平面上不同的散列点,也就是平面直角坐标系上的不同的点, 其在坐标轴方向上的移动,分别在以下两个方向上的移动: 在 xx 轴方向上,(x1,y1)(x_1, y ...

  6. 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。

    在二维平面上,有一个机器人从原点 (0, 0) 开始.给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束. 移动顺序由字符串表示.字符 move[i] 表示其第 i 次移动.机器 ...

  7. 二维平面上点与线段关系的判定

    二维平面上点与线段关系的判定 问题的基本模型是:已知平面上一线段AB,判定平面上一点C相对于AB的位置(C不和AB共线). 通过向量叉积来判定线段与点的的位置关系. 例题:Toys (http://p ...

  8. 二维平面上判断点是否在三角形内

    1. 已知三角形的三个顶点坐标,判断某个点是否在三角形中(在三角形的边上,我们也视作在三角形中),本文给出了三种方法. 算法1:利用面积法 如上图所示,如果点P在三角形ABC的内部,则三个小三角形PA ...

  9. Keras实现生成对抗网络(GAN)(生成二维平面上服从某一分布的点)

    GAN原理 相关数学推导可参考 李宏毅https://www.bilibili.com/video/av36779967/?p=4 通俗的比喻:制造假钞(G)和警察(D)对抗的过程.假钞制造者制造假钞 ...

最新文章

  1. Kubernetes 集群使用 Jenkins 持续发布
  2. java script w3c study notes
  3. uni-app编译配置
  4. 排序后顺序错乱java_排列顺序不对怎么调
  5. 计算机软件技术基础考前整理
  6. 【赠书】如何构建企业级的推荐系统?这本书值得一看
  7. 来自长辈的5句教导!
  8. Java Object类中的finalize()方法
  9. QT学习笔记:常用快捷键总结表
  10. LOJ 2312(洛谷 3733) 「HAOI2017」八纵八横——线段树分治+线性基+bitset
  11. 用netbeans开发Swing程序,添加自定义控件
  12. 计算机黑龙江省二级c语言题库,计算机二级c语言题库
  13. 揭秘世界最大对撞机:将破解五大科学谜团(图)
  14. Python之判断闰年
  15. mysql awr v1.0.2发布
  16. JAVA死磕系列 疯狂创客圈
  17. 8. python基础之基础数据类型--bytes
  18. 金属质感怎么把握?高光和反光对比一定要加强~
  19. 工作一年的心得体会。
  20. 1.4_16 Axure RP 9 for mac 高保真原型图 - 案例15 【动态面板-滚动条5】深色模式 - 按钮效果升级

热门文章

  1. SAP HANA SQL执行计划(SAP HANA SQL explain plan)
  2. 银河麒麟操作系统如何开启kdump
  3. 精准营销服务平台设计-基于大数据和AI的商业智能平台
  4. 机器学习-Logistic Regression(逻辑回归)原理
  5. 图谱实战 | 为什么我们需要医学知识图谱?
  6. C#中Newtonsoft.Json(Json.NET)的使用
  7. c语言程序设计 北京理工,北京理工大学《C语言程序设计》期末试题.pdf
  8. Keil MDK 2020过期问题
  9. .ttf字体文件引入vue项目及使用
  10. 解决 ubuntu 14.04下,eclipse adt-bundle-linux 闪退的问题,最新ADT-23.0.7