// Force class // ----------- #ifndef FORCE #define FORCE const Force class Mass; // Interacting class Acceleration; // classes // This class supports 3-dimensional force quantities #include /* (for sqrt) */ class Force { double value[3]; // Dynes in 3-dimensions public: // Constructors and accessors // -------------------------- Force(DOUBLE x=0, DOUBLE y=0, DOUBLE z=0) // Parameters in dynes {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];} double dynes() const {return magnitude();} double newtons() const {return magnitude() / 10000;} double pounds() const {return magnitude() / 2248.2014;} // Operations on Force operands #define Class Force #include "Additive.hpp" bool operator==(FORCE rs) const; bool operator< (FORCE rs) const; // Arithmetic operations on mixed operands (Newton's law) // --------------------------------------- Acceleration operator/(const Mass rs) const; Mass operator/(const Acceleration rs) const; }; // ***** End of class definition ostream& operator<<(ostream& ls, FORCE rs); // Output stream insertion #undef Class #endif