📄 acmicam.h
字号:
#ifndef _ACMICAM_H_
#define _ACMICAM_H_
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#define DETTACHED_CAM 0
#define ATTACHED_CAM 1
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#define LOCAL_ROTATION 0
#define OBJECT_ROTATION 1
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#define NUM_TRACKING_CAMS 2
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#define NO_TRACKING 0
#define LOCAL_TRACKING 1
#define GLOBAL_TRACKING 2
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#define NO_ACTION 0
#define ZOOM_IN 1
#define ZOOM_OUT 2
#define LOCAL_RIGHT_ROT 3
#define LOCAL_LEFT_ROT 4
#define LOCAL_UP_ROT 5
#define LOCAL_DOWN_ROT 6
#define OBJECT_RIGHT_ROT 7
#define OBJECT_LEFT_ROT 8
#define OBJECT_UP_ROT 9
#define OBJECT_DOWN_ROT 10
#define OBJECT_XRT_YUP_ROT 11
#define OBJECT_XLT_YDN_ROT 12
#define OBJECT_XRT_YDN_ROT 13
#define OBJECT_XLT_YUP_ROT 14
#define NO_ROTATION 15
#define HOME 16
#define ACMI_PANNER 17
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#define HOME_RANGE -300.0F
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
class ACMICamera
{
public:
// Constructors.
ACMICamera();
// Destructor.
~ACMICamera();
// Access.
void SetType(int type);
int Type() const;
void SetAction(int action);
void SetAction(int action, float az, float el);
int Action() const;
void ToggleTracking();
void SetTracking(int n);
int Tracking() const;
void SetRotateType(int type);
int RotateType() const;
void SetPosition(const Tpoint &pos);
void GetPosition(Tpoint &pos) const;
const Tpoint &Position() const;
void SetRotation(const Trotation &rot);
void GetRotation(Trotation &rot) const;
const Trotation &Rotation() const;
void SetWorldPosition(const Tpoint &pos);
void SetElDir(float diff);
void SetAzDir(float diff);
void SetObjectEl(float diff);
void SetObjectAz(float diff);
void SetObjectRoll(float diff);
void SetPannerAz();
void IncrementPannerAzEl(int currentAction, float az, float el);
void SetLocalEl(float diff);
void SetLocalAz(float diff);
float El() const;
float Az() const;
void SetObjectRange(float diff, int instruction);
float GetObjectRange( void )
{
return _objectRange;
};
void SetSlewRate(float diff);
void TrackPoint(const Tpoint &trackingPt);
// Update methods.
void UpdatePosition();
void UpdateChasePosition( float dT );
void UpdatePannerPosition();
void Tilt
(
float pitch,
float roll,
float yaw,
Trotation *tilt
);
void Rotate
(
float pitch,
float roll,
float yaw,
Trotation *viewRotation
);
void Translate
(
float x,
float y,
float z,
Tpoint* camView
);
CRITICAL_SECTION criticalSection;
void SetChasePosition( Tpoint *pos )
{
_chasePos.x = pos->x;
_chasePos.y = pos->y;
_chasePos.z = pos->z;
};
void SetChaseRoll( float roll )
{
_chaseRoll = roll;
};
private:
// Detached or attached?
int _type;
// Detached or attached?
int _rotType;
// Camera position relative to object.
Tpoint _pos;
// World coords of camera position.
Tpoint _worldPos;
// Camera rotation matrix.
Trotation _rot;
float _objectAz, _localAz, _pannerAz;
float _objectEl, _localEl, _pannerEl;
float _objectRoll;
// For a dettached camera, set this value to 0.0F
float _objectRange;
// Used to rotate around self.
float _rotate;
// Used to rotate around object.
float _objectRotate;
float _azDir;
float _elDir;
float _slewRate;
int _action;
int _tracking;
Tpoint _chasePos;
Tpoint _chaseObjPos;
float _chaseRoll;
void DoAction();
};
#include "acmcminl.cpp"
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#endif // _ACMICAM_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -