Ориентация плоскостей косательных к сфере
От: Didro Россия home~pages
Дата: 29.07.10 08:44
Оценка:
Добрый день,

дано: сфера радиусом R в центре координат. N плоскостей.
необходимо расположить плоскости на сфере, таким образом, чтобы все плоскости были косательными к сфере.

фактически вычислить вектор нормали плоскости и точку косания достаточно просто:

Plane.x=R*cos(a/N*2*PI)*cos(b/M*2*PI);
Plane.y=R*cos(a/N*2*PI)*sin(b/M*2*PI);
Plane.z=R*sin(a/N*2*PI)

где N — это число колец, которые мы расположим на сфере, M — число плоскостей в кольце.

Проблему для меня представляет определить углы поворота плоскости вокруг осей координат. Считаем, что изначально плоскость совпадает с плоскостью Оxy. Понятно, что для того чтобы плоскость была косательна к сфере необходимо, чтобы линия, проведенная из центра сферы к точке косания совпадала по направлению с нормалью плоскости.

Мне нужны именно эти углы, т.к. используемый графический пакет (action script, библиотека papervision3d) требует указания углов (rotationX, rotationY, rotationZ) поворота плоскости относительно соответствующих осей координат (X,Y,Z).

Я подхожу к этой задаче так (возможно неверно):

исходные направляющие углы нормали плоскости: 90,90,0 — нормаль совпадает с осью Z
пусть, мы хотим разместить плоскость в точке с координатами R,0,0 и следовательно перпендикулярно оси X (чтоб плоскость была косательной). Отсюда итоговые направляющие углы нормали плоскости: 0,0,0 — нормаль совпадает с осью X. Искомые углы поворота вокруг осей в этом случае будут равны: 0, 90, 0 — т.е. нужно выполнить поворот вокруг оси Y на 90 град.
Не могу найти общую формулу, которая бы давала углы поворота, исходя из известных направляющих углов нормалей плоскости в исходном и конечном состоянии.


Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.