сферические координаты расстояние до плоскости - PullRequest
4 голосов
/ 22 февраля 2012

Справочная информация

Рассмотрим сферическую систему координат, подобную показанной здесь:

Система координат http://www.shokhirev.com/nikolai/projects/global/image013.gif

Для конкретной точки мы указываем ее местоположение с помощью (r, theta, phi).

Плоскость в этой системе координат может быть описана как множество всех точек (r, theta, phi), таких что phi = phi '. ​​

Проблема

Предположим, у нас есть единственная плоскость, заданная фиксированным phi = phi '. Для произвольной точки (r, theta, phi), какие самые быстрые и простые способы вычислить расстояние от (r, theta, phi) до плоскости, определенной как phi = phi '?

По сути, я пытаюсь найти простую формулу для расстояния от точки до плоскости в сферических координатах.

Что я пробовал

Я думаю, что было бы достаточно просто преобразовать сферические в декартовы координаты, чтобы сгенерировать точку (x, y, z) = (r, theta, phi), а затем сгенерировать плоскость также в декартовых координатах. Тогда я мог бы использовать стандартные формулы для расстояния от точки до плоскости в декартовых координатах. Этот подход не оптимален, так как мне нужно выполнить это вычисление миллиарды раз во внутреннем цикле моего кода.

Идеальный ответ сказал бы мне, как вычислить это расстояние без преобразования в декартовы координаты. Однако было бы также полезно, если бы кто-то мог проверить, что моя идея в «Что я пробовал» является разумной.

Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 22 февраля 2012

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

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

В этой новой системе координаты точки (r, theta, phi - phi '). Таким образом, проекция на плоскость X-z r * sin (тэта) * sin (фи-фи ') . Это окончательный ответ, так как длина проекции точки на нашу плоскость одинакова в обеих системах координат.

Если бы мы имели дело с общим планом, ваш подход был бы лучше.

0 голосов
/ 16 мая 2012

Разве это не * загар (фи)?

Падение в плоскость xz (при условии, что ось y является полярной осью), а угол phi - это угол между «новой плоскостью» и текущей позицией phi.

На приведенной ниже диаграмме фи фактически равно (новая фи - текущая фи).

enter image description here

0 голосов
/ 22 февраля 2012

Еще один способ получить ответ @Parakram Majumdar.

Плоскость может быть параметризована единичным вектором, перпендикулярным плоскости n и расстоянием плоскости от начала координат, b (см. http://mathworld.wolfram.com/Point-PlaneDistance.html). Так как ваша плоскость проходит через начало координат, у нас есть b = 0 , а единичный вектор, перпендикулярный плоскости, является единичным вектором в направлении phi , то есть phi = [- sin (phi '), cos (phi'), 0] . Расстояние a от точки r от плоскости - это просто скалярное произведение, n * г :

n*r = [-sin(phi'), cos(phi'), 0] * [r*sin(theta)*cos(phi), r*sin(theta)*sin(phi), r cos(theta)] = r*sin(theta)*sin(phi-phi')
0 голосов
/ 22 февраля 2012

Если вы ищете противоположную сторону от r (не в фи-плоскости), это должно быть задано как:

d = |r|sin(90 - theta)

Так как у нас есть прямоугольный треугольник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...