центр описанной окружности
, подсобите.
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.157] |
|
|
правила раздела Алгоритмы

| Страницы: (3) 1 2 [3] все ( Перейти к последнему сообщению ) |
центр описанной окружности
, подсобите.
|
Сообщ.
#31
,
|
|
|
|
А всё, большое спасибо, ошибка найдена))) Как всегда наитупейшая)
|
|
Сообщ.
#32
,
|
|
|
|
Цитата experimenter @ да, блин, чего ты привязался со своей ортогонализацией? ты мне конечную формулу покажи А виде формулы не получится, т.к. надо хранить неоднократно используемые результаты промежуточных вычислений. Нет, можно конечно все расписывать через исходные данные, но тогда формула получается небоскребоэтажная и о вычислительной эффективности можно забыть - так что это ты сам, если уж тебе делать нечего, а у меня, например, есть дела поинтересней. А вот ортогонализацию здесь делать действительно не нужно, для перехода к старым координатам можно воспользоваться разложением по косому базису: Пусть есть система координат OXYZ и точки v1(v1x,v1y,v1y),v2(v2x,v2y,v2y),v3(v3x,v3y,v3y), надо найти точку c(cx,cy,cz), являющуюся центром описаной вокруг треугольника v1v2v3 окружности. Переходим в систему координат O'X'Y'Z', такую, что ось O'Z' перпендикулярна плоскости треуголька v1v2v3 и z'-координаты всех точек зануляются. Фактически, мы переходим в двухмерную систему координат O'X'Y'. Назначаем O' = v1, тогда новые координаты v1' зануляются: v1'x = 0.0 v1'y = 0.0 Далее, назначаем ось O'X' идущей по вектору v1v2, а ось O'Y' - лежащей в плоскости v1v2v3 перпендикулярно вектору v1v2 с той же стороны от v1v2, что и v3. Замечательно, что определять компоненты направляющего вектора оси O'Y', т.е. проводить ортогонализацию, при таком раскладе не нужно, т.к. координаты точек v2' и v3' определяются просто: v2'x = |v1v2| (считается по теореме Пифагора) v2'y = 0.0 v3'x = <v1v3,v1v2>/|v1v2| v3'y = SQRT(|v1v3|^2-|v3'x|^2) (обратно теорема Пифагора два раза) Итак, переход в плоскость совершен, теперь решаем двухмерную задачу, причем можно воспользоваться тем, что сторона v1'v2' лежит на оси O'X' - тогда система решается очень просто, собственно надо будет решить и не систему, а одно линейное уравнение, получаем точку c'(c'x,c'y) - центр описанной вокруг v1'v2'v3' окружности. Раскладываем c' по косому ненормированому базису O'v2'v3': k12 = (c'x-c'y/(v3'x/v3'y))/v2'x k13 = c'y/v3'y И наконец, переходим к старым координатам: c = v1 + k12*v1v2 + k13*v1v3 Вот так то! © Сибирские лесорубы |