3D изображение: определение эллипсоида на основе 3 заданных эллипсов, которые параллельны декартовым плоскост - PullRequest
4 голосов
/ 25 ноября 2010

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

Мне нужно определить эллипсоид E, который может иметь любые радиусы, центры и вращения в пространстве alt text

пользовательский интерфейс позволяет пользователю контролировать 3 эллипса, которые являются «кусочками» эллипсоида (красный, зеленый, синий на изображении) и параллельны (по определению) основным декартовым плоскостям (x-y, y-z). х-г)

эти 3 эллипса являются частью и определяют весь эллипсоид alt text

каждый фрагмент можно перетаскивать, изменять размер или вращать в пространстве и каждый срез полностью определен: это 3d-положение центра в пространстве, это 2 радиуса, это расстояние от плоскостей осей.

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

мне нужно уравнение для пересчета эллипсоида E на основе изменений, сделанных в срезе

(Предпочтительный тип уравнения для эллипсоида должен облегчать получение X-Y разрезов эллипса (переменная z))

есть идеи? спасибо заранее Саар

Ответы [ 3 ]

2 голосов
/ 02 декабря 2010

Я думаю, что ключом к этой проблеме является переписать исходное уравнение эллипса в матричной форме : x T Ax , где x = {x, y, z} и A положительно определены. Принимая

Ellipsoid matrix.

мы можем обновить A через преобразование подобия . Таким образом, обновленная матрица будет тогда A ' = U T AU , где U является ортогональной матрицей и U T - его транспонирование. Затем A ' используется для обновления других представлений.

Начиная с матриц вращения вокруг трех осей

Rotation Matrices about the three axes.

мы можем ясно видеть, что вращение вокруг осей будет влиять на 8 членов в A . Поскольку A является симметричным, это сводится только к изменению 5 из 6 членов. Масштабирование / растяжение также очень легко сделать.

Мы начнем с предположения, что растяжение происходит вдоль оси x (или любой подходящей оси), так что S является диагональной матрицей с диагональю {sqrt (s), 1, 1}, где s - количество примененного растяжения. Затем масштабирующая матрица поворачивается в правильном направлении приложения, то есть R Theta SR Theta T , где Theta - угол между положительная ось х и направление растяжения по часовой стрелке. Обратите внимание на обратный порядок поворотов здесь: R Theta T можно рассматривать как вращение координат так, что S растягивает Ось X и R Тета поворачивает их назад. Например, если плоскость x-y масштабируется вдоль x = y с коэффициентом s, то

scaling matrix

S применяется к A таким же образом, как и вращения, и, опять же, легко видеть, что операция масштабирования напрямую влияет на все члены, кроме zz ,

1 голос
/ 05 декабря 2010

Здесь у вас есть пример неразрешимой ситуации :

Один настоящий аллипсоид и сфера, чьи пересечения с тремя координатными плоскостями являются точками.В этом примере вы не можете решить, какую квадрику следует отображать.

alt text

alt text

Уравнения для этих поверхностей:

 (-1 + x)^2 + (-1 + y)^2 + (-1 + z)^2 == 1  

и

1/8 (12 + 3 x^2 + 3 y^2 - 2 y (2 + z) - 2 x (2 + y + z) + z (-4 + 3 z)) == 1

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

0 голосов
/ 28 ноября 2010

Если в данном случае 3 эллипса представляют «декартовы» срезы E, одна модификация любого из (панорамирование, масштабирование, поворот) любого из них переопределяет уникальный эллипсоид.К счастью, есть одна мышь (или одно-единственное распознаваемое нажатие клавиши) или один разум для этого вопроса.

...