2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 связанные точки в пространстве
Сообщение16.04.2009, 14:51 
Аватара пользователя
Добрый день.

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

Подскажите, пожалуйста, как можно определить положения точек по заданным шести переменным с наименьшими вычислительными затратами, если учесть, что два расстояния равны?

 
 
 
 
Сообщение17.04.2009, 21:46 
Аватара пользователя
Немного мыслей.

В качестве первых трех переменных логично взять координаты одной точки. x_0, y_0, z_0. Еще две переменные определяют положение второй точки - пусть это будут сферические углы, \phi, \theta:
x=r\sin\theta\cos\phi
y=r\sin\theta\sin\phi
z=r\cos\theta

Для нахождения третьей точки попробовал решить систему из уравнения конуса, плоскости и трех аналогичных уравнений на x, y, z. Но не сходится :(

Появилась такая идея:
Если вращать третью точку вокруг оси из двух других точек, то угол, на который повернута третья точка относительно, например, вертикального положения, будет однозначно определять положение точки. Но как это сделать?
Если вращать координаты, то придется делать много вычислительных операций.
Можно ли определить угол такого вращения без поворота/движения координат?

 
 
 
 
Сообщение18.04.2009, 02:08 
Аватара пользователя
Ну и? Просто две точки на сфере. Для третей введите еще два сферических угла, ровно так же, как вводили для второй.

 
 
 
 
Сообщение18.04.2009, 09:25 
Аватара пользователя
Да, но у системы шесть степеней сободы, и координаты последней точки зависят от одной переменной

 
 
 
 
Сообщение18.04.2009, 12:57 
Аватара пользователя
А, между всеми точками... То есть, попросту говоря, у вас жесткий треугольник? Тогда пользуйте углы Эйлера.

 
 
 
 
Сообщение18.04.2009, 21:29 
Аватара пользователя
Да, это фактически твердое тело.
Значит, определяю три переменные как углы Эйлера \phi,\theta,\psi, нахожу из них матрицу поворота \mathbb{A}, совмещающую две новые оси с катетами треугольника. Соответственно, вектор, направленный по новой оси, будет равен \overrightarrow{r}^{'}=\mathbb{A}\overrightarrow{r}, а он известен (единичный вектор, умноженный на длину), поэтому находим исходный вектор \overrightarrow{r}=\mathbb{A}^{-1}\overrightarrow{r}^{'}.
Как-то так?

Но как-то многовато вычислений получается :(

 
 
 
 
Сообщение19.04.2009, 20:50 
Аватара пользователя
Уточните задачу. Что известно, а что нужно найти? Есть ли какие-то ограничения на точки типа принадлежности каким-то кривым/поверхностям? Или вам просто нужно найти декартовы координаты каждой точки при некотором произвольно-отфонарном положении треугольника?

 
 
 
 
Сообщение21.04.2009, 00:35 
Аватара пользователя
Да, просто декартовы координаты.

Таки решил не мучить себя и окружающих, и реализовал через углы Эйлера, и без обращения матрицы поворота.

И на скорость не жалуюсь, т.к. два из трех линейных уравнений "равны" нулю, и это здорово сократило вычисления.

PS. Спасибо за желание помочь

 
 
 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group