Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2014, 15:21   #1
Excalibur921
 
Регистрация: 12.10.2013
Сообщений: 4
По умолчанию Найти центр сферы по 4 точкам на ее поверхности

Подскажите простой, и универсальный способ нахождения центра сферы, если даны 4 точки в пространстве на ее поверхности. И возможно ли провести ее вообще?(формула для проверки). Думаю радиус искать не нужно, если известен центр сферы и точка на поверхности, тогда вместо 4 неизвестных будет 3, может это упростит расчет.
Не знаю как составить уравнения, столько неизвестных еще никогда не было.
Чтобы я позже в экселе например только менял координаты точек, а оно считало центр сферы и радиус, это нужно для отладки перед кодированием в С++.
Excalibur921 вне форума Ответить с цитированием
Старый 25.06.2014, 16:50   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

(x0-x1)^2+(y0-y1)^2+(z0-z1)^2=(x0-x2)^2+(y0-y2)^2+(z0-z2)^2=(x0-x3)^2+(y0-y3)^2+(z0-z3)^2=(x0-x4)^2+(y0-y4)^2+(z0-z4)^2
(x0,y0,z0) - центр сферы
(xi,yi,zi) i=1..4 - точки на сфере
Из этого равенства получается система из 3 равенств с 3 неизвестными:
(x0-x1)^2+(y0-y1)^2+(z0-z1)^2=(x0-x2)^2+(y0-y2)^2+(z0-z2)^2
(x0-x1)^2+(y0-y1)^2+(z0-z1)^2=(x0-x3)^2+(y0-y3)^2+(z0-z3)^2
(x0-x1)^2+(y0-y1)^2+(z0-z1)^2=(x0-x4)^2+(y0-y4)^2+(z0-z4)^2
После переноса в левую часть:
(x2-x1)(2x0-x1-x2)+(y2-y1)(2y0-y1-y2)+(z2-z1)(2z0-z1-z2)=0
(x3-x1)(2x0-x1-x3)+(y3-y1)(2y0-y1-y3)+(z3-z1)(2z0-z1-z3)=0
(x4-x1)(2x0-x1-x4)+(y4-y1)(2y0-y1-y4)+(z4-z1)(2z0-z1-z4)=0
Получилась система линейных уравнений.
Осталось представить в виде:
Ax = b
x = A^(-1) * b
Вики
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 25.06.2014 в 16:58.
BDA вне форума Ответить с цитированием
Старый 28.06.2014, 15:48   #3
Excalibur921
 
Регистрация: 12.10.2013
Сообщений: 4
По умолчанию

Или через детерменанты.
http://www.cyberforum.ru/geometry/th...ml#post6371551
Excalibur921 вне форума Ответить с цитированием
Старый 29.06.2014, 01:35   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Можно искать так. Три точки - это окружность/треугольник/плоскость. Радиус сферы проходит через центр окружности и ортогонален плоскости, в которой она лежит. Стало быть, нам достаточно найти уравнения двух таких прямых-радиусов и найти их пересечение.

По трем точкам легко находим уравнение плоскости, Ax+By+Cz+D=0, здесь (A, B, C) - это нормаль, а значит, радиус параллелен этому вектору. Нужно только найти, через какую точку он проходит. Это тоже несложно, эта точка - пересечение серединных перпендикуляров (медиатрисс) к сторонам треугольника (центр описанной окружности).

Отсюда в принципе можно вывести все формулы и радостно ими пользоваться.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составление программы для вычисления площади полной поверхности и объема сферы xprinceps Фриланс 4 11.11.2013 18:54
Найти центр сложной фигуры mutabor Свободное общение 25 01.03.2010 23:36
Найти центр ящика Ulex Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 22.01.2010 00:08
Найти объём куба и площадь его боковой поверхности BASIC Ветренная Помощь студентам 23 02.06.2008 13:15
Help!!!Движение точки по поверхности сферы alex23xandr Помощь студентам 4 20.05.2007 14:45