二维平面上两个矩形之间的最小距离
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 参考文献
二维平面上两个矩形之间的最小距离相关推荐
- 给定两个数组arrx和arry,长度都为N。代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点?
问题描述: 给定两个数组arrx和arry,长度都为N.代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点? 思想 坐标系中两个点 ...
- JavaScript:实现计算二维平面上两点之间的距离算法(附完整源码)
JavaScript:实现计算二维平面上两点之间的距离算法 /*Calculate the mathematical properties involving coordinatesCalculate ...
- Java黑皮书课后题第10章:*10.15(几何:边框)边框是指包围一个二维平面上点集的最小矩形,编写一个方法,为二维平面上一系列点返回一个边框
*10.15编写一个方法,为二维平面上一系列点返回一个边框 题目 程序 代码 Test15.java Test13_MyRectangle2D.java 运行结果 题目 点击这里跳转编程练习题10.1 ...
- 现在,我们用大炮来打蚊子:蚊子分布在一个M×N格的二维平面上,每只蚊子占据一格。向该平面的任意位置发射炮弹,炮弹的杀伤范围如下示意:
目录 输入格式: 输出格式: 输入样例: 输出样例: 正确答案: 现在,我们用大炮来打蚊子:蚊子分布在一个M×N格的二维平面上,每只蚊子占据一格.向该平面的任意位置发射炮弹,炮弹的杀伤范围如下示意: ...
- 可视化 —— 二维平面上的散列点在坐标轴方向上的移动
二维平面可以通过平面直角坐标系表示: 二维平面上不同的散列点,也就是平面直角坐标系上的不同的点, 其在坐标轴方向上的移动,分别在以下两个方向上的移动: 在 xx 轴方向上,(x1,y1)(x_1, y ...
- 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。
在二维平面上,有一个机器人从原点 (0, 0) 开始.给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束. 移动顺序由字符串表示.字符 move[i] 表示其第 i 次移动.机器 ...
- 二维平面上点与线段关系的判定
二维平面上点与线段关系的判定 问题的基本模型是:已知平面上一线段AB,判定平面上一点C相对于AB的位置(C不和AB共线). 通过向量叉积来判定线段与点的的位置关系. 例题:Toys (http://p ...
- 二维平面上判断点是否在三角形内
1. 已知三角形的三个顶点坐标,判断某个点是否在三角形中(在三角形的边上,我们也视作在三角形中),本文给出了三种方法. 算法1:利用面积法 如上图所示,如果点P在三角形ABC的内部,则三个小三角形PA ...
- Keras实现生成对抗网络(GAN)(生成二维平面上服从某一分布的点)
GAN原理 相关数学推导可参考 李宏毅https://www.bilibili.com/video/av36779967/?p=4 通俗的比喻:制造假钞(G)和警察(D)对抗的过程.假钞制造者制造假钞 ...
最新文章
- Kubernetes 集群使用 Jenkins 持续发布
- java script w3c study notes
- uni-app编译配置
- 排序后顺序错乱java_排列顺序不对怎么调
- 计算机软件技术基础考前整理
- 【赠书】如何构建企业级的推荐系统?这本书值得一看
- 来自长辈的5句教导!
- Java Object类中的finalize()方法
- QT学习笔记:常用快捷键总结表
- LOJ 2312(洛谷 3733) 「HAOI2017」八纵八横——线段树分治+线性基+bitset
- 用netbeans开发Swing程序,添加自定义控件
- 计算机黑龙江省二级c语言题库,计算机二级c语言题库
- 揭秘世界最大对撞机:将破解五大科学谜团(图)
- Python之判断闰年
- mysql awr v1.0.2发布
- JAVA死磕系列 疯狂创客圈
- 8. python基础之基础数据类型--bytes
- 金属质感怎么把握?高光和反光对比一定要加强~
- 工作一年的心得体会。
- 1.4_16 Axure RP 9 for mac 高保真原型图 - 案例15 【动态面板-滚动条5】深色模式 - 按钮效果升级
热门文章
- SAP HANA SQL执行计划(SAP HANA SQL explain plan)
- 银河麒麟操作系统如何开启kdump
- 精准营销服务平台设计-基于大数据和AI的商业智能平台
- 机器学习-Logistic Regression(逻辑回归)原理
- 图谱实战 | 为什么我们需要医学知识图谱?
- C#中Newtonsoft.Json(Json.NET)的使用
- c语言程序设计 北京理工,北京理工大学《C语言程序设计》期末试题.pdf
- Keil MDK 2020过期问题
- .ttf字体文件引入vue项目及使用
- 解决 ubuntu 14.04下,eclipse adt-bundle-linux 闪退的问题,最新ADT-23.0.7