#pragma once
|
|
|
#include "akLinker.h"
|
#include "akSTL.h"
|
#include "akDE.h"
|
#include <vector>
|
namespace akSTL
|
{
|
struct _Waypoint
|
{
|
double x;
|
double y;
|
double z;
|
double speed;
|
};
|
|
class akSTL_DLLSPEC CakTrajcetoryModel
|
{
|
public:
|
CakTrajcetoryModel(void);
|
~CakTrajcetoryModel(void);
|
|
public:
|
virtual int calculate(float dTime); //´õÀÌ»ó °è»êÇÒ °æ·ÎÁ¡ÀÌ ¾øÀ» °æ¿ì 2¸¦ ¹Ýȯ
|
void setCurrentByWaypoint(int nWaypointIndex); //ÇöÀç°ªÀ» °æ·ÎÁ¡ ±âÁØÀ¸·Î ¼ÂÆÃ
|
|
|
|
public:
|
//ÇöÀç °ª
|
khVector3d m_position; //À§Ä¡
|
khVector3d m_rotate; //ÀÚ¼¼
|
double m_velocity; //¼Óµµ
|
double m_acc; //°¡¼Óµµ
|
khVector3d m_rotateAcc; //°¢¼Óµµ
|
|
//ºÎ¿© ¹ÞÀº ¸í·É ¼³Á¤
|
khVector3d m_TaskPosition;
|
double m_TaskVelocity;
|
double m_TaskAcc;
|
|
//°´Ã¼ Á¤º¸ °ü¸®
|
double mass; //¹«°Ô
|
double maxSpeed; //ÃÖ´ë ¼Óµµ
|
double minSpeed; //ÃÖÀú ¼Óµµ
|
double maxAcceleration; //°¡¼Óµµ
|
double maxDeceleration; //°¨¼Óµµ
|
|
khVector3d m_rotateVelRate;
|
|
//°æ·ÎÁ¡ °ü¸®
|
public:
|
int m_nWaypointType; //0 ¸¶Áö¸· °æ·ÎÁ¡ÀÌ¸é ³¡³½´Ù, 1°æ·ÎÁ¡ ¼øÈ¸, 2°æ·ÎÁ¡ ¿Õº¹
|
int m_nWaypointSet; //ÇöÀç ¼³Á¤µÈ °æ·ÎÁ¡
|
std::vector<_Waypoint> m_vecWaypoint;
|
|
|
protected:
|
void getAngle3d(double x1, double y1, double z1, double x2, double y2, double z2, double* heading, double* pitch);
|
double getHeading(double x , double y);
|
protected:
|
CakDE m_movementmodel;
|
};
|
|
}
|