// Acceleration class // ----------- #ifndef ACCELERATION #define ACCELERATION const Acceleration class Mass; // Interacting class Force; // classes class Velocity; class Time; // This class supports 3-dimensional force quantities #include /* (for sqrt) */ class Acceleration { double value[3]; public: // Constructors and accessors // -------------------------- Acceleration(DOUBLE x=0, DOUBLE y=0, DOUBLE z=0) {value[0]=x; value[1]=y; value[2]=z;} // The compiler will provide an acceptable copy constructor, // destructor, and assignment operator. double magnitude() const {return sqrt(value[0]*value[0] + value[1]*value[1] + value[2]*value[2]);} double x() const {return value[0];} double y() const {return value[1];} double z() const {return value[2];} // // Operations on Acceleration quantities // ------------------------------------- Acceleration operator-() const {return Acceleration(-value[0], -value[1], -value[2]);} bool operator==(ACCELERATION rs) const {return value[0] == rs.value[0] && value[1] == rs.value[1] && value[2] == rs.value[2]; } bool operator <(ACCELERATION rs) const {return magnitude() < rs.magnitude();} // Operations on mixed quantities Force operator*(const Mass rs) const; Velocity operator*(const Time rs) const; }; // ***** End of class definition inline ostream& operator<<(ostream& ls, ACCELERATION rs) // Output stream insertion {return ls << '(' << rs.x() << ',' << rs.y() << ',' << rs.z() << ") cm/secē";} #undef Class #endif