语境
我将一些 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# 开发。