圆与矩形的交点面积


问题内容

我正在寻找一种确定矩形和圆形之间相交区域的快速方法(我需要进行数百万次此类计算)。

一个特殊的属性是,在所有情况下,圆形和矩形始终具有2个相交点。


问题答案:

给定2个交点:

*圆内有 *0个顶点
圆形线段的面积

    XXXXX              -------------------
   X     X               X            X Circular segment
  X       X               XX        XX 
+-X-------X--+              XXXXXXXX 
|  X     X   |
|   XXXXX    |

1个顶点 在圆内:圆弧段和三角形的面积之和。

    XXXXX                   XXXXXXXXX
   X     X       Triangle ->X     _-X
  X       X                 X   _-  X 
  X    +--X--+              X _-   X <- Circular segment 
   X   | X   |              X-  XXX 
    XXXXX    |              XXXX
       |     |

*圆内有 *2个顶点 :两个三角形和一个圆形线段的面积之和

    XXXXX                   +------------X
   X     X                  |      _--'/'X 
  X    +--X---    Triangle->|   _--   / X
  X    |  X                 |_--     /XX <- Circular segment
   X   +-X----              +-------XX
    XXXXX                 Triangle^

*圆内有 *3个顶点 :矩形的面积减去三角形的面积再加上圆形线段的面积

    XXXXX
   X  +--X+             XXX
  X   |   X         -------XXX-----+ <- Triangle outside
 X    |   |X        Rect ''.  XXX  |
 X    +---+X                ''.  XX|  
 X         X                   ''. X <- Circular segment inside 
  X       X                       ^|X 
   X     X                         | X 
    XXXXX

要计算这些面积: