Как получить PAN и TILT прожектора DMX из X и Y плана (вид с камеры)

контекст

У меня есть несколько прожекторов DMX, прикрепленных к круглой платформе, расположенной на высоте 12 метров над полом. Камера прикреплена к центру (приблизительно) этой платформы. Камера должна снимать землю, чтобы найти и отследить некоторые цели. Эта камера статична и дает мне 2D-план с X/Y декартовой системой координат. Когда я нашел цель, мне нужно обратить на нее внимание.

иллюстрация

Вид сверху сцены http://img15.hostingpics.net/pics/635699691.png Вид сбоку сцены Вид сбоку http://img15.hostingpics.net/pics/275272232.png

проблема

Чтобы осветить цель прожектором, мне нужно найти углы поворота и наклона, соответствующие положению X/Y этой цели. Эти прожекторы не имеют определенной ориентации, но я могу найти точку проекции X/Y на земле с помощью камеры.

Некоторые данные

Я нашел некоторые формулы в Интернете:

float radius = sqrt( x*x + y*y + z*z );
float inclination = atan2( y, x ) * 180.0 / PI;
float azimuth = acos( z/radius ) * 180.0 / PI;

или же

rotx = Math.atan2( y, z )
roty = Math.atan2( x * Math.cos(rotx), z )
rotz = Math.atan2( Math.cos(rotx), Math.sin(rotx) * Math.sin(roty) 

но я не знаю, правильно ли это после неубедительных тестов..

Я не знаю, есть ли у меня соответствующие значения x, y и z.

Я могу найти все, что вы хотите, на моем 2D-плане: точки, векторы, зенитные точки прожекторов и я могу расположить прожекторы там, где вы хотите. Я просто не могу найти соответствующий Pan и Tilt определенной точки X/Y (цель в обзоре камеры), и я не знаю, как найти ее.

Я развиваю в C#.

0 ответов

Другие вопросы по тегам