多个圆环相交,知道每一个圆环的圆心和半径怎么找到他们相交部分 ( 积分: 200 )

  • 主题发起人 主题发起人 qkserver
  • 开始时间 开始时间
Q

qkserver

Unregistered / Unconfirmed
GUEST, unregistred user!
多个圆环相交,知道每一个圆环的圆心和半径怎么找到他们相交部分 还有相交部分不规则的要怎么表达
 
1 首先寻找基圆.
用1个圆的公式和其他圆比较
(x-a1)2+(y-b1)2=r12;
(x-a2)2+(y-b2)2=r22;
相离,包含,交于1点不算。求出相交最多的圆
(x-a)2+(y-b)2=r2;
然后求出相交的范围:
(x-a)2+(y-b)2=r22; (x1<=x<=x2,y1<=y<=y2)
(x-a2)2+(y-b2)2=r22;(x1<=x<=x2,y1<=y<=y2)

(x-a)2+(y-b)2=r22; (x1<=x<=x2,y1<=y<=y2)
(x-a1)2+(y-b1)2=r12;(x1<=x<=x2,y1<=y<=y2)

(x-a)2+(y-b)2=r22; (x1<=x<=x2,y1<=y<=y2)
(x-a3)2+(y-b3)2=r32;(x1<=x<=x2,y1<=y<=y2)


把以上相交部分看成'圆',在找出基圆,
计算和其他'圆'相交的部分。。。。
循环下去。。。。

形成一个大的分段函数,就是这N个圆的相交部分表达式。
 
1.遍历整个区域.
2.如楼上述用和圆心距离<R的判别法.
3.同时符合2个或以上的像素:反色/置色/黑....
(还可以定义自己的描述方式:2圆交红,3圆交白,4圆都交:黑..嘿嘿)
4.将有效区域以图象格式保存是最形象的表达方式.
事实上,最精确的表达方式其实你已经写了,就是那些圆的方程.但它在直观的背面.
5.当然,关于1可以根据具体条件直接缩小区域,节省时间.
另;其实遍历也是可以想办法简化的.对公式x2+y2=r2观察一下可以知道在遍历时可以用
&quot;步进&quot;的方式获得距离值(就是降幂了)...惭愧。...扯远了
 
多人接受答案了。
 
后退
顶部