太阳系行星轨道及运行
太阳系八大行星运行轨道

太阳系八大行星运行轨道
太阳系是指以太阳为中心的行星系统,包括八大行星:水星、金星、地球、火星、木星、土星、天王星和海王星。
这些行星运行的轨道形状各不相同,速度也不同。
水星是太阳系中最小的行星,它的轨道是最靠近太阳的一个。
它的轨道形状接近一个椭圆形,离心率较大,所以离太阳的距离也会有较大的变化。
水星绕太阳公转的周期为88天。
金星的轨道也是椭圆形,但比水星的轨道更接近圆形。
金星的公转周期为225天,比地球的公转周期慢了一些。
由于金星的轨道比地球的轨道靠近太阳,所以它被称为“晨星”。
地球的轨道是基本上是一个圆形,公转周期为365天。
地球的轨道上还有一个卫星——月球。
火星的轨道形状接近一个椭圆形,公转周期为687天。
它的轨道比地球的轨道更靠近太阳,因此它的日照时间比地球短。
木星是太阳系中最大的行星,它的轨道也是比较椭圆形的。
木星的公转周期为11.86年,是太阳系中公转周期最长的行星。
土星的轨道同样也是椭圆形,公转周期为29.46年。
土星拥有一个漂亮的环系,由数个环构成。
天王星的轨道较为特殊,轨道平面与其他行星的轨道有较大的夹角。
天王星公转周期为84年,是太阳系中除冥王星外公转周期最长的行星。
海王星是太阳系中离太阳最远的行星,它的轨道也是椭圆形,公
转周期为164.8年。
海王星是太阳系中最冷的行星之一,因为它的距离太阳很远,所以得不到足够的热量。
这些行星的轨道形状和运动速度对于我们了解太阳系的结构和演化过程非常重要。
太阳系八大行星运行轨道

太阳系八大行星运行轨道太阳系是我们所生活的宇宙中最为熟悉的一部分,由太阳和其周围的多个天体组成。
其中最为著名的就是八大行星,它们分别是水星、金星、地球、火星、木星、土星、天王星和海王星。
这些行星围绕太阳运行,并且每个行星都有自己独特的轨道特征。
水星的运行轨道水星是离太阳最为接近的行星,它的轨道距离太阳约为 5790 万公里。
水星的轨道是椭圆形的,离心率较大,约为 0.21。
这意味着水星的轨道不太圆,而是更加拉长,离心距离较大。
金星的运行轨道金星是太阳系中离太阳第二近的行星,它的轨道距离太阳约为 1.08 亿公里。
金星的轨道同样也是椭圆形的,离心率约为 0.01,比水星的轨道更接近于圆形。
金星的轨道相对较靠近太阳,因此它所需的时间来完成一次绕太阳的运动比地球快。
地球的运行轨道地球是我们所生活的行星,它的轨道距离太阳约为 1.5 亿公里。
地球的轨道也是椭圆形的,离心率约为 0.017。
地球的轨道接近于圆形,因此地球离太阳的距离相对稳定。
地球绕太阳运行一周所需的时间称为一年。
火星的运行轨道火星是太阳系中的第四颗行星,它的轨道距离太阳约为 2.28 亿公里。
火星的轨道同样也是椭圆形的,离心率约为 0.093。
火星的轨道比地球的轨道更为椭圆,因此火星距离太阳的距离会有一定的变化。
木星的运行轨道木星是太阳系中的巨大行星,它的轨道距离太阳约为 7.78 亿公里。
木星的轨道同样也是椭圆形的,离心率约为 0.048。
与前面的行星相比,木星的轨道更为扁平。
土星的运行轨道土星是另一颗巨大的行星,它的轨道距离太阳约为 14.3 亿公里。
土星的轨道仍然是椭圆形的,离心率约为 0.056。
土星的轨道比木星的轨道更加扁平,并且距离太阳更远。
天王星的运行轨道天王星是太阳系中离太阳较远的行星之一,它的轨道距离太阳约为 28.6 亿公里。
天王星的轨道同样也是椭圆形的,离心率约为 0.046。
天王星的轨道倾斜度较大,与其他行星的轨道相比更为特殊。
太阳系行星的运动轨道及其规律

太阳系行星的运动轨道及其规律太阳系是我们所居住的宇宙家园,由太阳和围绕着它运行的各种行星、卫星、小行星等组成。
这些行星的运动轨道及其规律对我们了解宇宙的演化历程、天文学的发展以及地球的运动等方面具有重要的意义。
本文将详细介绍太阳系内行星的运动轨道及其规律。
太阳系内的行星包括水金地火木土等八颗行星,它们按离太阳的距离从近到远分别是:水星、金星、地球、火星、木星、土星、天王星和海王星。
这些行星的轨道呈现出各自特定的运动方式,但都遵循了天体力学的基本规律。
首先,我们来探讨行星的运动轨道。
行星围绕太阳运动的轨道可以近似看作是椭圆形状。
椭圆轨道的一个焦点在太阳上,行星运动时沿着椭圆轨道绕太阳旋转。
椭圆轨道的形状由行星与太阳之间的引力相互作用而确定,行星离太阳越近,椭圆轨道越接近于圆形。
其次,行星的轨道有两个重要的参数,即离心率和轨道倾角。
离心率是椭圆轨道的一个重要特征,它反映了行星轨道的椭圆程度。
离心率为0时,轨道变成一个圆形,而在离心率为1时,轨道则变成一个抛物线,这意味着行星将逃离太阳引力的束缚。
离心率介于0和1之间时,行星轨道是椭圆形的,行星会有周期性地靠近太阳和远离太阳。
轨道倾角则指的是行星轨道与太阳赤道面的夹角。
轨道倾角的大小取决于行星的运动方向和速度。
当行星沿着太阳的赤道面运动时,轨道倾角为0。
如果行星的轨道倾角远离太阳的赤道面,它将在天球上表现出较大的北偏或南偏。
除了轨道形状和倾角外,行星的运动速度也是一个重要的特征。
根据开普勒第二定律,行星在轨道不同位置上的运动速度是不同的。
当行星距离太阳最近时,它的运动速度最快;当行星距离太阳最远时,运动速度最慢。
这是由于太阳对行星的引力作用随着距离的不同而变化。
关于行星的规律,开普勒提出了三个著名的定律,被称为开普勒定律。
第一定律,也即开普勒椭圆定律,指出行星沿椭圆轨道绕太阳旋转,太阳位于椭圆的一个焦点上。
第二定律,也即开普勒面积定律,指出行星在相同时间内在轨道上扫过的面积是相等的。
太阳系在宇宙中的运行轨迹

太阳系在宇宙中的运行轨迹
太阳系是一个由八大行星、数十颗卫星以及彗星、小行星等组成的天体系统。
在宇宙中,太阳系也在不断地运行。
太阳系的运行轨迹可以分为两个层次:一个是绕着银河系中心的运动,另一个是各行星在太阳周围的运动。
太阳系绕银河系中心的运动是以一个椭圆形轨道为基础的。
这个轨道的中心是银河系中心的恒星系,太阳系沿着这个轨道以每秒220千米的速度运行。
据科学家们的估计,一次绕银河系中心的运动需要大约22.5亿年。
太阳系内部的运动也非常有规律。
太阳是太阳系的中心,各行星则绕着太阳做椭圆形的轨道运动。
这些行星的速度和距离都是有规律的,例如,离太阳最近的水星距离太阳只有5800万公里,一年的公转周期只有88天;而离太阳最远的海王星距离太阳约为45亿公里,一次公转需要花费248个地球年。
此外,太阳系内部还存在着一些特殊的天体,如彗星、小行星等。
这些天体的轨道与行星的轨道有所不同,它们的运行也是在太阳的引力作用下进行的。
总的来说,太阳系在宇宙中的运行轨迹非常精密、有规律。
科学家们通过对它的研究,不仅可以了解太阳系的历史和演化过程,也可以更深入地理解宇宙的运行规律。
- 1 -。
太阳系中行星运动的规律(“轨道”相关文档)共5张

太阳与任何一个行星的连线在相等的时间内扫过的面积相等
的立方与其公转周期的平方方
成正比
八大行星轨道数据表
一切的行星围绕太阳运动的轨道都是椭圆,太阳位于椭圆的一个焦点上
一切的行星围绕太阳运动的轨道都是椭圆,太阳位于椭圆的一个焦点上
一切的行星围绕太阳运动的轨道都是椭圆,太阳位于椭圆的一个焦点上
太阳与任何一个行星的连线在相等的时间内扫过的面积相等
太阳与任何一个行星的连线 太阳与任何一个行星的连线在相等的时间内扫过的面积相等
开普勒
三定律:
轨道定律:
面积定律:
周期定律:
轨 道 定 律
一切的行星围绕太阳运动的轨道都 是椭圆,太阳位于椭圆的一个焦点 上
面
积
A
一切的行星围绕太阳运动的轨道都是椭圆,太阳位于椭圆的一个焦点上
C
定 太阳与任何一个行星的连线在相等的时间内扫过的面积相等
一切的行星围绕太阳运动的轨道都是椭圆,太阳位于椭圆的一个焦点上
Байду номын сангаас太阳与任何一个行星的连线在相等的时间内扫过的面积相等 太阳与任何一个行星的连线在相等的时间内扫过的面积相等
太阳与任何一个行星的连线在相等的时间内扫过的面积相等
在相等的时间内扫过的面积
相等
周 期 一切的行星围绕太阳运动的轨道都是椭圆,太阳位于椭圆的一个焦点上 定 太阳与任何一个行星的连线在相等的时间内扫过的面积相等
太阳与任何一个行星的连线在相等的时间内扫过的面积相等 一切的行星围绕太阳运动的轨道都是椭圆,太阳位于椭圆的一个焦点上
律 太一阳切与 的任行何星一围个绕行太星阳的运连动线的在轨相道等都的是时椭间圆内,扫太过阳的位面于积椭相圆等的一个焦点上
太阳系八大行星运行轨道

太阳系八大行星运行轨道太阳系一共有八大行星分别是:水星、金星、地球、火星、木星、土星、天王星和海王星。
这些行星都绕着太阳旋转,它们的运动路径被称为行星轨道。
首先,让我们从太阳开始,它是太阳系中的中心,质量占据了太阳系中所有物质的99.86%. 太阳的引力使得八大行星分别围绕着它旋转,就像地球绕着太阳旋转一样。
行星的径向运动路径并不是完全圆形,而是椭圆形。
行星的轨道有时候会变得更加椭圆形,有时候会变得更加接近圆形。
这种轨道变化被称为行星运动的离心率。
行星轨道也有倾角,这意味着它的运动平面可以与太阳系的平面呈角度。
例如,海王星的轨道倾角相对于太阳系平面是几乎90度的。
让我们来看看这八大行星的运动路径:1. 水星:水星是太阳系中最接近太阳的行星,它的轨道更加椭圆形且更加倾斜。
它的平均距离太阳是0.39天文单位,它的一年等于88地球日。
2. 金星:金星是太阳系中最亮的行星,但它也是最慢的行星之一。
它距离太阳的平均距离是0.72天文单位,一年等于225地球日。
3. 地球:地球是人类居住的星球,它的轨道在太阳系中相对“温和”,即轨道离心率较小。
地球距离太阳平均距离为1天文单位,一年等于365.25地球日。
4. 火星:火星是太阳系中最接近地球的行星,并且是地球之后最容易探测的行星。
它的轨道比地球的轨道椭圆形,距离太阳平均距离为1.5天文单位,一年等于687地球日。
5. 木星:木星是太阳系中最大的行星,它的质量是其他行星的数倍。
它距离太阳的平均距离是5.2天文单位,一年等于11.9地球年。
6. 土星:土星是太阳系中最美丽的行星之一,它被迷人的光环所包围。
它距离太阳的平均距离是9.5天文单位,一年等于29.5地球年。
7. 天王星:天王星是太阳系中最冷的行星之一,它的轨道与太阳系的平面呈角度接近90度,这意味着它的极点可能比赤道更暖和。
它距离太阳的平均距离是19.2天文单位,一年等于84地球年。
8. 海王星:海王星是太阳系中最遥远的行星之一,它被认为是一颗冰巨星。
太阳系行星的轨道运行规律

太阳系行星的轨道运行规律太阳系是我们所在的宇宙家园,它由太阳和围绕太阳运行的八大行星组成。
每个行星都有自己独特的轨道运行规律,这些规律是由引力定律和牛顿运动定律所决定的。
在本文中,我们将探讨太阳系行星的轨道运行规律,带你一窥宇宙的奥秘。
首先,我们来看太阳系行星的基本特征。
太阳系中的行星可以分为内行星和外行星两类。
内行星包括水金火木土五大行星,它们离太阳较近,轨道较为接近圆形。
而外行星则包括天王星和海王星,它们离太阳较远,轨道更为椭圆。
接下来,我们来详细了解行星的轨道运行规律。
根据开普勒定律,行星围绕太阳运行的轨道是椭圆形的,太阳位于椭圆的一个焦点上。
行星在轨道上的运行速度是不均匀的,根据开普勒第二定律,行星在离太阳较远的地方速度较慢,在离太阳较近的地方速度较快。
这就是为什么行星在离太阳较远的地方停留的时间较长,而在离太阳较近的地方运行速度更快的原因。
除了椭圆轨道和不均匀速度,行星的轨道还受到其他行星的引力影响。
根据牛顿万有引力定律,行星之间存在引力相互作用。
这种引力相互作用会导致行星轨道发生微小的变化,这就是所谓的行星摄动。
行星摄动是一个复杂的问题,需要借助数学模型进行计算和分析。
此外,行星的轨道还受到太阳的引力影响。
根据牛顿运动定律,行星受到太阳的引力作用,会导致行星的轨道发生微小的变化。
这种变化被称为行星的进动。
行星的进动是一个长期的过程,需要几十年甚至几个世纪的时间才能观察到明显的变化。
总结起来,太阳系行星的轨道运行规律可以归纳为以下几点:行星围绕太阳运行的轨道是椭圆形的,行星在轨道上的运行速度是不均匀的,行星的轨道受到其他行星和太阳的引力影响,会发生微小的变化。
通过对太阳系行星的轨道运行规律的研究,我们可以更好地理解宇宙的运行机制。
这些规律不仅揭示了行星运动的奥秘,也为我们探索宇宙提供了重要的参考。
相信随着科学技术的不断进步,我们将能够更深入地了解太阳系行星的轨道运行规律,揭示更多宇宙的奥秘。
太阳系八大行星运行轨道

太阳系八大行星运行轨道太阳系是我们所在的宇宙家园,由包括太阳和它周围的八大行星所组成。
这些行星围绕太阳运行,每个行星都有自己独特的运行轨道和特征。
本文将深入探讨太阳系八大行星的运行轨道,帮助我们更好地理解太阳系的奥秘。
1. 水星 (Mercury):水星是太阳系中离太阳最近的行星,也是最小的行星之一。
它的运行轨道呈椭圆形,离心率非常大,因此它的轨道非常不规则。
水星的轨道周期为88天,这意味着它绕太阳一周需要88地球日。
由于接近太阳,水星的表面温度极高,超过了400摄氏度。
这使得水星成为一个炙热的行星,表面无法承载生命。
2. 金星 (Venus):金星是太阳系中最亮的行星,它的运行轨道也是一个椭圆。
金星的轨道周期为225地球日,比地球要长。
这意味着金星绕太阳一周所需的时间比地球长。
与水星类似,金星也非常接近太阳,因此它的气候极其恶劣。
金星的大气层中含有浓重的二氧化碳,导致温室效应的存在,使得金星的表面温度非常高,几乎达到了470摄氏度。
金星拥有浓厚的云层,这也是它在夜空中如此明亮的原因之一。
3. 地球 (Earth):地球是我们人类的家园,也是太阳系中唯一有生命存在的行星。
地球的运行轨道也是一个椭圆,但相对于水星和金星来说,地球的轨道更加规则。
地球绕着太阳运行一周的时间被定义为365.25地球日,或称为一年。
地球的轨道倾角相对较小,使得地球的季节变化相对稳定。
地球的表面温度适宜生命存在,拥有大量的液态水和适宜的气候条件。
4. 火星 (Mars):火星是太阳系中最接近地球的行星,与地球类似,它的轨道也是一个椭圆。
火星的轨道周期大约为687地球日。
尽管火星离地球较近,但它的表面温度相对较低,平均只有零下80摄氏度。
火星的红色外貌使它成为天空中一个明显的标志。
火星上有冰帽和水冰沉积物,这引起了人类对可能存在生命迹象的关注。
5. 木星 (Jupiter):木星是太阳系中最大的行星,它的质量甚至超过了太阳系中其他行星的总和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
太阳系行星轨道及运行动画演示本程序对太阳系行星、卫星运行情况进行动画演示。
具有以下功能:1.可单独(或全部)显示或隐藏某个天体、运行轨道、天体名称。
2.可调节演示速度、画面比列、观察角度(从天球赤道到天球北极观察太阳系)。
3.可将某个天体(例如月亮)设置为屏幕中间静止不动的天体,观察其他天体相对于该天体运行的情况。
本程序改进版见:太阳系行星轨道及运行-3D立体动画演示通过设置不同的参数,可得到许多美丽而奇妙的图案,如下:'需在窗体放置以下3 个控件,所有控件均采用默认设置:' Picture1,Command1,Timer1' 注意:在属性窗口将Command1 的Index 属性设置为0'其次,为窗体添加一个名为mFast 的菜单,再为mFast 添加一个名为mmFast 的下级子菜单,并将mmFast 的索引设置为0。
' 即:mmFast 是以序号0 开头的菜单数组控件的第一个。
'以下是窗体代码,在VB6.0 调试通过:Dim ctD() As tyD, ctDs As Long, ctP As Single, ctCenter As LongDim ctBi As Single, ctV As Single, ctTrack As Boolean, ctBW As Long Dim ctSeeJ As Long, ctSeeBi As Single, ctSet As MenuSet'定义表示天体的数据类型Private Type tyDCap As String '天体名称r As Long '天体半径(像素,下同)a As Single '轨道:横半径b As Single '轨道:纵半径c As Single '轨道:焦点e As Single '轨道:偏心率IsHui As Boolean '是否彗星Father As Long '父天体序号:轨道焦点上的天体Se As Long '颜色V As Single '运行角速度Jiao As Single '某时刻的与父天体连线角度X As Single '天体当前坐标Y As SinglexUp As Single '上一时刻坐标yUp As SingleVisible As Boolean '是否显示:球体ShowCap As Boolean '是否显示:标题GuiDao As Boolean '是否显示:轨道End TypeEnum MenuSet'以下为选项菜单标示ms_All = -2ms_NoAll = -1'以下为按钮标示ms_RunStop = 0 '开始/暂停ms_Step '步进,下一位置ms_UnRun '后退ms_Track '轨迹:显示/隐藏ms_DefSet '默认设置ms_Center '参照系ms_Visible '天体:显示/隐藏ms_ShowCap '天体名称ms_GuiDao '轨道ms_Bi '缩放比ms_V '速度ms_SeeJ '视角End EnumPrivate Sub Form_Load()Me.ScaleMode = 3: Me.Caption = "太阳系行星运行演示"mFast.Visible = False: ctP = 3.1415926Timer1.Interval = 25: Timer1.Enabled = TrueCall Init'Me.WindowState = vbMaximized '最大化窗体'窗体大小为屏幕的3/4,居中Me.Move Screen.Width * 0.1, Screen.Height * 0.1, Screen.Width * 0.8, Screen.Height * 0.8End SubPrivate Sub Form_Resize()Dim I As Long, L As Single, T As Single, H As Single, H1 As Single, W As Single'设置控件位置H1 = Me.TextHeight("A"): L = H1 * 0.3: T = LL = 3For I = 0 To Command1.Count - 1W = Me.TextWidth(Command1(I).Caption & "ab")Command1(I).Move L, T, W, H1 * 2L = L + W + 3NextT = T * 2 + Command1(0).Height: H = Me.ScaleHeight - TIf H > 0 Then Picture1.Move 0, T, Me.ScaleWidth, H'将Picture1 的中心设置为坐标原点Picture1.ScaleMode = 3Picture1.ScaleLeft = -Picture1.ScaleWidth * 0.5Picture1.ScaleTop = -Picture1.ScaleHeight * 0.5Picture1.ClsCall Run1End SubPrivate Sub Init()'初始化天体参数Dim I As Long, V As Single, J As SinglectBW = 0 ' 40 '四周边界空白区,仅用于调试。
调试完毕应设为0 。
调试代码**** Picture1.AutoRedraw = TruePicture1.BackColor = &H220000 '&HFFFFFF 'ctCenter = 0: ctBi = 1: ctV = 1 '参照系(位于中心的天体),缩放比列,速度ctSeeJ = 30: ctSeeBi = ctSeeJ / 90 '视点角度,视角比ctTrack = False '不显示运动轨迹(不是轨道)'添加按钮KjCls Command1KjAdd Command1, "始/停(&K)", ms_RunStop, "天体的运动状态:开始/暂停" KjAdd Command1, "进(&J)", ms_Step, "步进,运行到下一位置"KjAdd Command1, "退(&T)", ms_UnRun, "步进,后退到上一位置"KjAdd Command1, "迹(&A)", ms_Track, "运动轨迹:显示/隐藏"KjAdd Command1, "默(&D)", ms_DefSet, "将所有参数恢复为默认设置"KjAdd Command1, "参照系(&C)", ms_Center, "设置参照系(位于中心的天体)"KjAdd Command1, "天体(&X)", ms_Visible, "天体:显示/隐藏"KjAdd Command1, "名称(&M)", ms_ShowCap, "天体名称:显示/隐藏"KjAdd Command1, "轨道(&G)", ms_GuiDao, "天体运行轨道:显示/隐藏" KjAdd Command1, "速度(&V)", ms_V, "设置速度"KjAdd Command1, "视角(&L)", ms_SeeJ, "设置视点角度"KjAdd Command1, "缩放(&S)", ms_Bi, "设置缩放比列"'添加天体(演示比列状态下),半径以100 像素为标准'参数依次是:名称,父天体名称,天体半径,轨道长半轴,轨道偏心率,运动角速度,天体颜色,初始角度,彗星否ctDs = -1: ReDim ctD(0)AddCircle "太阳", "", 22, 2, 0, ctP * 0.008, RGB(255, 200, 0)AddCircle "水星", "", 5, 0.5, 0.206, ctP * 0.03, &H999999AddCircle "金星", "", 9, 0.8, 0.0068, ctP * 0.018, &H55AAAAAddCircle "地球", "", 10, 1.2, 0.0167, ctP * 0.01, RGB(0, 0, 255)AddCircle "月亮", "地球", 4, 0.2, 0, ctP * 0.06, &H888888AddCircle "嫦娥1号", "月亮", 2, 0.06, 0, ctP * 0.12, &HCCCCCCAddCircle "火星", "", 6, 1.8, 0.093, ctP * 0.005, &H1155FFAddCircle "火卫1", "火星", 3, 0.1, 0, ctP * 0.1, &HFFFF00, ctP * 2 * 0.3 AddCircle "火卫2", "火星", 3, 0.15, 0, ctP * 0.1, &H7777FF, ctP * 2 * 0.7 AddCircle "木星", "", 16, 3, 0.0483, ctP * 0.003, &HEEDDCCAddCircle "木卫1", "木星", 2, 0.25, 0, ctP * 0.05, &H883487, ctP * 2 * 0.2 AddCircle "木卫2", "木星", 2, 0.3, 0, ctP * 0.035, &H348888, ctP * 2 * 0.4 AddCircle "木卫3", "木星", 3, 0.35, 0, ctP * 0.03, &HAA34CC, ctP * 2 * 0.6 AddCircle "木卫4", "木星", 4, 0.45, 0, ctP * 0.02, &H888888, ctP * 2 * 0.8 AddCircle "土星", "", 14, 5, 0.056, ctP * 0.002, &H5599FFAddCircle "土卫6", "土星", 4, 0.25, 0, ctP * 0.055, &H99EEEEAddCircle "天王星", "", 12, 6.5, 0.0461, ctP * 0.0015, &HFFCCCC AddCircle "天卫3", "天王星", 3, 0.2, 0, ctP * 0.05, &H33FF88, ctP * 2 * 0.5 AddCircle "天卫4", "天王星", 3, 0.3, 0, ctP * 0.035, &HFF3311, ctP * 2 * 0.8 AddCircle "海王星", "", 12, 9, 0.0097, ctP * 0.001, &HFF7766AddCircle "海卫1", "海王星", 3, 0.25, 0, -ctP * 0.03, &H882388AddCircle "哈雷彗星", "", 2, 5.5, 0.83, ctP * 0.0012, &H777777, ctP * 1, TrueCall Form_ResizeEnd SubPrivate Sub Command1_Click(Index As Integer)Dim I As Long, J As Long, nStr As String, Zu As VariantDim nSel As Long, nAll As Long, nNo As LongctSet = Val(Command1(Index).Tag) '得到按钮标示KjCls mmFast '清除菜单'装载快捷菜单,并勾选选定项目Select Case ctSetCase ms_DefSet: Call Init: Run1: Exit Sub '默认设置Case ms_RunStop: Timer1.Enabled = Not Timer1.Enabled: Exit Sub '开始/暂停Case ms_Track: ctTrack = Not ctTrack: Picture1.Cls: Call Run1 '保留运动轨迹Case ms_Step '步进,前进到下一位置If Not Timer1.Enabled Then Run1 TrueTimer1.Enabled = FalseCase ms_UnRun '步进,后退到下一位置If Not Timer1.Enabled Then Run1 True, TrueTimer1.Enabled = FalseCase ms_Bi '缩放比列Zu = Array(0.1, 0.2, 0.3, 0.4, "-", 0.5, 0.6, 0.7, 0.8, 0.9, "-", 1, 1.2, 1.5, 1.8, 2, 3, 5, 8, 10)KjAddZu mmFast, Zu, ctBi, " 倍": GoTo Show1 '添加数组菜单,并勾选ctBi Case ms_SeeJ '视点角度Zu = Array("90 度(天球北极)", "80 度", "70 度", "60 度", "50 度", "45 度", "40 度", "30 度", "20 度", "15 度", "10 度", "5 度", "0 度(天球赤道)")KjAddZu mmFast, Zu, ctSeeJ: GoTo Show1 '添加数组菜单,并勾选ctSeeJ Case ms_V '速度Zu = Array(0.1, 0.2, 0.3, 0.4, "-", 0.5, 0.6, 0.7, 0.8, 0.9, "-", 1, 1.5, 2, 2.5, 3, 4, 5, 7.5, 10)KjAddZu mmFast, Zu, ctV, " 倍": GoTo Show1Case Else '装载天体名称For I = 0 To ctDsJ = Ji(I) '天体I 的级别KjAdd mmFast, "&" & I & " " & String(J * 2, " ") & ctD(I).CapNextEnd Select'勾选选定天体Select Case ctSetCase ms_Center: mmFast(ctCenter).Checked = True: GoTo Show1 '参照系(中心天体)Case ms_ShowCap '显示天体名称For I = 0 To ctDs: mmFast(I).Checked = ctD(I).ShowCap: NextCase ms_Visible '天体是否可见For I = 0 To ctDs: mmFast(I).Checked = ctD(I).Visible: NextCase ms_GuiDao '轨道For I = 0 To ctDs: mmFast(I).Checked = ctD(I).GuiDao: NextCase Else: Exit SubEnd SelectKjAdd mmFast, "-"nAll = KjAdd(mmFast, "全选", ms_All)nNo = KjAdd(mmFast, "全不选", ms_NoAll)For I = 0 To ctDsIf mmFast(I).Checked Then nSel = nSel + 1NextIf nSel = 0 Then mmFast(nNo).Checked = True: mmFast(nNo).Enabled = FalseIf nSel = ctDs + 1 Then mmFast(nAll).Checked = True: mmFast(nAll).Enabled = FalseShow1:Command1(Index).BackColor = &HFFCCCC '将选中按钮设置为淡蓝色Me.PopupMenu mFast, , Command1(Index).Left, Command1(Index).Top + Command1(Index).Height - 3Command1(Index).BackColor = Me.BackColorEnd SubPrivate Sub mmFast_Click(Index As Integer)'通过快捷菜单设置天体有关参数Dim nTag As MenuSet, I As Long, TF As BooleannTag = Val(mmFast(Index).Tag) '菜单标示:ms_All 全选,ms_NoAll 全不选Select Case ctSet 'ctSet:按钮标示,在Command1_Click 中设置Case ms_V '速度ctV = Val(mmFast(Index).Caption)Case ms_SeeJ '视点角度ctSeeJ = Val(mmFast(Index).Caption) '视点角度ctSeeBi = ctSeeJ / 90 '视角比For I = 0 To ctDs: ctD(I).xUp = 0: ctD(I).yUp = 0: Next Case ms_Bi '缩放比列ctBi = Val(mmFast(Index).Caption)For I = 0 To ctDs: ctD(I).xUp = 0: ctD(I).yUp = 0: Next Case ms_Center '参照系(中心天体)ctCenter = IndexFor I = 0 To ctDs: ctD(I).xUp = 0: ctD(I).yUp = 0: Next Case ms_ShowCap '显示名称If Index <= ctDs ThenctD(Index).ShowCap = Not ctD(Index).ShowCap ElseTF = nTag = ms_AllFor I = 0 To ctDs: ctD(I).ShowCap = TF: NextEnd IfCase ms_Visible '天体是否可见If Index <= ctDs ThenctD(Index).Visible = Not ctD(Index).VisibleElseTF = nTag = ms_AllFor I = 0 To ctDs: ctD(I).Visible = TF: NextEnd IfCase ms_GuiDao '轨道If Index <= ctDs ThenctD(Index).GuiDao = Not ctD(Index).GuiDaoElseTF = nTag = ms_AllFor I = 0 To ctDs: ctD(I).GuiDao = TF: NextEnd IfEnd SelectPicture1.ClsCall Run1End SubPrivate Sub AddCircle(nName As String, nFather As String, r As Long, a As Single, e As Single, V As Single, _Optional Se As Long = 255, Optional Jiao As Single, Optional IsHui As Boolean)'添加一个天体,参数依次是:' 名称,父天体名称,天体半径,轨道长半轴,轨道偏心率,运动角速度,天体颜色,初始角度,彗星否Dim I As Long, J As Longa = a * 100 '半径以100 像素为标准ctDs = ctDs + 1: ReDim Preserve ctD(ctDs)'设置父天体编号For I = 0 To ctDs - 1If LCase(ctD(I).Cap) = LCase(nFather) Then ctD(ctDs).Father = I: Exit For NextctD(ctDs).Cap = nName: ctD(ctDs).r = r: ctD(ctDs).a = actD(ctDs).c = a * e: ctD(ctDs).b = Sqr(a ^ 2 - ctD(ctDs).c ^ 2)ctD(ctDs).IsHui = IsHui: ctD(ctDs).V = V: ctD(ctDs).Se = SectD(ctDs).xUp = 0: ctD(ctDs).yUp = 0: ctD(ctDs).Visible = TruectD(ctDs).GuiDao = TrueRandomizeIf Jiao = 0 Then ctD(ctDs).Jiao = Rnd * ctP * 2 Else ctD(ctDs).Jiao = Jiao End SubPrivate Function KjAddZu(Kj, Zu As Variant, ByVal CheckStr As String, Optional SameStr As String)'添加一个数组菜单,并勾选标题为CheckStr 的条目Dim I As Long, J As Long, nCap As StringIf Left(CheckStr, 1) = "." Then CheckStr = "0" & CheckStrFor I = LBound(Zu) To UBound(Zu)nCap = Zu(I)If Left(nCap, 1) = "." Then nCap = "0" & nCapIf nCap = "-" Then J = KjAdd(Kj, nCap) Else J = KjAdd(Kj, nCap & SameStr) ' If LCase(CheckStr) = LCase(nCap) Then Kj(J).Checked = TrueIf Val(CheckStr) = Val(nCap) Then Kj(J).Checked = TrueNextEnd FunctionPrivate Function KjAdd(Kj, nCap As String, Optional nTag As String, Optional nNote As String) As Long'为数组控件添加一个成员,返回新添加的成员序号Dim I As LongI = Kj.Count - 1If Kj(I).Caption <> "" Then I = I + 1: Load Kj(I)On Error Resume NextKj(I).Checked = FalseKj(I).Caption = nCapKj(I).Tag = nTagKj(I).ToolTipText = nNoteKj(I).Visible = TrueKjAdd = IEnd FunctionPrivate Function KjCls(Kj) As Long'卸载数组控件的所有成员(0号除外)Dim I As LongFor I = Kj.Count - 1 To 1 Step -1Unload Kj(I)NextOn Error Resume NextKj(0).Caption = ""Kj(0).Checked = FalseEnd FunctionPrivate Function CapToNum(nCap As String) As Long'返回名称为nCap 的天体编号Dim I As LongFor I = 0 To ctDsIf LCase(ctD(I).Cap) = LCase(nCap) Then CapToNum = I: Exit FunctionNextCapToNum = -1End FunctionPrivate Function Ji(ByVal D As Long) As Long'返回天体级别(编号为D )DoIf ctD(D).Father = 0 Then Exit DoD = ctD(D).Father: Ji = Ji + 1LoopEnd FunctionPrivate Sub Timer1_Timer()Run1 TrueEnd SubPrivate Sub Run1(Optional nRun As Boolean, Optional UnRun As Boolean) '显示一次运行的瞬时状态Dim wB As Single, hB As Single, X As Single, Y As Single, ZuY() As Long Dim I As Long, T As Long, Se As Long, r As SingleDim CenX As Single, CenY As Single, InD As Boolean, InD1 As Boolean'计算天体瞬时位置:相对与父天体的角度For I = 0 To ctDsIf nRun ThenIf UnRun Then X = ctD(I).Jiao - ctD(I).V * ctV Else X = ctD(I).Jiao + ctD(I).V * ctV'保证数值在0 到ctP*2 的范围内If X > ctP * 2 Then X = X - ctP * 2If X < 0 Then X = X + ctP * 2ctD(I).Jiao = XEnd If' If I = CapToNum("地球") Then Me.Caption = ctD(I).Jiao / ctP * 180 '调试代码****ctD(I).X = ctBi * (ctD(I).a * Sin(ctD(I).Jiao) + ctD(I).c)ctD(I).Y = ctBi * ctSeeBi * (ctD(I).b * Cos(ctD(I).Jiao))'加上父天体的位置ctD(I).X = ctD(I).X + ctD(ctD(I).Father).X: ctD(I).Y = ctD(I).Y +ctD(ctD(I).Father).YNext'移位参照系CenX = ctD(ctCenter).X: CenY = ctD(ctCenter).Y '中心天体位置For I = 0 To ctDsctD(I).X = CenX - ctD(I).X: ctD(I).Y = CenY - ctD(I).YNextSortY ZuY '将天体按Y 坐标排序,数组ZuY() 返回排序后的天体序号Picture1.Font.Size = 9: Picture1.ForeColor = &HFFFFFFwB = Picture1.ScaleWidth * 0.5 - ctBW: hB = Picture1.ScaleHeight * 0.5 - ctBW '可视区大小If Not ctTrack Then Picture1.Cls '保留轨迹,不擦除上次图像If ctBW > 0 Then Picture1.Line (-wB, -hB)-(wB, hB), , B '可见区方框,调试代码****For T = 0 To ctDs '按天体Y 坐标依次画出各天体I = ZuY(T) '天体实际编号X = ctD(I).X: Y = ctD(I).Y: r = ctBi * ctD(I).rIf r < 2 Then r = 2'画一个天体Call SubGuiDao(I) '画I 的卫星轨道:上半部分InD = Not (X + r < -wB Or X - r > wB Or Y + r < -hB Or Y - r > hB) '是否在可见区内If ctD(I).Visible And InD ThenIf ctD(I).IsHui Then Tail I, X, Y '画彗尾Picture1.FillColor = ctD(I).Se: Picture1.FillStyle = 0 '打开填充Picture1.Circle (X, Y), r, 0 '画天体Picture1.FillStyle = 1 '关闭填充End IfCall SubGuiDao(I, True) '画I 的卫星轨道:下半部分'显示天体名称If ctD(I).ShowCap ThenIf I = 0 ThenShowStr wB, hB, ctD(I).Cap, X, Y - Picture1.TextHeight("A") * 0.5, True, 0ElseShowStr wB, hB, ctD(I).Cap, X, Y + r + 3, TrueEnd IfEnd If'画运动轨迹:上一个点和当前点的连线:有一个在可见区内If ctTrack ThenInD1 = Not (ctD(I).xUp + r < -wB Or ctD(I).xUp - r > wB Or ctD(I).yUp + r < -hB Or ctD(I).yUp - r > hB)If (InD Or InD1) And ctD(I).xUp <> 0 And ctD(I).yUp <> 0 ThenIf ctBi < 1 Then Picture1.DrawWidth = 1 Else Picture1.DrawWidth = ctBi * 2 Picture1.Line (X, Y)-(ctD(I).xUp, ctD(I).yUp), ctD(I).SePicture1.DrawWidth = 1End IfEnd If'记忆上次位置ctD(I).xUp = X: ctD(I).yUp = YNextEnd SubPrivate Sub Tail(I As Long, X As Single, Y As Single)'画天体I 的彗尾Dim x0 As Single, y0 As Single, S As SingleDim x1 As Single, y1 As Single, J As Single'无压缩时的位置x0 = ctD(I).a * Sin(ctD(I).Jiao): y0 = ctD(I).b * Cos(ctD(I).Jiao)J = ctBi * Sqr((x0 + ctD(I).c) ^ 2 + y0 ^ 2) '与焦点(即:父天体)距离S = ctBi * (ctD(I).a - ctD(I).c) ^ 2 / J - (ctD(I).a - ctD(I).c) / 5 '彗发长度:近日距离4/5If S < 0 Then Exit SubS = S * ctBiIf S > Picture1.ScaleWidth Then S = Picture1.ScaleWidthx1 = ctD(ctD(I).Father).X: y1 = ctD(ctD(I).Father).Y '父天体位置x1 = S / J * (X - x1): y1 = S / J * (Y - y1)Picture1.DrawMode = 14: Picture1.DrawWidth = ctD(I).r * 3 * ctBi + 1Picture1.Line (X, Y)-Step(x1, y1), &H999999Picture1.Line (X, Y)-Step(x1, y1), &H999999Picture1.DrawWidth = 1: Picture1.DrawMode = 13End SubPrivate Sub ShowStr(wB As Single, hB As Single, nStr As String, ByVal X As Single, ByVal Y As Single, Optional CenLR As Boolean, Optional Se As Long = -1)'显示字符wB,hB:可见区边界CenLR = T:左右居中Dim W As Single, H As Single, nSe As LongW = Picture1.TextWidth(nStr): H = Picture1.TextHeight(nStr)If CenLR Then X = X - W * 0.5If X < -wB - W Or X > wB Or Y < -hB - H Or Y > hB Then Exit SubPicture1.CurrentX = X: Picture1.CurrentY = Y: Picture1.Print nStrIf Se = -1 Then Exit SubnSe = Picture1.ForeColor: Picture1.ForeColor = SePicture1.CurrentX = X + 1: Picture1.CurrentY = Y + 1Picture1.Print nStrPicture1.ForeColor = nSeEnd SubPrivate Sub SortY(ZuY() As Long)'将天体按Y 坐标排序,数组ZuY() 返回排序后的天体序号Dim I As Long, J As Long, K As Long, S As Long, y1 As Single Dim Y() As SingleReDim Y(0 To ctDs) 'Y() 用于视角为0 的情况For I = 0 To ctDsIf ctSeeBi = 0 ThenIf ctD(I).Jiao > ctP * 0.5 And ctD(I).Jiao < ctP * 1.5 ThenY(I) = ctD(I).bElseY(I) = -ctD(I).bEnd IfY(I) = Y(I) + Y(ctD(I).Father) '加上父天体的Y 坐标ElseY(I) = ctD(I).YEnd IfNextReDim ZuY(0 To ctDs)ZuY(0) = 0For I = 1 To ctDsy1 = Y(I)For J = 0 To I - 1If y1 < Y(ZuY(J)) ThenFor K = I - 1 To J Step -1 '下移动已排序数组J 之后的ZuY(K + 1) = ZuY(K)NextZuY(J) = I: GoTo Next1End IfNextZuY(I) = INext1:NextEnd SubPrivate Sub GetXY(ByVal I As Long, Jiao As Single, CenX As Single, CenY As Single, X As Single, Y As Single)'获取某天体I 在Jiao 位置的绝对位置'CenX,CenY:父天体的位置X = CenX - ctBi * (ctD(I).a * Sin(Jiao) + ctD(I).c)Y = CenY - ctBi * ctSeeBi * ctD(I).b * Cos(Jiao)End SubPrivate Sub SubGuiDao(I As Long, Optional IsDown As Boolean)'画天体I 的卫星轨道的一半Dim W As LongFor W = 0 To ctDsIf W <> I And ctD(W).GuiDao And ctD(W).Father = I Then GuiDao W, IsDown NextEnd SubPrivate Sub GuiDao(I As Long, Optional IsDown As Boolean)'画轨道Dim J As Single, X As Single, Y As Single, CenX As Single, CenY As Single Dim W1 As Single, H1 As Single, xUp As Single, yUp As Single, Is2 As BooleanDim InD As Boolean, InUpD As Boolean, J1 As Single, J2 As SinglePicture1.DrawWidth = 1W1 = Picture1.ScaleWidth * 0.5 - ctBW: H1 = Picture1.ScaleHeight * 0.5 - ctBWCenX = ctD(ctD(I).Father).X: CenY = ctD(ctD(I).Father).Y '父天体的位置If IsDown ThenJ1 = ctP * 0.5: J2 = ctP * 1.5 '下半部分ElseJ1 = ctP * 1.5: J2 = ctP * 2.5 '上半部分End IfFor J = J1 To J2 Step 0.05Call GetXY(I, J, CenX, CenY, X, Y)InD = Not (X < -W1 Or X > W1 Or Y < -H1 Or Y > H1) '点1是否在可见区内If Is2 And (InD Or InUpD) Then Picture1.Line (X, Y)-(xUp, yUp), ctD(I).SexUp = X: yUp = Y: InUpD = InD: Is2 = TrueNext'末点:将轨道封闭Call GetXY(I, J2, CenX, CenY, X, Y)InD = Not (X < -W1 Or X > W1 Or Y < -H1 Or Y > H1)If InD Or InUpD Then Picture1.Line (X, Y)-(xUp, yUp), ctD(I).Se End Sub当前位置:首页> VB 小程序> 太阳系行星轨道及运行动画演示。