00001 /*************************************************************************** 00002 *cr 00003 *cr (C) Copyright 1995-2019 The Board of Trustees of the 00004 *cr University of Illinois 00005 *cr All Rights Reserved 00006 *cr 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * RCS INFORMATION: 00011 * 00012 * $RCSfile: CmdTrans.h,v $ 00013 * $Author: johns $ $Locker: $ $State: Exp $ 00014 * $Revision: 1.33 $ $Date: 2019年01月17日 21:20:58 $ 00015 * 00016 *************************************************************************** 00017 * DESCRIPTION: 00018 * 00019 * Command objects for transforming the current scene. 00020 * 00021 ***************************************************************************/ 00022 #ifndef CMDTRANS_H 00023 #define CMDTRANS_H 00024 00025 #include "Command.h" 00026 #include "Matrix4.h" 00027 00029 class CmdRotMat : public Command { 00030 public: 00032 enum { BY, TO }; 00033 Matrix4 rotMat; 00034 int byOrTo; 00035 00036 protected: 00037 virtual void create_text(void); 00038 00039 public: 00040 CmdRotMat(const Matrix4& newrot, int by_or_to); 00041 }; 00042 00043 00045 class CmdRotate : public Command { 00046 public: 00047 enum { BY, TO }; 00048 char axis; 00049 float deg; 00050 int byOrTo; 00051 int steps; 00052 00053 protected: 00054 virtual void create_text(void); 00055 00056 public: 00058 CmdRotate(float a, char ax, int by_or_to); 00059 00063 CmdRotate(float a, char ax, int by_or_to, float inc); 00064 }; 00065 00066 00068 class CmdTranslate : public Command { 00069 public: 00070 enum { BY, TO }; 00071 float x, y, z; 00072 int byOrTo; 00073 00074 protected: 00075 virtual void create_text(void); 00076 00077 public: 00078 CmdTranslate(float nx, float ny, float nz, int by_or_to); 00079 }; 00080 00081 00083 class CmdScale : public Command { 00084 public: 00085 enum { BY, TO }; 00086 float s; 00087 int byOrTo; 00088 00089 protected: 00090 virtual void create_text(void); 00091 00092 public: 00093 CmdScale(float ns, int by_or_to); 00094 }; 00095 00096 00098 class CmdRockOn : public Command { 00099 public: 00100 char axis; 00101 float deg; 00102 int steps; 00103 00104 protected: 00105 virtual void create_text(void); 00106 00107 public: 00108 CmdRockOn(float a, char ax, int nsteps); 00109 }; 00110 00111 00113 class CmdRockOff : public Command { 00114 protected: 00115 virtual void create_text(void); 00116 00117 public: 00118 CmdRockOff() ; 00119 }; 00120 00121 #endif 00122