#include #include using namespace std;

class Location { private: double x, y, z; public: Location(double x_, double y_, double z_) :x(x_), y(y_), z(z_) {}

friend double calcDistance(const Location& loc1, const Location& loc2);

};

double calcDistance(const Location& loc1, const Location& loc2) { double dx = loc1.x - loc2.x; double dy = loc1.y - loc2.y; double dz = loc1.z - loc2.z; return sqrt(dx * dx + dy * dy + dz * dz); }

class Planet { private: Location loc; double mass; static const double G; public: Planet(double x_, double y_, double z_, double mass_) :loc(x_, y_, z_), mass(mass_) {}

friend double calcForce(const Planet& p1, const Planet& p2);

};

const double Planet::G = 6.67e-11;

double calcForce(const Planet& p1, const Planet& p2) { double r = calcDistance(p1.loc, p2.loc); return Planet::G * p1.mass * p2.mass / (r * r); }

int main() { Planet earth(0.0, 0.0, 0.0, 5.97e24); Planet moon(384400000.0, 0.0, 0.0, 7.35e22);

double force = calcForce(earth, moon);
cout << "The gravitational force between earth and moon is " << force << " N." << endl;

return 0;

}

C++ 计算两个星体之间的万有引力

原文地址: https://www.cveoy.top/t/topic/oj9t 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录