上下文
我有一些DMX聚光灯固定在位于地板上方12米处的圆形平台上。相机固定在该平台的中心(大约)。相机应该拍摄地面以找到并跟踪一些目标。这台相机是静态的,给我一个带有X / Y笛卡尔坐标系的2D平面图。当我找到目标时,我需要关注它。
插图
场景的顶视图 Top View Image http://img15.hostingpics.net/pics/635699691.png 场景的侧视图 Side View Image 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#开发。