如何求两个矩形的公共面积?

看到这个问题,首先应该打破思维定式,不要觉得两个矩形一定是终归中规中矩地放着,很有可能是斜着放的。

如果把矩形当成正着放,那么这个问题比:如何求两个三角形公共面积还要简单。

把问题变得简单通常有三种思路

  • 具体问题具体分析,发现问题的特殊之处,利用问题的特殊性解决之,这种思路叫做把问题看小了。
  • 把问题想得更通用、更一般化,这样往往能够使得问题描述简单,使思路升高一个维度俯视问题,问题就变得很一般。全景视角能够发现这些子问题之间的联系。
  • 如果总是惦记着前面两种思路,思维就会不集中,很多时候想问题没必要想太多,直接按照最简单、最直观的方法一条路走下去就是了。方法无所谓好无所谓坏。

求两个矩形的公共面积可以更通用化为:求两个凸多边形的公共面积。

这个问题有一个直观而暴力的思路:

  • 首先求出平面图上的所有关键点,关键点包括线段交点、凸多边形顶点,记做顶点集A
  • 过滤一下不属于公共部分的点。对于A中的每个点x,如果x不在两个凸多边形的内部,则删除掉x
  • A中剩余的点可以构成一个凸多边形,因为两个凸多边形的交点必然也是凸多边形。给定一个凸多边形的顶点集合,这个凸多边形是唯一的,可以用凸包算法求出。经过此步,A中的点变成了一个序列。实际上,凸包算法针对的是一堆点,而此问题中已经确定这些点都是凸多边形边上的点,所以直接找到一个点,从此点向其余点发出射线,按照射线角度对点排序,就得到了有序的凸多边形点序列。
  • A中的点构成凸多边形,问题变成求凸多边形的面积。

如何求两个凹多边形的公共面积?任何一个平面多边形都是由若干个三角形组成的。只需要求两个三角形组中两两三角形的公共面积。

参考资料

https://blog.csdn.net/xtulollipop/article/details/52357595
知网

转载于:https://www.cnblogs.com/weiyinfu/p/9307877.html

两个凸多边形的公共面积相关推荐

  1. 初中生问题:求任意凸多边形的交叉面积

    一个初中生问题:求任意凸多边形的交叉面积 类似的几种情况: 第一种0:两个多边形无交叉,没有相交多边形,且一方在另一方没有内点,相交面积为0. 第二种1:两个多边形无交叉,且一方在另一方有内点.称之为 ...

  2. hdu 5120(求两个圆环相交的面积 2014北京现场赛 I题)

    两个圆环的内外径相同 给出内外径 和 两个圆心 求两个圆环相交的面积 画下图可以知道 就是两个大圆交-2*小圆与大圆交+2小圆交 Sample Input 2 2 3 0 0 0 0 2 3 0 0 ...

  3. 两个矩形相交的面积c语言,关于算法:两个旋转矩形的相交面积

    我有两个2D矩形,分别定义为原点(x,y),大小(高度,宽度)和旋转角度(0-360°). 我可以保证两个矩形的大小相同. 我需要计算这两个矩形的相交区域. 尽管可以,但计算不一定要精确. 我将结果与 ...

  4. 两个页面的公共的文件怎么只引入一次_vuecli 多页面之公共入口

    前言 网上vuecli多页面配置教程大多讲的是如何配置多页面,少有见到介绍多页面的优化方案.以下总结几点缺陷:1.如何公共引入?公共入口怎么设置?2.路由跳转和传参怎么方便?3.每个页面都要手动创建? ...

  5. NYOJ 1186 心理阴影(两个圆环的相交面积)

    心理阴影 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 自从shanghai reginal后,zkc学长的心理就有了阴影.什么不敢水题,不敢gj,不敢放松...(各种 ...

  6. 二叉树两个节点的公共节点

    转自:http://blog.csdn.net/hhygcy/article/details/4660362 很流行的一个问题,常见于各种面试中,http://fayaa.com/tiku/view/ ...

  7. 两节点的最小公共祖先LCA

    一.二叉搜索树中两节点的最小公共祖先: 最初级的题目,在一颗二叉搜索树中寻找两节点的最小公共祖先.根据二叉搜索树的特征,从根节点开始查找,若两节点的val值都小于当前节点,则他们的最小公共祖先就去左子 ...

  8. 数据结构与算法之打印两个有序链表公共部分和判断一个链表是否具有回文结构

    数据结构与算法之打印两个有序链表公共部分和判断一个链表是否具有回文结构 目录 打印两个有序链表公共部分 判断一个链表是否具有回文结构 1. 打印两个有序链表公共部分 1.问题描述 思路:Node1和N ...

  9. php两个数组找公共部分,PHP开发中如何查找两个数组的交集

    在PHP中,可以使用内置函数array_intersect()来查找两个数组的交集,它可以返回两个数组的公共元素(相交部分).下面我们就来具体介绍一下. array_intersect()函数 基本语 ...

最新文章

  1. 扎哈的绝唱:“六芒星”大兴机场的几何赏析
  2. 干货丨从概念到实践,我们该如何构建自动微分库
  3. 曹国伟:看准微博做大布局 哪怕革自己的命
  4. Java 获取本机IP和Mac以及网卡信息
  5. linux终端传文件,如何使用Linux FTP命令传输文件
  6. python爬虫urllib 数据处理_python爬虫学习笔记(三)-爬取数据之urllib库
  7. 计算机一级上机考试试题题库,2016年计算机一级上机考试题库
  8. java 双倍长密钥3des_用Java实现的单倍长密钥DES、双倍长密钥3DES和Mac计算
  9. IOS7开发~Xcode5制作framework
  10. cnn程序流程图_GitHub - suqcnn/vue: vue源码逐行注释分析+40多m的vue源码程序流程图思维导图 (diff部分待后续更新)...
  11. 用大数据扒一扒手机黑卡 | Alfred数据室
  12. CenterCrop的Video View
  13. Soap+xml实现webservice 调用
  14. 锁定计算机后游戏掉线,Win7旗舰版系统下玩游戏挂机总是掉线的解决方法
  15. 【loj10064】黑暗城堡
  16. 玩转 Windows 10 中的 Linux 子系统
  17. UVA1723 Intervals
  18. 在船舶共轨实验平台上使用Mbed LPC1768
  19. Kali Linux 2016.1 x86 x64 安装 wine QQ
  20. bzoj2870. 最长道路tree【点分治】【边分治】

热门文章

  1. c# https请求
  2. 【BZOJ4561】[JLoi2016]圆的异或并
  3. 不使用额外空间交换2个数据的源代码
  4. WordPress /wp-admin/users.php畸形s参数路径泄漏漏洞
  5. VC++ (二)类的访问级别
  6. 【Java从0到架构师】JS_jQuery_BootStrap
  7. CENTOS7 修改 网卡名称为eth0的配置方法
  8. Linux系统管理(3)——防火墙 iptables基本原理 四表五链 NetFilter 概述
  9. 海龟交易法则09_海龟式积木
  10. 兰州大学c语言课程作业答案,2016兰州大学C语言程序设计课程作业1附答案.doc