找到只有 2 个随机点和凸起的圆心(x 和 y 位置)

Find the center of a circle (x and y position) with only 2 random points and bulge

我正在寻找圆心。我唯一的信息是: 圆圈中的两个随机点和圆圈凸起。到目前为止,我已经设法计算出圆的半径(至少我认为我做到了)。我将 post 描述我目前使用的等式。

这些只是随机值,会根据用户输入而改变)

点A(x = 10, y = 15) 点 B(x = 6, y = 12)

circle_bulge = 0.41

距离 = 点 B - 点 A

半径=(距离/4)*(circle_bulge+(1/circle_bulge))

如果此数学计算不正确,请告诉我,但请记住,我需要找到圆心的 X 和 Y 坐标

我相信您已掌握此参考资料中所有必需的数学知识:http://autocad.wikia.com/wiki/Arc_relationships

圆心必须在通过垂直矢量 AB 线段的中点的直线上。你知道由三个点形成的三角形的角度,因为你知道凸起,所以你必须求解一个简单的方程。试试看,不行我会尽力帮助你。

Ignacio 指出将有两种解决方案是正确的。

编辑

中点由以下公式给出:

M = (A + B) / 2

AB 向量是通过以下方式生成的:

AB = A-B

坐标为 (X, Y) 的圆 C 的圆心必须在给定的直线上:

((X, Y) - M) * AB = 0 //where * is the scalar vector product

A点、B点、C点生成的等腰三角形与AB线段的对角:

Angle = 4 arctan(bulge)

现在我们可以计算从中心 C 到 A 的距离,我们称之为 d1 以及 A 和 B 之间的距离的一半,我们称之为 d2 我们知道

sin (Angle/2) = d2/d1

这将为您提供 X 和 Y 的第二个二次方程(它有两个解)。

请原谅符号,但我不知道如何在此处插入数学:-)

这是问题的图片:

根据定义,凸起是 b = tg(Alpha/4)

由三角函数公式:tg(2角度) = 2tg(角度)/(1-tg 2(角度))

应用于角度 = Alpha/4 并使用凸起的定义:

tg(Alpha/2) = 2 b/(1-b2)

另一方面

tg(Alpha/2) = s/d

然后

s/d = 2 b/(1- b2) 和

d = s(1-b2)/(2b)

这让我们可以计算出 d 因为 b 是已知的并且 s = || B - A||/2,其中 ||B - A||表示向量的范数 B - A.

现在,让我们计算一下

(u,v) = (B - A )/||B - A||

然后||(u,v)|| = 1, (v,-u) 正交于 B - A ,我们有

C = (v,-u)d + (A+B)/2


更新

计算中心的伪代码

输入:

A = (a1, a2), B = (b1, b2) "two points"; b "bulge"

计算:

"lengths"
norm := sqrt(square(b1-a1) + square(b2-a2)).
s := norm/2.
d := s * (1-square(b))/(2*b)

"direction"
u := (b1-a1)/ norm.
v := (b2-a2)/ norm.

"center"
c1 := -v*d + (a1+b1)/2.
c2 := u*d + (a2+b2)/2.
Return C := (c1, c2)

注:中心有两种方案,另一种是

c1 := v*d + (a1+b1)/2.
c2 := -u*d + (a2+b2)/2.
Return C := (c1, c2)