java - 圆与长方形相交的面积

标签 java math intersection area

我正在寻找一种快速的方法来确定矩形和圆形之间的相交面积(我需要进行数百万次这样的计算)。

一个特定的属性是,在所有情况下,圆和矩形总是有 2 个交点。

最佳答案

给定 2 个交点:

0 个顶点在圆圈内:circular segment 的面积

    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^

三个顶点在圆内:矩形的面积减去三角形的面积加上圆弧的面积

    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

要计算这些面积:

关于java - 圆与长方形相交的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/622287/

相关文章:

.NET 确定鼠标位于两个任意点之间绘制的线上

java - Android - 相机在某些设备的后置摄像头上提供颠倒的数据

java - CTCI Making Anagrams - 得到不正确的输出

java - 获取美国太平洋时间的时区语法

python - pandas - 选择一对连续的行匹配条件

ios - 知道两个CGRect的交点

java - 如何在 JFace LabelProviders 中处理 Windows shell 图标?

excel - 是否可以在 MS Excel 中表示 0,999...(重复十进制)?如何?

c++ - 如何正确实现 `operator/` ?

python日期间隔交集