无图言吊(动图)
缘由
最近我太太在考公学习,给我出了两道高中地理知识的题目,把我问的一头雾水,题目是这样的
第一题
第二题
看到这两道题,当时大脑飞速运转,差点整个身体都在自转了,所以产生了个偷懒的方法,用程序代替冥想,所以就有了这个小玩意的诞生.
Linux 的创始人 Linus Torvalds 在 2000-08-25 给linux-kernel 邮件列表的一封邮件提到的:
首先,我们创建一些基本的类来表示天体(如太阳、地球和月球)以及它们的运动。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class CelestialBody
{
public string Name { get; set; }
public int Radius { get; set; }
public Color Color { get; set; }
public double DistanceFromSun { get; set; }
public double OrbitalPeriod { get; set; }
public double RotationPeriod { get; set; }
public double CurrentAngle { get; set; }
public CelestialBody(string name, int radius, Color color, double distanceFromSun, double orbitalPeriod, double rotationPeriod)
{
Name = name;
Radius = radius;
Color = color;
DistanceFromSun = distanceFromSun;
OrbitalPeriod = orbitalPeriod;
RotationPeriod = rotationPeriod;
CurrentAngle = 0;
}
public void UpdatePosition(double timeStep)
{
double angularVelocity = 2 * Math.PI / OrbitalPeriod;
CurrentAngle += angularVelocity * timeStep;
CurrentAngle %= 2 * Math.PI;
}
public (double X, double Y) GetPosition()
{
double x = DistanceFromSun * Math.Cos(CurrentAngle);
double y = DistanceFromSun * Math.Sin(CurrentAngle);
return (x, y);
}
}
接下来,我们创建太阳、地球和月球的实例,并设置它们的属性。
1
2
3
4
sun = new CelestialBody("Sun", 50, Color.Yellow, 0, 0, 0);
earth = new CelestialBody("Earth", 10, Color.Blue, 150, 365.25, 1);
moon = new CelestialBody("Moon", 5, Color.Gray, 30, 27.32, 27.32);
并且初始化一个定时器,用于刷新三个球体的运行状态
1
2
3
4
5
6
7
8
9
private void Timer_Tick(object sender, EventArgs e)
{
earth.UpdatePosition(0.1);
moon.UpdatePosition(0.1);
this.Invalidate();
}
开始绘制太阳,地球和月亮
1
2
3
4
5
6
7
8
9
10
11
12
13
14
graphics = e.Graphics;
graphics.Clear(Color.Black);
DrawCelestialBody(sun, 400, 400);
var earthPosition = earth.GetPosition();
DrawCelestialBody(earth, 400 + (int)earthPosition.X, 400 + (int)earthPosition.Y);
var moonPosition = moon.GetPosition();
DrawCelestialBody(moon, 400 + (int)earthPosition.X + (int)moonPosition.X, 400 + (int)earthPosition.Y + (int)moonPosition.Y);
运行上述代码,你将看到地球和月球的位置变化。这个模拟是一个非常简化的模型,假设地球和月球的轨道是完美的圆形,并且忽略了其他天体的引力影响。
看上去有点丑,我们添加写素材,去掉已知的轨迹边框,并且找些素材美化他们
并且标识出赤道和经线,以及南北半球
1
2
3
4
5
6
7
graphics.DrawLine(Pens.Red, x - radius, y, x + radius, y);
graphics.DrawLine(Pens.Yellow, x, y - radius, x, y + radius);
graphics.FillEllipse(Brushes.White, x - 3, y - radius - 3, 6, 6);
graphics.FillEllipse(Brushes.Green, x - 3, y + radius - 3, 6, 6);
如上我们绘制一条红线标识赤道,黄线标识经线,白色圆点表示北极,绿色圆点表示南极,这样方便我们根据不同象限,在脑海里面构思具体经纬度
加上地球自转的特效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Matrix transform = new Matrix();
transform.RotateAt((float)(body.CurrentRotationAngle * 180 / Math.PI), new PointF(x, y));
graphics.Transform = transform;
if (body.Name == "Earth")
{
graphics.DrawImage(earthTexture, x - body.Radius, y - body.Radius, body.Radius * 2, body.Radius * 2);
}
else
{
graphics.FillEllipse(new SolidBrush(body.Color), x - body.Radius, y - body.Radius, body.Radius * 2, body.Radius * 2);
}
graphics.ResetTransform();
图片素材 https://polyhaven.com/textures
根本原因:地球自转轴的倾斜(约 23.5 度)。
直接原因:地球在公转过程中,太阳直射点在南北回归线之间移动。
结果:不同时间段,地球表面接收到的太阳辐射量不同,从而导致温度变化和四季交替。
由于地球自转轴的倾斜,地球在公转过程中,不同时间段的太阳直射点会发生变化,从而导致四季变化。具体过程如下:
(1)春分和秋分当地球公转到春分(约 3 月 21 日)和秋分(约 9 月 23 日)时,太阳直射点位于赤道。
此时,全球昼夜几乎等长。
北半球和南半球的季节相反(例如,北半球是春季,南半球是秋季)。
(2)夏至当地球公转到夏至(约 6 月 21 日)时,太阳直射点位于北回归线(北纬 23.5 度)。
此时,北半球白天最长,夜晚最短,进入夏季;南半球则相反,进入冬季。
(3)冬至当地球公转到冬至(约 12 月 22 日)时,太阳直射点位于南回归线(南纬 23.5 度)。
此时,北半球白天最短,夜晚最长,进入冬季;南半球则相反,进入夏季。
有了如图展示发现:
第一题,在四大卫星发射中心中,不仅仅文昌卫星发射中心位于低纬度,其他选项ABC都正确,D错误。
第二题,A,D两项都是错误的!:春分(3.21前后),秋分(9.23前后)太阳直射在赤道上,惊蛰(3.5)在春分之前,因此这一天太阳直射点仍在南半球,切太阳直射点在向北移动。BC两项:惊蛰(3.5)在春分前,此时太阳直射点仍在南半球,南半球昼长夜短,北半球昼短夜长,且北极圈内部分地区存在极夜现象,B错误,所以选C
最后,预祝各位考公学子,榜上有名!成功上岸!
感谢各位耐心查阅! 由于系统引用文件较多,压缩后源码文件仍然很大,如果有需要源码的朋友,可以微信公众号联系博主,源码可以免费赠予~!如果觉得本篇博文对您或者身边朋友有帮助的,麻烦点个关注!赠人玫瑰,手留余香,您的支持就是我写作最大的动力,感谢您的关注,期待和您一起探讨!再会!
相关知识
winform 绘制太阳,地球,月球 运作规律
新研究发现地球上的细菌或可提升月球土壤肥力
某同学在物理学习中纪录了一些与地球、月球有关的数据资料如下:地球半径R=00km
如果地球停止自转会发生什么?
Winform(C#) 国内开源美化控件主题库2:花木兰控件库
地球公转
《月球之谜(Moon Mystery)》
月亮如何影响我们的情绪?睡眠也会随着月亮周期变化
主题电影展播:月球之旅
用C WinForm打造浪漫惊喜:超级简单哄女朋友开心的小程序
网址: winform 绘制太阳,地球,月球 运作规律 https://m.huajiangbk.com/newsview1715771.html
上一篇: 科学网—[小资料,科普] 地球的 |
下一篇: 气候变化影响地球自转?科学家进行 |