天天看点

GLS-地平仪ADI制作制作ADI

制作ADI

地平仪(ADI, Attitude Direction Indicator)用于让飞行器驾驶员知道飞行器的俯仰角和翻滚角。

目的

GLS-地平仪ADI制作制作ADI

GL仪表单元开发

step 1: 打开上述”_adi.gls”文件,后清空GL的Geometry窗口的所有Object。

step 2: 打开Application窗口,命名window title为adi,并设置窗口的初始大小为512 X 512。

step 3:点击工具栏中工具上的箭头,在打开窗口中按下述图中红框圈中的内容进行设置。

GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI
GLS-地平仪ADI制作制作ADI

添加属性来处理Pitch/Roll

“Pitch”属性来处理object关于x轴的旋转,”Roll”属性来处理关于z轴的。

step 1: 创建一个名为”Pitch”的float型属性,并拥有为0.0f的初始值。

step 2: 将下属代码添加到属性的设置函数内(即void Pitch( const float& value )):

\1. //Clamp the incoming values to a range between -90.0f and 90.0f

\2. _pitch = CLAMP_VALUE(value, -90.0f, 90.0f);

\3. adi_ball->DynamicRotate(_pitch, X_AXIS);

该段代码将可以实现”adi_ball”以x轴为中心在(-90.0f, 90.0f)的范围内动态旋转的功能。

step 3: 创建一个名为”Roll”的float型属性,并拥有为0.0f的初始值。

step 4: 同样将下属代码添加到属性的设置函数内:

\1. // Clamp the incoming values to a range between -180.0f and 180.0f

\2. _roll = CLAMP_VALUE(value, -180.0f, 180.0f);

\3. adi_ball->DynamicRotate(_roll, Z_AXIS);

计算

函数Calculate()用于周期性地驱动仪表,且在每帧渲染前被调用。若函数体过大,就会对程序的实时性造成了一定的影响。

step 1: 展开”Class Method”后选中Calculate()函数,在代码输入框中追加下属代码:

\1. if (Testing())

\2. {

\3. // Exercise the Pitch and Roll properties with

\4. // input values generated from RampFloat.

\5. Pitch( RampFloat(time / 2, -25, 40) );

\6. Roll( RampFloat(time / 3, -30, 30) );

\7. }

包含glsutil.h的效用函数

因为Calculate()函数中用到了ramping函数,而这些函数包含在头文件”glsutil.h”内,故该头文件需要被添加到我们的类中。

step 1: 在”Code”选项卡中选中”file _adiApp.h”选项,在代码输入框内输入如下内容:

\1. #include

编译+运行+测试

mpFloat(time / 3, -30, 30) );

ADI动画般的动起来,就是通过效用函数RampFloat()传递到Pitch和Roll的值。

GLS-地平仪ADI制作制作ADI

继续阅读