最近一直在研究osg中关于相机跟随节点运动方面的事情,有一些收获,此处记录一下。
现将实现效果展示一下。
程序初始化运行后,视点在坦克模型后方100处,如下图所示:
当按下键盘中的“A”键时,坦克模型向左转,视点同时进行跟随,如下图所示:
向右转向基本相同,此处不再截图演示。
以上功能看似较为简单,仔细研究了一下,将其中与数学相关的部分抽取了出来,建立坐标模型如下图所示:
上述问题抽象为数学问题来表达的话,可以表述为有一个以O点为中心、半径为R的圆,点A、B都在圆上,A的坐标为(x0, y0),B的坐标是(x1,y1),计算当从点A动到点B的变化表达式,其中θ为在圆上的旋转角度。
通过图中的两条辅助线,我们可以观察到B的坐标与半径R之间的关系如下所示:
x1=x0 - R * sinθ
y1=Rcosθ
其中R为A的坐标y0,所以可以推导出从A的坐标点到B的坐标点的变换公式为:
x1=x0 - y0 * sinθ
y1=y0cosθ