схема / ракетка решение системных уравнений

Учитывая 2 точки и коэффициент выпуклости со знаком (независимо от того, соединяется ли дуга от первой точки со второй точкой по часовой или против часовой стрелки), вычислите центральную точку дуги.

(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.

person KRC    schedule 20.12.2014    source источник


Ответы (1)


Вам понадобится формула решения этой системы уравнений:

(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)) 
person soegaard    schedule 20.12.2014
comment
Извините, я сначала не понял, что вы имели в виду ... но есть ли способ реализовать универсальный решатель для систем уравнений в racket? - person KRC; 20.12.2014
comment
Что ж, общий решатель - это много работы. Даже общий решатель уравнений второй степени может оказаться довольно трудным. Если у вас есть система линейных уравнений, вы можете использовать math/matrix. - person soegaard; 20.12.2014
comment
Извините, что снова беспокою вас, но какой именно запрос вы дали вольфрам альфа, чтобы получить тот результат? - person KRC; 21.12.2014
comment
@krc решить (x-x1) ^ 2 + (y-y1) ^ 2 = r ^ 2 и (x-x2) ^ 2 + (y-y2) ^ 2 = r ^ 2 для x и y - person soegaard; 21.12.2014
comment
Ты всегда мне помогаешь :) - person KRC; 22.12.2014