给定2个点和有符号凸起系数(弧是否以CW或CCW方式从第一个点连接到第二个点),计算弧的中心点。
(define (solver x1 y1 x2 y2 bulge)
(let* ((arc-angle (* 4 (atan bulge)))
(chord-length (/ (sqrt (+ (expt (abs (- x1 x2)) 2) (expt (abs (- y1 y2)) 2))) 2))
(radius (/ chord-length (cos (/ (- pi arc-angle) 2)))))
(list arc-angle chord-length radius)))
> (solver 3 10 10 5 0.592)
'(2.1380655244738884 4.301162633521313 4.905882850266661)
with the equations (x-3)^2 + (y-10)^2 = 4.05^2
(x-10)^2 + (y-5)^2 = 4.05^2
solve to find x, y.
答案 0 :(得分:3)
您需要此方程组的解公式:
(x-x1)^2 + (y-y1)^2 = r^2
(x-x2)^2 + (y-y2)^2 = r^2
其中(x,y)是圆的中心, 和(x1,y1)和(x2,y2)是圆上的点。
将这些方程式给予Wolfram Alpha提供了以下解决方案:
x = (-sqrt(-(y1-y2)^2 (x1^2-2 x1 x2+x2^2+y1^2-2 y1 y2+y2^2) (-4 r^2+x1^2-2 x1 x2+x2^2+y1^2-2 y1 y2+y2^2))+x1^3-x1^2 x2-x1 x2^2+x1 y1^2-2 x1 y1 y2+x1 y2^2+x2^3+x2 y1^2-2 x2 y1 y2+x2 y2^2)/(2 (x1^2-2 x1 x2+x2^2+y1^2-2 y1 y2+y2^2))
和
y = (x1 sqrt(-(y1-y2)^2 (x1^2-2 x1 x2+x2^2+y1^2-2 y1 y2+y2^2) (-4 r^2+x1^2-2 x1 x2+x2^2+y1^2-2 y1 y2+y2^2))-x2 sqrt(-(y1-y2)^2 (x1^2-2 x1 x2+x2^2+y1^2-2 y1 y2+y2^2) (-4 r^2+x1^2-2 x1 x2+x2^2+y1^2-2 y1 y2+y2^2))+x1^2 y1^2-x1^2 y2^2-2 x1 x2 y1^2+2 x1 x2 y2^2+x2^2 y1^2-x2^2 y2^2+y1^4-2 y1^3 y2+2 y1 y2^3-y2^4)/(2 (y1-y2) (x1^2-2 x1 x2+x2^2+y1^2-2 y1 y2+y2^2))