24小时热门版块排行榜    

查看: 3345  |  回复: 3

jinxiazh

新虫 (正式写手)

[求助] 求高手解决多个圆的重叠面积计算 已有1人参与

我们经常计算的都是两圆的重叠区域的面积,这个可以通过跟二者的圆心距离d有关,
可是当问题扩展到多个圆的重叠区域时,就比较复杂多了,用笔计算变得不现实。
求高手编程序解决如下问题,最好能浅显易学,谢谢!

如下图所示:个人思路如下
1、已知原子i与原子j,坐标分别为(xi,yi);(xj,yj),则输入所有原子坐标,并程序计算原子间距离dij2=(xj-xi)2+ (yj-yi)2
2、若d≤2R,则有对应的重叠面积Aij=公式如下
  A=2R2arccos(d/2R)-d√d2(4R2-d2) /2 (根据二者的距离d即可得出)
否则当dij≥2R,则Aij=0.
3、总重叠面积A=∑Aij 求和 即可

求高手解决多个圆的重叠面积计算
图片1.png


求高手解决多个圆的重叠面积计算-1
图片2.png
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

从图像的角度可以这样编程:
做一个圆中心坐标序列;
遍历该序列属于圆a的点标记为a,遍历该序列属于圆b的点标记为b,遍历该序列属于圆c的点标记为c,……;
只需要统计ab, ac, ad, …;bc, bd, be, …;cd, ce, cf, …;
          abc, abd, abe, …;
                  …; 等等多标记的点。
2楼2015-07-06 21:03:25
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

oinkmasta

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
我这个思路和版主的基本相同,可以在matlab简单操作。

作一个1000*1000的方格,使得它的边界包含所有你需要的圆,坐标记为 (uj,vj),...。建立一个n*3矩阵:每一列上是(xi,yi,ri),其中xyz是圆心坐标,r是半径。接下来只要判定同时在两类圆的点有多少。判定标准可以是 (xi-uj)^2+(yi-vj)^2<=ri^2。

要更精确解的话,只要把方格变密就可以了。
16届本科在北美
3楼2015-07-06 22:48:11
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

jinxiazh

新虫 (正式写手)

引用回帖:
2楼: Originally posted by feixiaolin at 2015-07-06 21:03:25
从图像的角度可以这样编程:
做一个圆中心坐标序列;
遍历该序列属于圆a的点标记为a,遍历该序列属于圆b的点标记为b,遍历该序列属于圆c的点标记为c,……;
只需要统计ab, ac, ad, …;bc, bd, be, …;cd, ce, ...

谢谢!这个思路可取
4楼2015-07-08 14:53:50
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 jinxiazh 的主题更新
信息提示
请填处理意见