无图眼吊(动图)
  
缘由

  最近我太太在考公学习,给我出了两道高中地理知识的题目,把我问的一头雾水,题目是这样的  

  第一题

  第二题

看到这两道题,当时大脑飞速运转,差点整个身体都在自转了,所以产生了个偷懒的方法,用程序代替冥想,所以就有了这个小玩意的诞生.

Linux 的创始人 Linus Torvalds 在 2000-08-25 给linux-kernel 邮件列表的一封邮件提到的:

 

 能说算不上什么,有本事就把你的代码给我看看。

  

1. 创建基本类

首先,我们创建一些基本的类来表示天体(如太阳、地球和月球)以及它们的运动。

 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; // 确保角度在0到2π之间
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);
}
}

  

2. 创建太阳、地球和月球

接下来,我们创建太阳、地球和月球的实例,并设置它们的属性。

  // 初始化天体
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); // 月球

 并且初始化一个定时器,用于刷新三个球体的运行状态

  private void Timer_Tick(object sender, EventArgs e)
{
// 更新天体的位置
earth.UpdatePosition(0.1); // 时间步长为0.1天
moon.UpdatePosition(0.1); // 重绘窗体
this.Invalidate();
}  

 开始绘制太阳,地球和月亮

  // 获取绘图对象
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);

3. 运行模拟

运行上述代码,你将看到地球和月球在100天内的位置变化。这个模拟是一个非常简化的模型,假设地球和月球的轨道是完美的圆形,并且忽略了其他天体的引力影响。

看上去有点丑,我们添加写素材,去掉已知的轨迹边框,并且找些素材美化他们

并且标识出赤道和经线,以及南北半球

  // 绘制南北半球标识
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); // 南极

 如上我们绘制一条红线标识赤道,黄线标识经线,白色圆点表示北极,绿色圆点表示南极,这样方便我们根据不同象限,在脑海里面构思具体经纬度

4. 最终效果

图片素材 https://polyhaven.com/textures

4. 解题思路

四季变化的总结

  • 根本原因:地球自转轴的倾斜(约 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  

5. 结束语

最后,预祝各位考公学子,榜上有名!成功上岸!

感谢各位耐心查阅!  由于系统引用文件较多,压缩后源码文件仍然很大,如果有需要源码的朋友,可以微信公众号联系博主,源码可以免费赠予~!如果觉得本篇博文对您或者身边朋友有帮助的,麻烦点个关注!赠人玫瑰,手留余香,您的支持就是我写作最大的动力,感谢您的关注,期待和您一起探讨!再会!

winform 实现太阳,地球,月球 运作规律https://www.cnblogs.com/axing/p/18762710的更多相关文章

  1. https://www.cnblogs.com/soundcode/p/4174410.html

    https://www.cnblogs.com/soundcode/p/4174410.html 1.首先要在服务器端新建一个网站axpx页 然后再网站的后台写代码获取winform传过来的文件名. ...

  2. 转发自:一像素 十大经典排序算法(动图演示)原链接:https://www.cnblogs.com/onepixel/articles/7674659.html 个人收藏所用 侵删

    原链接:https://www.cnblogs.com/onepixel/articles/7674659.html     个人收藏所用   侵删 0.算法概述 0.1 算法分类 十种常见排序算法可 ...

  3. @无痕客 https://www.cnblogs.com/wuhenke/archive/2012/12/24/2830530.html 通篇引用

    无痕客 https://www.cnblogs.com/wuhenke/archive/2012/12/24/2830530.html 关于Async与Await的FAQ 关于Async与Await的 ...

  4. 访问路径:https://i.cnblogs.com/posts?categoryid=925678

    https://i.cnblogs.com/posts?categoryid=925678

  5. URL https://i.cnblogs.com/EditPosts.aspx?opt=1

    URL url = new URL("https://i.cnblogs.com");URL url1 = new URL(url, "EditPosts.aspx?op ...

  6. 随笔二-https://www.cnblogs.com/shang1680/p/9657994.html

    作业要求来自https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 GitHub远程仓库的地址:https://github.com/ ...

  7. 211806189杨昊辰 https://www.cnblogs.com/honey1433223/

    211806189杨昊辰 https://www.cnblogs.com/honey1433223/

  8. https://www.cnblogs.com/h2zZhou/p/5440271.html

    https://www.cnblogs.com/h2zZhou/p/5440271.html

  9. https://www.cnblogs.com/yudanqu/p/9467803.html

    https://www.cnblogs.com/yudanqu/p/9467803.html

  10. 211806385 黄存慧 https://www.cnblogs.com/huangch/ https://github.com/HuangCh327

    211806385 黄存慧 https://www.cnblogs.com/huangch/ https://github.com/HuangCh327

随机推荐

  1. ESP8266 wifi模块+CH340烧录板安装使用运行教程

    硬件准备 ESP8266-01S 模块 USB转TTL烧录板(CH340) LED灯(建议使用3.3V LED) 220Ω电阻(LED限流) 面包板和跳线若干 我的是这样的不用接线,其他的参考 ESP ...

  2. Java API 之 Object

    Object 顶级父类.任何一个类都将 Object 作为父类,也就意味着任何一个对象都可以赋值给 Object 对象.Object 类也是 Java 中唯一的一个没有父类的类. (方法默认是 pub ...

  3. 如何快速的开发一个完整的iOS直播app(采集篇)

    作者:袁峥链接:https://www.jianshu.com/p/c71bfda055fa来源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 开发一款直播app,首先需要 ...

  4. Docker与联合文件系统

    1. 联合文件系统 概念 UnionFS(联合文件系统)是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次次的提交来一层一层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(u ...

  5. 阿里云开启ssl证书过程记录 NGINX

    作者简介:大家好,我是思无邪,2024 毕业生,某厂 Go 开发工程师.. 我的网站:https://www.yishanicode.top/ ,持续更新,希望对你有帮助. 如果文章或网站知识点有错误 ...

  6. 关于galaxy戒色的通知

    明天开始--一小段时间内辅以半退网 如果想打胶 就做100个卷腹 睡不着就吃褪黑素 恁还是多写写诗吧,恁现在这个精虫上脑的脑子连意识流都扛不住 恁还想写<阑山><莲天>< ...

  7. Q:Linux符号连接的层数过多

    创建符号链接的时候源文件一定要使用绝对路径,尤其是链接不在同一目录时候,用相对路径会出现这种bug,具体是红色闪烁状态.:正常应该是青绿色  例如: 安装zabbix_agent遇到的问题,在root ...

  8. 概率学习(Genshin中)

    目前待补充:停时定理的部分例题. 定义 首先定义样本空间 \(\Omega\),是所有样本点(结果)的集合. 随机事件 \(A\) 是样本空间的子集. 定义事件和为事件并,积为事件交. 事件域 \(\ ...

  9. 《Vue2 框架入门第一课:基础概念与环境搭建》

    前端宇宙的新钥匙 --Vue2 在前端开发的广袤宇宙中,Vue2 框架宛如一把闪耀的钥匙,为开发者们开启了一扇通往高效.灵活构建用户界面的大门.随着互联网技术的飞速发展,前端开发的复杂性与日俱增,对开 ...

  10. keil优化等级说明 keil code optimization

    其中 0级(Constan folding)的优化包括: a.常数折叠:只要有可能,编译器就执行将表达式化为常数数字的计算,其中包括运行地址的计算. b. 简单访问优化:对8051系统的内部数据和位地 ...