예제 #1
0
파일: main.c 프로젝트: btheobald/compa2
// 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;
}
예제 #2
0
파일: main.c 프로젝트: btheobald/compa2
// 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;
}
예제 #3
0
파일: main.c 프로젝트: btheobald/compa2
// Find Angle
double findAngle(bodyData body1, bodyData body2) {
  return atan(calc_d(body1, body2, 1) / calc_d(body1, body2, 0));
}
예제 #4
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;
  }
예제 #5
0
/** 
 * 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();
    }