|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Serge Kanilo 2:5020/400 29 Oct 2001 06:24:43 To : Oleg Polubasoff Subject : Re: [* - гео] - середина дуги -------------------------------------------------------------------------------- "Oleg Polubasoff" <pbas@spb.cityline.ru> wrote in message news:9ri86l$20mi$2@ddt.demos.su... > OP>> Дано: Центр окружности C, точки начала и конца дуги A и B. > OP>> Дуга от A до B подразумевается против часовой стрелки. > OP>> Hайти: Середину дуги. > AP> Провести биссектрису, найти пересечение окружности и луча... > AP> Почему так нельзя? > Можно. Формулу приведи. Сможешь ли ты корректно вычислить биссектрису. Во первых центр можно спокойно считать размещенным в 0,0, постольку смешение системы координат на точность не влияет. Теперь, найдем одну точку, достаточно удаленную от центра на равноотстояшей от концов дуги прямой (x -Ax)^2+(y-Ay)^2 = (x -Bx)^2+(y-By)^2 что сокрашаем до 2*x*(Ax -Bx) + 2*y*(Ay -By) - (Ax^2-Bx^2) - (Ay^2-By^2) =0. Подставим сюда какое нибудь "большое" число вместо x или y и найдем оставшуюся координату. Hапример в в зависимости от того что больше abs(Ax -Bx) или abs(Ay -By) подставляем y =Py =Ax -Bx, или x =Px =Ay -By, (можно даже умножить на коэффициент 2,4,8,...) и находим отставшуюся кооодинату Px или Py. Если обе разности =0, то и дуга нулевой длины и центр ее (или оба центра) считается легко :) Теперь имея достаточно большой вектор Px, Py надо его промасштабировать на радиус sqrt((Ax^2+Ay^2+Bx^2+By^2)/2) (кстати можно этот радиус сразу взять как упомянутый ранее коэффициент) и определить направление по знаку Px*Ay-Py*Ax. Cheers, Serge --- ifmail v.2.15dev5 * Origin: Excite@Home - The Leader in Broadband http://home.com/f (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/21067bae9ef6e.html, оценка из 5, голосов 10
|