Задача: Три произвольно заданных точки лежат на окружности. Составить на Паскале программу опредения координат центра этой окружности.
На чем я застрял: раз три точки - ежику ясно: вершины треугольника с описанной вокруг него окружностью. Стороны, площадь, радиус - пожалуйста, не проблема вычислить, т.к. координаты точек есть. Но что дальше? ](*,)
В методичке даже близко подобного ничего нету, включив логику и остатки знаний по геометрии, вторую неделю бьюсь с идеей нахождения через серединные перпендикуляры к сторонам.
Т.е. если одну сторону получившегося треугольника представить, как часть графика функции Y=kX+b, то перпендикуляр, если не ошибаюсь, будет Yp=-X/k+b (так?). Если добавить поправочный коэф-т, чтоб при Хсреднем давал Yсреднее - формула серединного перпендикуляра готова. Но как найти точку пересечения этих самых перпендикуляров (aka центр окружности) - вообще идей нету, школьная математика успела вылететь напрочь за эти годы. Да и было ли оно такое в школе?
А может есть более простой алгоритм? Задачка-то считается обычной контрольной для заочников, всего лишь второе задание из 4, причем остальные три я расщелкал как орешки...
xKVtor Ну не знаю... По твоим формулам у меня вообще выходило нечто жуткое, типа -90372, -285793644. На опечатки при набивке формул проверял несколько раз, но где прятались грабли - так и не нашел.
PS Еще раз спасибо всем принимавшим участие.
Настоящий джентльмен назовет кошку кошкой, даже наступив на нее в темноте.
Что-то ищем? Google в помощь
Хоть минус три мильярда! Если в процедуре CHECK получается три одинаковых радиуса, то значит все верно, таки и должно быть.
Хотя, теперь уже неважно, все равно мои формулы забраковали
ПС [13-06-2006] Идеальный скриншот BIOS'а ? Запросто ! // K.V.
Такие дикие результаты у меня получались после перевода формул с картинки в программу. Причем при одних и тех же исходных данных ответы были каждый раз разные Мистика, вобщем. Или то, что я вместо extended использовал real
Так что я сам где-то намудрил. Правда где - так и не понял. :oops: Наверное, зимний авитаминоз на мозги давит
Настоящий джентльмен назовет кошку кошкой, даже наступив на нее в темноте.
Что-то ищем? Google в помощь
DanZer напутал с координатами по Y
при выводе везде надо 'ymax-' подставлять, и ёще вроде где-то индексы перепутал. вот попробуй, тока с делением на ноль сам уж доведи...
дебаг версия:
--== Михаил ==--
Да ладно, я уже успел нагло передрать функции X0 и Y0 из поста xKVtor'а прикрутить их к своей программке. Все сошлось. Теперь осталось только комментарии добить и прочее мелкое украшательство, типа генерации координат точек случайным образом. Но с этим я как-нибудь и сам справлюсь! :twisted:
Настоящий джентльмен назовет кошку кошкой, даже наступив на нее в темноте.
Что-то ищем? Google в помощь
DanZer попробуй ка координаты (100,100) (200,101) (200,200) а потом (100,100) (200,100) (200,200)
Добавлено спустя 21 минуту 29 секунд:
Сдаётся мне, что проще через окружности считать, тем более радиус известен из площади. :?
--== Михаил ==--
Ну подумаешь, обычное деление на 0, с кем не бывает Все равно домучаю! :twisted:
Добавлено спустя 7 часов 21 минуту 36 секунд:
Вот!
Настоящий джентльмен назовет кошку кошкой, даже наступив на нее в темноте.
Что-то ищем? Google в помощь
Класс! На 0 деление тока для прямой получается
--== Михаил ==--
Вам вероятность выпадения сразу трех точек с одинаковыми значениями Х или Y посчитать? Для квадрата 400*400 это будет одна тридцатидвухмиллионная, если я тервер еще не забыл И так еле успел к 8 марта
А если серьезно, эта проблема решается легче легкого: просто проверю, если znam=0 - перегенерю координаты.
Настоящий джентльмен назовет кошку кошкой, даже наступив на нее в темноте.
Что-то ищем? Google в помощь
Нуля не будет, я об этом говорил, ведь что бы 0 получился, надо чтоб был не треугольник а прямая или две точки с одинаковыми координатами - что тоже прямая
--== Михаил ==--
Отправить комментарий