c# – 如何加入重叠的圈子?

我想直观地加入两个重叠的圈子

成为

我已经有了部分圈子的方法,但是现在我需要知道earch圈的重叠角度有多大,我不知道该怎么做。

任何人都有想法?

Phi= ArcTan[ Sqrt[4 * R^2 - d^2] /d ]

HTH!

编辑

对于两个不同的半径:

简化一点:

Phi= ArcTan[Sqrt[-d^4 -(R1^2 - R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 +R1^2 -R2^2)]

编辑

如果要从其他圆心观察角度,则只需在最后一个方程中将R2换成R2。

这是Mathematica中的一个示例实现:

f[center1_, d_, R1_, R2_] := Module[{Phi, Theta},

   Phi=  ArcTan[Sqrt[-d^4-(R1^2-R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 +R1^2 -R2^2)]

   Theta=ArcTan[Sqrt[-d^4-(R1^2-R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 -R1^2 +R2^2)]

   {Circle[{center1, 0}, R1, {2 Pi - Phi,   Phi}], 
    Circle[{d,       0}, R2, {Pi - Theta,  -Pi + Theta}]}

   ];
Graphics[f[0, 1.5, 1, 1]]
Graphics[f[0, 1.5, 1, 3/4]]  

  

和…

ImageMultiply[
 Binarize@FillingTransform[#], 
 ImageResize[Import@
 "http://i305.photobucket.com/albums/nn235/greeneyedgirlox/blondebabybunny.jpg", 
   ImageDimensions@#]] &@
 Rasterize@Graphics[f[0, 1.5, 1, 1], Background -> Black]

🙂

http://stackoverflow.com/questions/4463933/how-to-join-overlapping-circles

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 如何加入重叠的圈子?