请教多边形与圆相交面积计算算法

时间:2021-07-17 22:37:10
任意一个多边形,一个原点在(x,y)半径R圆,如何求它们的相交面积(应该是一个关于r的积分吧)?
谢谢指教

6 个解决方案

#1


首先要知道这个多边形各个边的直线方程,每个方程中x的定义域,
然后把多边形与圆相交所围成的那个图形的方程以分段函数的形式写出来,
然后在各个段上分别积分,注意x轴下方的积分要和上方的积分独立开来求,
要把x下方的积分*(-1)加上去。
如果lz是要用计算机实现这个过程,很抱歉我就没学过了,但是这种求面积的可以用随机算法来求

#2


可以用考虑用计算像素点个数的方式来,多边形用一种颜色,圆用另一种颜色,填充时采用异或方式,然后计算相交部分颜色的像素点。

#3


楼上的可以考虑,但是不够精确了

用不了积分吧,没有方程可积啊

#4


恩 这个多边形是以什么形式给出来的呢

#5


只有给出精度范围,才能用计算机做积分,因为他是离散的模拟的

#6


我来提供一个解法,分成3步:
1:处理多边形,将多边形转变成凸多边形的集合。具体转化为三角形的集合
2:对于每一个三角形,求面积。
   2.1 求出每一个三角形与圆(或者说圆盘)的交点,我们定义为 A1 .....An ,
   2.2 对于求出的交点组成一个新的多边形。具体可以求这些交点的凸包,因为本来这些点的分布本来就是凸的,求出的凸多边形就自动把这些点就行排序了。我们把排序后的点定义为B1....Bn
   2.3 B1...Bn 我们求出在圆上的点,既点到圆心的距离等于半径的点。
   2.4 若两个相邻的点,都是圆上的点,那么,这两点之间的就是狐边。
   2.5 对狐边进行离散处理,插入新的点。
   2.6 插入后,我们得到一个凸多边形C1......Cm 。
   2.7 求此凸边形的面积。
3 :累加2步骤的结果,结果即为所求
   

#1


首先要知道这个多边形各个边的直线方程,每个方程中x的定义域,
然后把多边形与圆相交所围成的那个图形的方程以分段函数的形式写出来,
然后在各个段上分别积分,注意x轴下方的积分要和上方的积分独立开来求,
要把x下方的积分*(-1)加上去。
如果lz是要用计算机实现这个过程,很抱歉我就没学过了,但是这种求面积的可以用随机算法来求

#2


可以用考虑用计算像素点个数的方式来,多边形用一种颜色,圆用另一种颜色,填充时采用异或方式,然后计算相交部分颜色的像素点。

#3


楼上的可以考虑,但是不够精确了

用不了积分吧,没有方程可积啊

#4


恩 这个多边形是以什么形式给出来的呢

#5


只有给出精度范围,才能用计算机做积分,因为他是离散的模拟的

#6


我来提供一个解法,分成3步:
1:处理多边形,将多边形转变成凸多边形的集合。具体转化为三角形的集合
2:对于每一个三角形,求面积。
   2.1 求出每一个三角形与圆(或者说圆盘)的交点,我们定义为 A1 .....An ,
   2.2 对于求出的交点组成一个新的多边形。具体可以求这些交点的凸包,因为本来这些点的分布本来就是凸的,求出的凸多边形就自动把这些点就行排序了。我们把排序后的点定义为B1....Bn
   2.3 B1...Bn 我们求出在圆上的点,既点到圆心的距离等于半径的点。
   2.4 若两个相邻的点,都是圆上的点,那么,这两点之间的就是狐边。
   2.5 对狐边进行离散处理,插入新的点。
   2.6 插入后,我们得到一个凸多边形C1......Cm 。
   2.7 求此凸边形的面积。
3 :累加2步骤的结果,结果即为所求