0

给定 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.
4

1 回答 1

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)) 
于 2014-12-20T16:03:18.503 回答