首页 > 解决方案 > 如何构造与一到三个线段相切并经过一到两个点的圆?

问题描述

我需要三个方程(算法)来找到圆:

  1. 与三个线段相切。
  2. 与两条线段和一个点相切。
  3. 与线段和两点相切。或者需要证明这样的圈子是不可能构建的。

在第一种情况下,我有三个线段:[A1,B1],[A2,B2],[A3,B3]。而且我想检查一下,是否有可能构建一个将所有这些都连接起来的圆圈。如果是这样,我需要一个这样的圈子。

其他情况同理。

标签: geometry

解决方案


以标准形式写出线方程

ai*x + bi*y + ci = 0  (where ai^2+bi^2=1)

建立线性方程组

(a2-a1)*cx + (b2-b1)*cy = c1-c2
(a3-a1)*cx + (b3-b1)*cy = c1-c3

并解决它以获得内圆中心坐标cx, cy

然后将这些坐标代入第一行方程得到圆半径

R = abs(a1*cx + b1*cy + c1)

请注意,改变系数差异的符号,我们可以获得另外 3 个解决方案 - 对于外圆接触所有三条线的情况。

PS每个主题有一个问题的规则


推荐阅读