太阳系行星轨道及运行
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
太阳系行星轨道及运行
动画演示
本程序对太阳系行星、卫星运行情况进行动画演示。具有以下功能:
1.可单独(或全部)显示或隐藏某个天体、运行轨道、天体名称。
2.可调节演示速度、画面比列、观察角度(从天球赤道到天球北极观察太阳系)。
3.可将某个天体(例如月亮)设置为屏幕中间静止不动的天体,观察其他天体相对于该天体运行的情况。
本程序改进版见:
通过设置不同的参数,可得到许多美丽而奇妙的图案,如下:
'需在窗体放置以下 3 个控件,所有控件均采用默认设置:
' Picture1,Command1,Timer1
' 注意:在属性窗口将 Command1 的 Index 属性设置为 0
'其次,为窗体添加一个名为 mFast 的菜单,再为 mFast 添加一个名为 mmFast 的下级子菜单,并将 mmFast 的索引设置为 0。
' 即:mmFast 是以序号 0 开头的菜单数组控件的第一个。
'以下是窗体代码,在调试通过:
Dim ctD() As tyD, ctDs As Long, ctP As Single, ctCenter As Long Dim ctBi As Single, ctV As Single, ctTrack As Boolean, ctBW As Long Dim ctSeeJ As Long, ctSeeBi As Single, ctSet As MenuSet
'定义表示天体的数据类型
Private Type tyD
Cap 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 Single
xUp As Single '上一时刻坐标
yUp As Single
Visible As Boolean '是否显示:球体ShowCap As Boolean '是否显示:标题GuiDao As Boolean '是否显示:轨道End Type
Enum MenuSet
'以下为选项菜单标示
ms_All = -2
ms_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 Enum
Private Sub Form_Load()
= 3: = "太阳系行星运行演示" = False: ctP =
= 25: = True
Call Init
' = vbMaximized '最大化窗体
'窗体大小为屏幕的 3/4,居中
* , * , * , *
End Sub
Private Sub Form_Resize()
Dim I As Long, L As Single, T As Single, H As Single, H1 As Single, W As Single
'设置控件位置
H1 = ("A"): L = H1 * : T = L
L = 3
For I = 0 To - 1
W = (Command1(I).Caption & "ab")
Command1(I).Move L, T, W, H1 * 2
L = L + W + 3
Next
T = T * 2 + Command1(0).Height: H = - T
If H > 0 Then 0, T, , H
'将 Picture1 的中心设置为坐标原点
= 3
= *
= *
Call Run1
End Sub
Private Sub Init()
'初始化天体参数
Dim I As Long, V As Single, J As Single
ctBW = 0 ' 40 '四周边界空白区,仅用于调试。调试完毕应设为 0 。调试代码****
= True
= &H220000 '&HFFFFFF '
ctCenter = 0: ctBi = 1: ctV = 1 '参照系(位于中心的天体),缩放比列,速度
ctSeeJ = 30: ctSeeBi = ctSeeJ / 90 '视点角度,视角比
ctTrack = False '不显示运动轨迹(不是轨道)
'添加按钮
KjCls Command1
KjAdd 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, "天体:显示/隐藏"