方案/球拍解决联立方程

时间:2014-12-20 12:11:58

标签: scheme racket dxf

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

1 个答案:

答案 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)) 
相关问题