欲穷千里目,更上一层楼
1)根据你的身高,确定能够看到多远的地平线?
2)如果要看到千里,需要站在多高的地方?
注:地球半径6371公里
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
const double r = 6371000.0, D =500000.0;
double d, h, H;
cout << "please input your height: " << endl;
cin >> h;
d = sqrt((r + h) * (r + h) - r * r);
H = sqrt(r * r + D * D) - r - h;
cout << "you can see " << d <<" meters"<< endl;
cout << "standing at "<< H <<" meters high can you see one thousand Li."<<endl;
return 0;
}
模型建立:
1) 将地球理想化模拟成一个标准球体,半径r,无建筑物干扰,不受天气、能见度等因素影响,
不考虑因光在不同空气中的密度发生的折射和反射。
2) 将人抽象为一个线段,身高h,站的高度为H,双眼与脚底分别位于线段两侧,假设人有极好视力。
3) 简化“千里”,定义为直线距离,而不是围绕地表的弧长,视距d。
4) 示意图如下: