// Traditional Gravitational Law double grav_t(bodyData body1, bodyData body2) { double result, dist; // Get Distance dist = calc_d(body1, body2, 2); // Get Force result = (GRAVCONST*body1.bodyMass*body2.bodyMass)/pow(dist,2); return result; }
// Vector Gravitational Law - dir 0 = x, 1 = y double grav_v(bodyData body1, bodyData body2, int dir) { double result, dist; // Get Distance dist = calc_d(body1, body2, 2); // Get Force result = (GRAVCONST*body1.bodyMass*body2.bodyMass)/pow(dist,3); switch(dir) { case 0 : // x; result *= calc_d(body1, body2, 0); break; case 1 : // y; result *= calc_d(body1, body2, 1); break; } return result; }
// Find Angle double findAngle(bodyData body1, bodyData body2) { return atan(calc_d(body1, body2, 1) / calc_d(body1, body2, 0)); }
/** * Add distance measure * * @param rhs BBDist to add * * @return Updated distance */ BBDist& operator+=(const BBDist &rhs) { set_max(0, rhs); set_max(1, rhs); calc_d(); return *this; }
/** * Constructor * * @param _dim Dimension index * @param _val Value of distance */ BBDist(const size_t _dim, const int _val) { set_vals(-1); val[_dim%2] = _val; calc_d(); }