1

语境

我将一些 DMX 聚光灯固定在离地面 12 米的圆形平台上。相机固定在这个平台的中心(大约)。相机应该拍摄地面以寻找和跟踪一些目标。这台相机是静态的,给我一个带有 X/Y 笛卡尔坐标系的 2D 平面图。当我找到一个目标时,我需要把焦点放在它上面。

插图

场景 俯视图 俯视图 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 计划中找到您想要的一切:点、矢量、聚光灯的天顶点,我也可以将聚光灯定位在您想要的任何位置。我只是找不到特定 X/Y 点(相机视图中的目标)的相应平移和倾斜,我不知道如何找到它。

我用 C# 开发。

4

0 回答 0