Main Page   Class Hierarchy   Data Structures   File List   Data Fields   Globals  

/lib/libtvuvisu3D/tvu_humanbody.h

Go to the documentation of this file.
00001 
00011 #ifndef __TVU_HUMAN_BODY_H__
00012 #define __TVU_HUMAN_BODY_H__
00013 
00014 #ifndef __TVU_3DOBJECT_H__
00015 #include "tvu_3dobject.h"
00016 #endif 
00017 
00018 #ifndef __TVU_VISU3D_APPLICATION_H__
00019 #include "tvu_visu3d.application.h"
00020 #endif 
00021 
00022 //
00023 class CTScenario;
00024 /*========================================================*/
00026 #define CLASSNAME_HUMAN_BODYPART        "BodyPart"
00027 #define CLASSNAME_HUMAN_BODYPART_ID     10400
00028 #define CLASSNAME_HUMAN_BODY            "HumanBody"
00029 #define CLASSNAME_HUMAN_BODY_ID         10401
00030 
00031 #define ENAME_HUMAN_PART                        "human_part"
00032 #define ENAME_HUMAN_PERSON                      "human_person"
00033 #define ENAME_HUMAN_ARTICULATION        "human_articulation"
00034 #define ENAME_HUMAN_HEAD                        "human_head"
00035 #define ENAME_HUMAN_NECK                        "human_neck"
00036 #define ENAME_HUMAN_BODY                        "human_body"
00037 #define ENAME_HUMAN_SHOULDER            "human_shoulder"
00038 #define ENAME_HUMAN_ARM                         "human_arm"
00039 #define ENAME_HUMAN_ARM1                        "human_arm1"
00040 #define ENAME_HUMAN_ARM2                        "human_arm2"
00041 #define ENAME_HUMAN_HAND                        "human_hand"
00042 #define ENAME_HUMAN_LEFTARM                     "human_leftarm"
00043 #define ENAME_HUMAN_RIGHTARM            "human_rightarm"
00044 #define ENAME_HUMAN_LEG                         "human_leg"
00045 #define ENAME_HUMAN_THIGH                       "human_thigh"
00046 #define ENAME_HUMAN_LEG2                        "human_leg2"
00047 #define ENAME_HUMAN_FOOT                        "human_foot"
00048 #define ENAME_HUMAN_LEFTLEG                     "human_leftleg"
00049 #define ENAME_HUMAN_RIGHTLEG            "human_rightleg"
00050 
00051 #define ENAME_HUMAN_PART_STATICPRIMITIVE        "static_primitive"
00052 #define ENAME_HUMAN_PART_STATICPOINT            "static_point"
00053 /*--------------------------------------------------------*/
00054 class CTHumanAction;
00055 /*--------------------------------------------------------*/
00058 class CTBodyPart : public CT3DObject
00059 {
00060         public:
00062                 CTBodyPart();
00063                 virtual ~CTBodyPart() { Delete(); };
00064                 DEFINE_ID_FUNCTIONS(CTBodyPart, CT3DObject, CLASSNAME_HUMAN_BODYPART_ID, CLASSNAME_HUMAN_BODYPART)
00065         public:
00067                 virtual TBOOL IsMobileObject() { return TTRUE; };
00068         public:
00070                 virtual TBOOL OnPostLoad(LPTBYTE* lpBuffers);
00072                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00074                 virtual TBOOL ReferTo(CTReferableObject* lpObject);
00075         public:
00077                 virtual TBOOL SetAction(CTHumanAction* pAction);
00079                 virtual TBOOL Action(CTHumanAction* pAction, TINT tTime);
00081                 virtual TBOOL Actions(TINT tTime);
00083                 virtual TBOOL Init();
00084         public:
00086                 virtual void Delete();
00087         public:
00089                 virtual CTBodyPart& operator = (CTBodyPart& APart);  
00090         public:
00093                 CTString&       GetStaticPrimitive() { return m_StaticPrimitive; };
00094                 CTInt&          GetStaticPointIndex() { return m_StaticPointIndex; };
00095                 TBOOL           GetStaticPoint(LPTPOINT3D lpPoint);
00096                 CTBodyPart* GetStaticPoint(LPTPOINT3D lpPoint, TINT tTime);
00097         protected:
00100                 CTString        m_StaticPrimitive;
00101                 CTInt           m_StaticPointIndex;
00103                 CTList          m_Actions;
00106                 TINT     m_OldTime;
00107 };
00109 typedef CTBodyPart* LPCTBodyPart;
00110 /*--------------------------------------------------------*/
00112 class CTHumanBody : public CTBodyPart
00113 {
00114         public:
00116                 CTHumanBody();
00117                 ~CTHumanBody();
00118                 DEFINE_ID_FUNCTIONS(CTHumanBody, CTBodyPart, CLASSNAME_HUMAN_BODY_ID, CLASSNAME_HUMAN_BODY)
00119         public:
00121                 virtual TBOOL BuildObject();
00122         public:
00124                 typedef enum
00125                 {
00126                         POSTURE_UNKNOWN,
00127                         POSTURE_STANDING,
00128                         POSTURE_LYING,
00129                         POSTURE_WALKING,
00130                         POSTURE_SITTING,
00131 
00132                         POSTURE_RUNNING
00133                 } POSTURETYPE;
00135                 typedef enum
00136                 {
00137                         ACTION_ARMS_STRAIGHT,
00138 
00139                         ACTION_ARM_UP,
00140                         ACTION_LEFTHAND_UP,
00141                         ACTION_RIGHTHAND_UP,
00142                         ACTION_HAND_DOWN,
00143                         ACTION_LEFTHAND_DOWN,
00144                         ACTION_RIGHTHAND_DOWN,
00145                         ACTION_MOVE_FORWARD,
00146                         ACTION_MOVE_BACKWARD,
00147                         ACTION_TURNLEFT,
00148                         ACTION_TURNRIGHT,
00149                         ACTION_FALLED,
00150                         ACTION_SIT,
00151                         ACTION_JUMP
00152                 } ACTIONTYPE;
00153         public:
00155                 virtual CTList  GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00158                 virtual TBOOL OnDisplaying(THFILE lpDevice);
00160                 virtual BOUNDARY GetBoundary();
00161         public:
00165                 TANGLES GetArmAngles(TLPCSTR lpArm);
00166                 void    SetArmAngles(TLPCSTR lpArm, double Alpha = 0., double Beta = 0., double Gamma = 0.);
00167                 TANGLES GetArm2Angles(TLPCSTR lpArm);
00168                 void    SetArm2Angles(TLPCSTR lpArm, double Alpha = 0., double Beta = 0., double Gamma = 0.);
00170                 TANGLES GetLegAngles(TLPCSTR lpLeg);
00171                 void    SetLegAngles(TLPCSTR lpLeg, double Alpha = 0., double Beta = 0., double Gamma = 0.);
00172                 TANGLES GetLeg2Angles(TLPCSTR lpLeg);
00173                 void    SetLeg2Angles(TLPCSTR lpLeg, double Alpha = 0., double Beta = 0., double Gamma = 0.);
00175                 virtual void Reset();
00177                 virtual TBOOL Init();
00179                 virtual TBOOL Action(CTHumanAction* pAction, TINT tTime);
00181                 virtual TBOOL Execute(TDWORD t);
00184                 POSTURETYPE SetNewPosture(POSTURETYPE NewPosture);
00187                 ACTIONTYPE      SetNewAction(ACTIONTYPE NewAction);
00189                 POSTURETYPE GetCurrentPosture() { return m_CurrentPosture; };
00190                 POSTURETYPE GetOldPosture() { return m_OldPosture; };
00191                 ACTIONTYPE      GetCurrentAction() { return m_CurrentAction; };
00192                 ACTIONTYPE      GetOldAction() { return m_OldAction; };
00193                 CTPoint3D       GetOldPosition() { return m_OldPosition; };
00194                 CTAngles        GetOldAngles() { return m_OldAngles; };
00195                 CTScenario*     SetScenario(CTScenario* pScenario) { return m_pScenario = pScenario; };
00196         public:
00198                 virtual void Delete();
00199         public:
00201                 virtual CTHumanBody& operator = (CTHumanBody& AhumanBody);  
00202         protected:
00205                 POSTURETYPE m_CurrentPosture;
00206                 POSTURETYPE m_OldPosture;
00208                 ACTIONTYPE      m_CurrentAction;
00209                 ACTIONTYPE      m_OldAction;
00211                 CTPoint3D       m_OldPosition;
00212                 CTAngles        m_OldAngles;
00214                 CTInt           m_OldTime;
00215                 CTBodyPart*     m_OldStaticPart;
00216                 TPOINT3D        m_OldStaticPoint;
00217                 CTScenario*     m_pScenario;
00220 };
00221 /*========================================================*/
00222 #endif 

Generated at Wed Aug 6 15:58:58 2003 for TVU's libraries for video surveillance: by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001