Как я нашел центр окружности

Разговорились мы как-то с Джоном, коллегой из Австралии (он математик), и он посетовал, что в интернете что угодно можно найти, но только не формулы центра окружности и центра шара. Точнее формулы даются, но не в явной форме, а через определители, которые еще нужно вычислять. С калькулятором точно свихнешься. Беседы проходили, если память мне не изменяет, в 2014 году. Как раз, когда известные события со сбитым самолетом были. Я тут же принялся искать центральную точку для окружности. Со сферой тоже пытался, но зарылся в километровых алгебраических знаках, как страус в песке. Поэтому пространство оставил в глубоком покое, а плоскую задачу одолел. Опубликовал формулы в Википедии и дал Джону ссылку. Потуги мои он оценил, ему это зачем-то пригодилось, но сказал, что в дальнейшем непременно ко мне пристанет, чтобы довести дело и с шаром. Ну, просто навязчивая идея у парня перла тараном. Как будто больше в математике не осталось других важных проблем. И что же? Ровно месяц назад австралиец мне позвонил и чуть ли не приказал заняться сферой, иначе цивилизация рухнет от невозможности найти точку на калькуляторе. И тут я вспомнил ценный совет великого математика прошлого века Арнольда Владимира Игоревича. Еще когда я был молодым и зеленым, он произнес потрясную фразу. Мол, если в задаче явно зарываешься, как в трясине, то реши ее очень частную часть, примени индукцию и тогда нащупаешь путь решения сложного варианта. Очень частная часть уже была в Википедии. Но, по всей видимости, нужно попытаться видоизменить ее форму так, чтобы похожая форма оказалась универсальной. То есть, чтобы годилась для пространства. Немного, к счастью, потребовалось мне времени для достижения поставленной цели. Результат видите на рисунке. А дальше открылся путь и к сфере. Но это уже будет в другой статье.

Тестовый пример:
x1=11:y1=2
x2=-9:y2=2
x3=9:y3=8
u=x1*(y2-y3)
v=x2*(y3-y1)
w=x3*(y1-y2)
Ax=y1*(x2^2+y2^2-x3^2-y3^2):Ay=Ax*x1/y1
Bx=y2*(x3^2+y3^2-x1^2-y1^2):By=Bx*x2/y2
Cx=y3*(x1^2+y1^2-x2^2-y2^2):Cy=Cx*x3/y3
x0=-1/2*(Ax+Bx+Cx)/(u+v+w)
y0=1/2*(Ay+By+Cy)/(u+v+w)
R=sqrt((x1-x0)^2+(y1-y0)^2)
print x0,y0,R

Результат:

1  2 - координаты центра окружности

 10 - радиус окружности


Рецензии