0%

计算几何(八)

圆基础

  • 圆的表示:圆心、半径
  • 圆的周长:$C=2\pi r$
  • 圆的面积:$S=\pi r^2$

关系问题

点与圆的关系

  • 点在圆外
  • 点在圆上
  • 点在圆内

判定方法:点到圆心距离(平方)与圆的半径(平方)比较。

无精度误差。

直线与圆的关系

  • 相离
  • 相切
  • 相交

判定方法:圆心到直线距离与圆的半径比较

可以做到无精度误差。

圆与圆的关系

令两圆半径分别为 $r_1$ 和 $r_2$,两圆圆心的距离为 $d$。

  • 相同:$r_1=r_2$ 且 $d=0$
  • 相离:$d>r_1+r_2$
  • 外切:$d=r_1+r_2$
  • 相交:$|r_1-r_2|<d<r_1+r_2$
  • 内切:$d=|r_1-r_2|$
  • 内含:$d<|r_1-r_2|$

交集问题

直线与圆的交点

前提:直线与圆不相离

直线:$\lbrace P,\vec v\rbrace$

圆:$\lbrace C,r\rbrace$

设圆心到直线距离为 $d$,投影为 $C’$,则:

交点:$\overrightarrow{OC’}±\dfrac{\sqrt{r^2-d^2}}{|\vec v|}\vec v$。

圆与圆交点

前提:两圆不相同、不相离、不内含

两圆圆心连线与一圆心到交点连线夹角 $\alpha$。

根据余弦定理:$\cos\alpha=\dfrac{r_1^2+d^2-r_2^2}{2r_1d},\sin\alpha =\sqrt{1-\cos^2\alpha}$。

将两圆心连线对应向量进行伸缩旋转。

圆与圆面积交

两个弓形(扇形减去三角形)面积和。

扇形面积:$\pi r^2\times\dfrac{2\alpha}{2\pi}=r^2\alpha$。

三角形面积:$\dfrac12\times 2r\sin\alpha\times r\cos\alpha=r^2\sin\alpha\cos\alpha$

弓形面积:$r^2(\alpha-\sin\alpha\cos\alpha)$

圆与多边形面积交

从圆心将多边形剖分成若干三角形,求三角形与原的面积交。

多个圆的面积并

对于极角在 $\theta_l$ 到 $\theta_r$ 之间的一段圆弧。

$2S=x_0r(\sin\theta_r-\sin\theta_l)-y_0r(\cos\theta_r-\cos\theta_l)+r^2(\theta_r-\theta_l)$。

时间复杂度:$O(n^2\log n)$。

切线问题

过圆外一点圆的切线

  • $\cos\alpha=\dfrac{r}{d}$
  • 向量伸缩、旋转

两圆的公切线

  • 相离:4 条
  • 外切:3 条
  • 相交:2 条
  • 内切:1 条
  • 内含:0 条

外公切线

$\cos\alpha=\dfrac{r_1-r_2}{d}$

内公切线

$\cos\alpha=\dfrac{r_1+r_2}{d}$

圆的反演

给定反演中心点 $O$ 和反演半径 $R$。若平面上点 $P$ 和 $P’$ 满足:

  • 点 $P’$ 在射线 $OP$ 上
  • $|\overrightarrow{OP}|\times|\overrightarrow{OP’}|=R^2$

则称点 $P$ 和点 $P’$ 互为反演点

性质:

  • 圆外的点的反演点在圆内,反之亦然。
  • 圆上的点的反演点为其自身。
  • 不过点 $O$ 的圆,其反演图形也是不过点 $O$ 的圆。
  • 过点 $O$ 的圆,其反演图形是不过点 $O$ 的直线。
  • 两个图形相切,则它们的反演图形也相切。