Интерполировать координаты x, y, z на сфере, используя точки из двух спиновых векторов? - PullRequest
3 голосов
/ 05 октября 2010

Я хочу построить трехмерные точки в реальном времени, которые лежат на поверхности единичной сферы (r = 1).

Здесь работают два спиновых вектора.Один вектор вращается вокруг оси Y, его значения X и Z рассчитываются с использованием cos () и sin () окружности, которая полностью лежит на плоскости X / Z, при этом все значения Y равны 0. Другой вращается вокругОсь X, это значения Z и Y, рассчитанные с использованием cos () и sin () окружности, которая полностью лежит на плоскости Z / Y, при этом все значения X равны 0. Угловой импульс двух векторов обычно не равентак же.Однако конечные точки векторов лежат вдоль поверхности общей сферы с радиусом, равным 1. Поэтому они имеют одинаковую величину и оба происходят из одной и той же точки 0, 0, 0.

Скажем,первый вектор имеет член углового момента, называемый angXZ, а второй angZY.Это означает, что в любое время я могу вычислить две точки, по одной для каждого вектора вращения, используя angXY и angZY.С этими двумя трехмерными точками, какова формула для расчета третьей точки, которая также будет лежать на поверхности единичной сферы и будет правильной интерполяцией между двумя точками, вычисленными по angXZ и angZY?

Я могуПосмотрите в моей голове, что с учетом любых двух трехмерных точек, которые лежат на поверхности единичной сферы, существует один-единственный круг (плоскость), на окружности которого они оба будут лежать.Я также могу интуитивно понять, что вычисление координат интерполированной точки сводится к разделению пополам угла, который создается двумя вычисленными точками при проецировании на круг, окружность которого они оба разделяют.Но я просто не могу обернуться вокруг переводов и математики.

Есть ли простая формула, которая берет две трехмерные точки, которые лежат на поверхности единичной сферы, чтобы вычислить третью точку, которая также будет лежатьна этой поверхности и будет ли правильная интерполяция между первыми двумя точками?

Я использую Delphi Pro 6, если это имеет значение.

ПОСЛЕДУЮЩАЯ ИНФОРМАЦИЯ: Мне кажется, что я должен быть в состояниивозьмите линейную среднюю точку двух точек, вычисленных по паре векторов вращения, и спроецируйте их обратно на единичную сферу.Например, формула, найденная по ссылке ниже, дает уравнения для вычисления средней точки между любыми двумя трехмерными точками.Разве я не смогу тогда взять эту трехмерную точку и, используя какую-то формулу, отрегулировать ее координаты XYZ таким образом, чтобы она проецировалась обратно на поверхность сферы юнита?

Нахождение координат точки между двумя точками?

1 Ответ

2 голосов
/ 05 октября 2010

Пусть M и N - ваши две точки, а O - начало. Мы найдем P, середину сегмента MN: OP = OM + ON / 2. Вы вычислите величину OP: | OP |. Ваша точка будет R с OR = OP / | OP | = OM + ON / 2 | OP |.

Удачи в вычислении этого. Я не знаю Delphi, но, возможно, он разрешает прямые векторные операции. Если нет, сделайте это с аналитической геометрией.

Координаты для средней точки - это средние арифметические значения координат M и N (вы сказали, что можете их вычислить). Чтобы получить величину | ОП | Вы извлекаете квадратный корень из x ^ 2 + y ^ 2 + z ^ 2. Чтобы получить R, вы просто делите координаты P на величину, рассчитанную только сейчас.

Вы обрабатываете отдельно, когда М и N противоположны (P == O).

...