Задачка из геометрии: кто подскажет?

Задача: Три произвольно заданных точки лежат на окружности. Составить на Паскале программу опредения координат центра этой окружности.

На чем я застрял: раз три точки - ежику ясно: вершины треугольника с описанной вокруг него окружностью. Стороны, площадь, радиус - пожалуйста, не проблема вычислить, т.к. координаты точек есть. Но что дальше? ](*,)

В методичке даже близко подобного ничего нету, включив логику и остатки знаний по геометрии, вторую неделю бьюсь с идеей нахождения через серединные перпендикуляры к сторонам.

Т.е. если одну сторону получившегося треугольника представить, как часть графика функции Y=kX+b, то перпендикуляр, если не ошибаюсь, будет Yp=-X/k+b (так?). Если добавить поправочный коэф-т, чтоб при Хсреднем давал Yсреднее - формула серединного перпендикуляра готова. Но как найти точку пересечения этих самых перпендикуляров (aka центр окружности) - вообще идей нету, школьная математика успела вылететь напрочь за эти годы. Да и было ли оно такое в школе?

А может есть более простой алгоритм? Задачка-то считается обычной контрольной для заочников, всего лишь второе задание из 4, причем остальные три я расщелкал как орешки...

а не проще решить через уравнение окружности

Цитата:
Окружность с центром (a,b) и радиусом r задается уравнением (x-a)^2+(y-b)^2=r^2

Ну, и что ?

Классика ! Аналитическая геометрия, первый курс мехмата (тридцать семь лет назад, аднака !).

Одно уравнение с тремя неизвестными ( см. Hohmach).

Неизвестные - a, b и r.

Зато известны ТРИ тогчки, принадлежащие этой окружности.

Пишем: (x1-a)^2+(y1-b)^2=r^2
Аналогично - для x2,y2 и x3,y3 .
Где x1,y1 - координаты первой точки... и т.д.

Дык вот, решая получившиеся ТРИ уравнения с ТРЕМЯ неизвестными, находим a, b, и являющиеся координатами центра. Да еще и радиус в придачу имеем, который по условию задачи нам пофиг.

У вас прекрасные дети ! Но все, что вы делаете РУКАМИ - никуда, никуда не годится !

geodimetr писал(-а):
Классика ! Аналитическая геометрия, первый курс мехмата (тридцать семь лет назад, аднака !).
Это вообще-то школьная задача:)

Тоже начал через окружность решать, но чуть не бросил -- слишком много пребразований. Но в итоге все-таки получился такой вот ужас:

В правильности не уверен, проверял по частным случаям (центр единичной окружности в начале координат)
Если вдруг в знаменателе ноль получится, то можно менять координаты одной из двух точек на координаты третьей (индексы симметричны).

xKVtor писал(-а):
...Это вообще-то школьная задача:)...

Это СЕГОДНЯ она школьная. А 37 лет назад аналитической геометрии в школе не было.

У вас прекрасные дети ! Но все, что вы делаете РУКАМИ - никуда, никуда не годится !

Аватар пользователя mikkey

Свойства треугольника были хорошо изучены еще древними греками.
В знаменитых «Началах» Евклида доказывается, что центром окружности, описанной около треугольника, является точка пересечения серединных перпендикуляров к его сторонам.
Архимед, определяя положение центра тяжести однородной треугольной пластинки, установил, что он лежит на каждой из трех медиан. Точку пересечения медиан треугольника называют центром тяжести или центроидом треугольника.


Позднее было доказано, что три высоты треугольника также пересекаются в одной точке, которая называется его ортоцентром.
Закономерность в расположении этих трех замечательных точек треугольника – центра O описанной окружности, центроида G, ортоцентра H – впервые обнаружил знаменитый математик Леонард Эйлер (1707-1783).
Рассмотрим сначала один частный случай: прямоугольный треугольник ABC (рис.1). Середина O гипотенузы AB является центром описанной около него окружности. Центроид G делит медиану CO в отношении 1:2, считая от вершины C. Катеты AC и BC являются высотами треугольника, поэтому вершина C прямого угла совпадает с ортоцентром H треугольника. Таким образом, точки O,G,H лежат на одной прямой, причем OH=3OG. Пользуясь методом координат, Эйлер доказал, что такая же связь существует между тремя указанными точками любого треугольника....

Полный реферат bobych.webstyle.ru/referat/49/9929/9929.zip

Короче находишь пересечение двух серединных перпендикуляров - получаешь центр.:)

Аватар пользователя great coder

mikkey
Ну ты загнул:)

Выход обычно есть. Но он не работает.

Аватар пользователя ivp

DanZer
Да что ж вы все каких юных девиц себе находите? То недавно Стор пытал чем-то подобным, то ты вот теперь... wink

- Ситчик веселенький есть?..
- Приезжайте, обхохочетесь!..

Аватар пользователя DanZer

Mikkey писал(-а):
Короче, находишь пересечение двух серединных перпендикуляров - получаешь центр.

DanZer писал(-а):
Но как найти точку пересечения этих самых перпендикуляров (aka центр окружности) - вообще идей нету

Народ, вы не забывайте, что это еще на Паскаль переводить, так что единственное, что более-менее подходит - совет xKVtor'a. А так - всем спасибо за советы (отдельно еще Mikkey, за исторические сведения:)), пища для мозгов обеспечена:), путь решения - вроде как ясен.

PS 2ivp Это не мы их находим, это они нас:)

Настоящий джентльмен назовет кошку кошкой, даже наступив на нее в темноте.
Что-то ищем? Google в помощь

Аватар пользователя mikkey

Да не загнул, просто пока думал забыл про что уже написано:)
Дома почирикал, вывел - по-позже напишу прогу и испытаю.
DanZer а потом просто эти два уравнения приравниваются, т.к. в т.О они пересекуться, т.е. Х и У одинаковые.


Только тут есть один момент. Если одна из сторон параллельна оси ОУ - то уравнение такой прямой Х=с college.ru/mathematics/courses/function/content/chapter2/section1/paragrap...
И в полученной мной расчёте можно получить деление на ноль, т.е. нужно добавить проверку, но это не проблема, т.к. в этом случае координата центра на оси ОХ уже известна - середина вертикальной стороны:)

Добавлено спустя 3 минуты 20 секунд:

А вообще, данные фишки очень просто описываются через векторы или матрицы и решение намного проще, только вот вспомнить как оно всё делается.... ispu.ru/library/math/sem1/pyartli1/node49.html тогда голова точно лопнит :)

Вот чё накалякал:)

Аватар пользователя Root

Maple рулит:) набиваем систему и сразу получаем ответ в удобоваримом виде.
В общем, решение xKVtor'а ОЧЕНЬ похоже на правду.

ужОс:

Цитата:
{x = 1/2*(x3^2*y2-y1*x3^2-y2*y1^2+x2^2*y1+x1^2*y3+y1^2*y3-y1*y3^2-y3*x2^2+y3^2*y2+y2^2*y1-y3*y2^2-y2*x1^2)/(x3*y2-y3*x2-x1*y2+x1*y3+y1*x2-y1*x3), y = -1/2*(x3^2*x2-x3*x2^2-x3*y2^2+y3^2*x2-x1^2*x2+x1^2*x3+x1*x2^2+x1*y2^2-x1*x3^2-x1*y3^2-y1^2*x2+y1^2*x3)/(x3*y2-y3*x2-x1*y2+x1*y3+y1*x2-y1*x3), r = 1/2*RootOf(_Z^2-y3^4*x2^2-4*y3*x1*y2^2*y1*x2+2*x1^3*x3^3+2*x3*y2^2*x1^3-x3^2*x2^4-2*x3*y3^2*x2^2*x1+2*x3*y3^2*x2^3+2*x3^3*x2^3+8*y3^2*x1*y2*y1*x2+2*x1^3*x2^3-4*x3^2*x1*y3*y1*x2-x3^4*y2^2+2*x1*y2^2*y3^2*x2+2*y1^2*x2*x1*y3^2-4*y3*x1^3*x2*y2-4*y3*x1*x2^3*y1-2*x3^2*x2*x1*y2^2-2*x3*y2^2*x1^2*x2+4*x1^2*x2*y1^2*x3-2*x1*x2^2*y1^2*x3+2*x1*y2^2*y1^2*x2-2*x1*x3^2*y1^2*x2+2*x3*x2^4*x1+2*x3*y2^4*x1+2*x1^4*x2*x3+2*x1^3*x2*y2^2-2*x1^3*x2*x3^2-2*x1^2*x2^2*y1^2-2*x1^3*x3*x2^2-2*x1^2*x3^2*y1^2-2*x1^2*x2^2*y2^2+2*x1*x2^3*y1^2+4*x3*x2^2*x1*y2^2+8*x3^2*x1*y2*y1*x2+2*x1*x3^3*y1^2+2*y1^4*x2*x3+2*y2^3*y1^3-x2^4*y1^2-x1^4*y3^2-y1^4*y3^2+2*y1^3*y3^3-y1^2*y3^4-y3^2*x2^4-y3^4*y2^2+2*y3^3*y2^3-y2^4*y1^2-y3^2*y2^4-y2^2*x1^4-y3^4*x1^2-x1^2*y2^4-x1^2*x3^4-y1^4*x2^2-y1^4*x3^2+2*x2^2*y1^3*y3-2*x2^2*y1^2*y3^2+2*x2^4*y1*y3-2*x2^2*y1^2*y2^2-2*x1^2*y3^2*y1^2+2*x1^2*y3^3*y1-2*x1^2*y3^2*x2^2+2*x1^2*y3^3*y2-2*x1^2*y3^2*y2^2+2*x1^4*y3*y2-2*y1^2*y3^3*y2-2*y1^3*y3*y2^2+2*y1*y3^3*x2^2+2*y1*y3^4*y2-2*y1*y3^3*y2^2+2*y3^3*x2^2*y2-2*y3^2*x2^2*y2^2-2*y3^2*y2^3*y1+2*y2^4*y1*y3+2*y2^3*y1*x1^2+2*y3*y2^3*x1^2+2*y3^4*x2*x1-x1^2*x2^4+2*x1^3*x2*y3^2+2*x1*x2^3*y3^2+2*x3^3*x2*y2^2+6*x3^2*x2^2*x1^2-2*x3^2*x2^3*x1+2*x3^4*x2*x1-2*x3^2*x2^2*y2^2-2*x3*x2^3*x1^2-x3^4*x2^2-4*y3*y1^2*x2*x1*y2-x1^4*x3^2-4*x3^2*y3*x2*x1*y2-x1^4*x2^2+2*x3*x1^3*y3^2-2*x3^3*x1^2*x2-2*x3^3*x1*x2^2+2*x3^3*x1*y2^2+2*y1^2*x3^3*x2-2*x3^2*x1^2*y3^2+2*x3^4*y2*y1-2*x3^2*y3^2*x2^2-2*x3^2*x1^2*y2^2-2*x3^2*y1^2*x2^2-2*y2^2*y1^2*x3^2+2*y2*y1^3*x3^2+2*y1^3*y3*x3^2-2*y1^2*y3^2*x3^2-2*y3^2*y2^2*x3^2+2*y2^3*y1*x3^2+2*y3*y2^3*x3^2-4*x3*y2^3*y1*x1+2*x3*y3^2*y2^2*x2+2*x3*y2^2*y1^2*x2+4*x3^2*y3^2*x2*x1+2*x3^2*y3*x2^2*y1+2*x3^2*x1^2*y2*y3-4*x3^3*y2*y1*x2-4*x3^3*x1*y2*y1+2*x2^2*y1*x3^2*y2+2*x1^2*y3*y1*x3^2-2*y1^2*y3*x3^2*y2+4*y1*y3^2*x3^2*y2+2*y3*x2^2*x3^2*y2-2*y3*y2^2*y1*x3^2+2*y2*x1^2*y1*x3^2+2*x3*y2^2*y1^2*x1-4*x3*y2*y1^3*x2-4*x3*x2^3*y1*y3-2*x3*x1^2*y3^2*x2-4*x3*x1^3*y3*y2+2*x3*y1^2*y3^2*x2+2*x3*y1^2*y3^2*x1-4*x3*y1^3*y3*x2-y2^2*y1^4-x3^4*y1^2-4*x3*y3*y2^3*x1+4*y2*y1^2*x1^2*y3-2*y2*y1^2*y3*x2^2+2*x2^2*y1*x1^2*y3-2*x2^2*y1*y3^2*y2+4*x2^2*y1*y3*y2^2+2*x2^2*y1*y2*x1^2-2*x1^2*y3*y2^2*y1-2*y1*y3^2*y2*x1^2+2*y3*x2^2*y2*x1^2-4*y3^3*x2*x1*y2-4*y3^3*x1*y1*x2+8*x3*y2*y1^2*y3*x2-4*x3*y2*y1^2*x1*y3-4*x3*x2^2*y1*x1*y2+8*x3*x2^2*y1*x1*y3-4*x3*x1^2*y3*y1*x2-4*x3*y1*y3^2*x1*y2-4*x3*y3*x2^2*x1*y2-4*x3*y3^2*y2*y1*x2-4*x3*y2^2*y1*y3*x2+8*x3*y2^2*y1*x1*y3+8*x3*y2*x1^2*y3*x2-4*x3*y2*x1^2*y1*x2+2*y2*y1^3*x2^2+2*y2*y1^4*y3-2*y2*y1^3*y3^2+6*y2^2*y1^2*y3^2-2*y2^3*y1^2*y3-2*y2^2*y1^2*x1^2-x3^2*y2^4+2*x3*y3^2*y2^2*x1+2*x3*x2^3*y1^2, label = _L6)/(x3*y2-y3*x2-x1*y2+x1*y3+y1*x2-y1*x3)}

:) это типа и есть ответ )))))

Аццкий ромбовод {:€
Я пока не волшебник - я только учусь! :-P

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей