Home Information Classes Download Usage Mail List Requirements Links FAQ Tutorial
00001 #ifndef STK_SPHERE_H 00002 #define STK_SPHERE_H 00003 00004 #include "Stk.h" 00005 #include "Vector3D.h" 00006 00007 namespace stk { 00008 00009 /***************************************************/ 00018 /***************************************************/ 00019 00020 class Sphere : public Stk 00021 { 00022 public: 00024 Sphere( StkFloat radius = 1.0 ) { radius_ = radius; mass_ = 1.0; }; 00025 00027 void setPosition( StkFloat x, StkFloat y, StkFloat z ) { position_.setXYZ(x, y, z); }; 00028 00030 void setVelocity( StkFloat x, StkFloat y, StkFloat z ) { velocity_.setXYZ(x, y, z); }; 00031 00033 void setRadius( StkFloat radius ) { radius_ = radius; }; 00034 00036 void setMass( StkFloat mass ) { mass_ = mass; }; 00037 00039 Vector3D* getPosition( void ) { return &position_; }; 00040 00042 Vector3D* getRelativePosition( Vector3D *position ); 00043 00045 StkFloat getVelocity( Vector3D* velocity ); 00046 00048 StkFloat isInside( Vector3D *position ); 00049 00051 StkFloat getRadius( void ) { return radius_; }; 00052 00054 StkFloat getMass( void ) { return mass_; }; 00055 00057 void addVelocity( StkFloat x, StkFloat y, StkFloat z ); 00058 00060 void tick( StkFloat timeIncrement ); 00061 00062 private: 00063 Vector3D position_; 00064 Vector3D velocity_; 00065 Vector3D workingVector_; 00066 StkFloat radius_; 00067 StkFloat mass_; 00068 }; 00069 00070 inline void Sphere::tick( StkFloat timeIncrement ) 00071 { 00072 position_.setX(position_.getX() + (timeIncrement * velocity_.getX())); 00073 position_.setY(position_.getY() + (timeIncrement * velocity_.getY())); 00074 position_.setZ(position_.getZ() + (timeIncrement * velocity_.getZ())); 00075 }; 00076 00077 } // stk namespace 00078 00079 #endif
The Synthesis ToolKit in C++ (STK) |
©1995-2010 Perry R. Cook and Gary P. Scavone. All Rights Reserved. |