太阳系行星轨道及运行

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

太阳系行星轨道及运行

动画演示

本程序对太阳系行星、卫星运行情况进行动画演示。具有以下功能:

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 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()

Me.ScaleMode = 3: Me.Caption = "太阳系行星运行演示" mFast.Visible = False: ctP = 3.1415926

Timer1.Interval = 25: Timer1.Enabled = True

Call Init

'Me.WindowState = vbMaximized '最大化窗体

'窗体大小为屏幕的3/4,居中

Me.Move Screen.Width * 0.1, Screen.Height * 0.1, Screen.Width * 0.8, Screen.Height * 0.8

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 = Me.TextHeight("A"): L = H1 * 0.3: T = L

L = 3

For I = 0 To Command1.Count - 1

W = Me.TextWidth(Command1(I).Caption & "ab")

Command1(I).Move L, T, W, H1 * 2

L = L + W + 3

Next

T = T * 2 + Command1(0).Height: H = Me.ScaleHeight - T

If H > 0 Then Picture1.Move 0, T, Me.ScaleWidth, H

'将Picture1 的中心设置为坐标原点

Picture1.ScaleMode = 3

Picture1.ScaleLeft = -Picture1.ScaleWidth * 0.5

Picture1.ScaleTop = -Picture1.ScaleHeight * 0.5

Picture1.Cls

Call Run1

End Sub

Private Sub Init()

'初始化天体参数

Dim I As Long, V As Single, J As Single

ctBW = 0 ' 40 '四周边界空白区,仅用于调试。调试完毕应设为0 。调试代码**** Picture1.AutoRedraw = True

Picture1.BackColor = &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, "天体:显示/隐藏"

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, &H999999

AddCircle "金星", "", 9, 0.8, 0.0068, ctP * 0.018, &H55AAAA

AddCircle "地球", "", 10, 1.2, 0.0167, ctP * 0.01, RGB(0, 0, 255)

AddCircle "月亮", "地球", 4, 0.2, 0, ctP * 0.06, &H888888

AddCircle "嫦娥1号", "月亮", 2, 0.06, 0, ctP * 0.12, &HCCCCCC

AddCircle "火星", "", 6, 1.8, 0.093, ctP * 0.005, &H1155FF

AddCircle "火卫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, &HEEDDCC

AddCircle "木卫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, &H5599FF

AddCircle "土卫6", "土星", 4, 0.25, 0, ctP * 0.055, &H99EEEE

AddCircle "天王星", "", 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, &HFF7766

AddCircle "海卫1", "海王星", 3, 0.25, 0, -ctP * 0.03, &H882388

AddCircle "哈雷彗星", "", 2, 5.5, 0.83, ctP * 0.0012, &H777777, ctP * 1, True Call Form_Resize

End Sub

Private Sub Command1_Click(Index As Integer)

Dim I As Long, J As Long, nStr As String, Zu As Variant

Dim nSel As Long, nAll As Long, nNo As Long

ctSet = Val(Command1(Index).Tag) '得到按钮标示

KjCls mmFast '清除菜单

'装载快捷菜单,并勾选选定项目

Select Case ctSet

Case 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 True

Timer1.Enabled = False

Case ms_UnRun '步进,后退到下一位置

If Not Timer1.Enabled Then Run1 True, True

Timer1.Enabled = False

Case 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 Show1

Case Else '装载天体名称

For I = 0 To ctDs

J = Ji(I) '天体I 的级别

KjAdd mmFast, "&" & I & " " & String(J * 2, " ") & ctD(I).Cap

Next

End Select

'勾选选定天体

Select Case ctSet

Case ms_Center: mmFast(ctCenter).Checked = True: GoTo Show1 '参照系(中心天体)

Case ms_ShowCap '显示天体名称

For I = 0 To ctDs: mmFast(I).Checked = ctD(I).ShowCap: Next

Case ms_Visible '天体是否可见

For I = 0 To ctDs: mmFast(I).Checked = ctD(I).Visible: Next

Case ms_GuiDao '轨道

For I = 0 To ctDs: mmFast(I).Checked = ctD(I).GuiDao: Next

Case Else: Exit Sub

End Select

KjAdd mmFast, "-"

nAll = KjAdd(mmFast, "全选", ms_All)

nNo = KjAdd(mmFast, "全不选", ms_NoAll)

For I = 0 To ctDs

If mmFast(I).Checked Then nSel = nSel + 1

Next

If nSel = 0 Then mmFast(nNo).Checked = True: mmFast(nNo).Enabled = False

If nSel = ctDs + 1 Then mmFast(nAll).Checked = True: mmFast(nAll).Enabled = False

Show1:

Command1(Index).BackColor = &HFFCCCC '将选中按钮设置为淡蓝色

Me.PopupMenu mFast, , Command1(Index).Left, Command1(Index).Top + Command1(Index).Height - 3

Command1(Index).BackColor = Me.BackColor

End Sub

Private Sub mmFast_Click(Index As Integer)

'通过快捷菜单设置天体有关参数

Dim nTag As MenuSet, I As Long, TF As Boolean

nTag = 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 = Index

For I = 0 To ctDs: ctD(I).xUp = 0: ctD(I).yUp = 0: Next

Case ms_ShowCap '显示名称

If Index <= ctDs Then

ctD(Index).ShowCap = Not ctD(Index).ShowCap

Else

TF = nTag = ms_All

For I = 0 To ctDs: ctD(I).ShowCap = TF: Next

End If

Case ms_Visible '天体是否可见

If Index <= ctDs Then

ctD(Index).Visible = Not ctD(Index).Visible

Else

TF = nTag = ms_All

For I = 0 To ctDs: ctD(I).Visible = TF: Next

End If

Case ms_GuiDao '轨道

If Index <= ctDs Then

ctD(Index).GuiDao = Not ctD(Index).GuiDao

Else

TF = nTag = ms_All

For I = 0 To ctDs: ctD(I).GuiDao = TF: Next

End If

End Select

Picture1.Cls

Call Run1

End Sub

Private 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 Long

a = a * 100 '半径以100 像素为标准

ctDs = ctDs + 1: ReDim Preserve ctD(ctDs)

'设置父天体编号

For I = 0 To ctDs - 1

If LCase(ctD(I).Cap) = LCase(nFather) Then ctD(ctDs).Father = I: Exit For Next

ctD(ctDs).Cap = nName: ctD(ctDs).r = r: ctD(ctDs).a = a

ctD(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 = Se

ctD(ctDs).xUp = 0: ctD(ctDs).yUp = 0: ctD(ctDs).Visible = True

ctD(ctDs).GuiDao = True

Randomize

If Jiao = 0 Then ctD(ctDs).Jiao = Rnd * ctP * 2 Else ctD(ctDs).Jiao = Jiao End Sub

Private Function KjAddZu(Kj, Zu As Variant, ByVal CheckStr As String, Optional SameStr As String)

'添加一个数组菜单,并勾选标题为CheckStr 的条目

Dim I As Long, J As Long, nCap As String

If Left(CheckStr, 1) = "." Then CheckStr = "0" & CheckStr

For I = LBound(Zu) To UBound(Zu)

nCap = Zu(I)

If Left(nCap, 1) = "." Then nCap = "0" & nCap

If nCap = "-" Then J = KjAdd(Kj, nCap) Else J = KjAdd(Kj, nCap & SameStr) ' If LCase(CheckStr) = LCase(nCap) Then Kj(J).Checked = True

If Val(CheckStr) = Val(nCap) Then Kj(J).Checked = True

Next

End Function

Private Function KjAdd(Kj, nCap As String, Optional nTag As String, Optional nNote As String) As Long

'为数组控件添加一个成员,返回新添加的成员序号

Dim I As Long

I = Kj.Count - 1

If Kj(I).Caption <> "" Then I = I + 1: Load Kj(I)

On Error Resume Next

Kj(I).Checked = False

Kj(I).Caption = nCap

Kj(I).Tag = nTag

Kj(I).ToolTipText = nNote

Kj(I).Visible = True

KjAdd = I

End Function

Private Function KjCls(Kj) As Long

'卸载数组控件的所有成员(0号除外)

Dim I As Long

For I = Kj.Count - 1 To 1 Step -1

Unload Kj(I)

Next

On Error Resume Next

Kj(0).Caption = ""

Kj(0).Checked = False

End Function

Private Function CapToNum(nCap As String) As Long

'返回名称为nCap 的天体编号

Dim I As Long

For I = 0 To ctDs

If LCase(ctD(I).Cap) = LCase(nCap) Then CapToNum = I: Exit Function Next

CapToNum = -1

End Function

Private Function Ji(ByVal D As Long) As Long

'返回天体级别(编号为D )

Do

If ctD(D).Father = 0 Then Exit Do

D = ctD(D).Father: Ji = Ji + 1

Loop

End Function

Private Sub Timer1_Timer()

Run1 True

End Sub

Private 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 Single

Dim CenX As Single, CenY As Single, InD As Boolean, InD1 As Boolean

'计算天体瞬时位置:相对与父天体的角度

For I = 0 To ctDs

If nRun Then

If 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 * 2

If X < 0 Then X = X + ctP * 2

ctD(I).Jiao = X

End 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).Y

Next

'移位参照系

CenX = ctD(ctCenter).X: CenY = ctD(ctCenter).Y '中心天体位置

For I = 0 To ctDs

ctD(I).X = CenX - ctD(I).X: ctD(I).Y = CenY - ctD(I).Y

Next

SortY ZuY '将天体按Y 坐标排序,数组ZuY() 返回排序后的天体序号Picture1.Font.Size = 9: Picture1.ForeColor = &HFFFFFF

wB = 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).r

If 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 Then

If 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 If

Call SubGuiDao(I, True) '画I 的卫星轨道:下半部分

'显示天体名称

If ctD(I).ShowCap Then

If I = 0 Then

ShowStr wB, hB, ctD(I).Cap, X, Y - Picture1.TextHeight("A") * 0.5, True, 0

Else

ShowStr wB, hB, ctD(I).Cap, X, Y + r + 3, True

End If

End If

'画运动轨迹:上一个点和当前点的连线:有一个在可见区内

If ctTrack Then

InD1 = 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 Then

If ctBi < 1 Then Picture1.DrawWidth = 1 Else Picture1.DrawWidth = ctBi * 2 Picture1.Line (X, Y)-(ctD(I).xUp, ctD(I).yUp), ctD(I).Se

Picture1.DrawWidth = 1

End If

End If

'记忆上次位置

ctD(I).xUp = X: ctD(I).yUp = Y

Next

End Sub

Private Sub Tail(I As Long, X As Single, Y As Single)

'画天体I 的彗尾

Dim x0 As Single, y0 As Single, S As Single

Dim 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/5

If S < 0 Then Exit Sub

S = S * ctBi

If S > Picture1.ScaleWidth Then S = Picture1.ScaleWidth

x1 = 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 + 1

Picture1.Line (X, Y)-Step(x1, y1), &H999999

Picture1.Line (X, Y)-Step(x1, y1), &H999999

Picture1.DrawWidth = 1: Picture1.DrawMode = 13

End Sub

Private 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 Long

W = Picture1.TextWidth(nStr): H = Picture1.TextHeight(nStr)

If CenLR Then X = X - W * 0.5

If X < -wB - W Or X > wB Or Y < -hB - H Or Y > hB Then Exit Sub

Picture1.CurrentX = X: Picture1.CurrentY = Y: Picture1.Print nStr

If Se = -1 Then Exit Sub

nSe = Picture1.ForeColor: Picture1.ForeColor = Se

Picture1.CurrentX = X + 1: Picture1.CurrentY = Y + 1

Picture1.Print nStr

Picture1.ForeColor = nSe

End Sub

Private 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 Single

ReDim Y(0 To ctDs) 'Y() 用于视角为0 的情况

For I = 0 To ctDs

If ctSeeBi = 0 Then

If ctD(I).Jiao > ctP * 0.5 And ctD(I).Jiao < ctP * 1.5 Then

Y(I) = ctD(I).b

Else

Y(I) = -ctD(I).b

End If

Y(I) = Y(I) + Y(ctD(I).Father) '加上父天体的Y 坐标

Else

Y(I) = ctD(I).Y

End If

Next

ReDim ZuY(0 To ctDs)

ZuY(0) = 0

For I = 1 To ctDs

y1 = Y(I)

For J = 0 To I - 1

If y1 < Y(ZuY(J)) Then

For K = I - 1 To J Step -1 '下移动已排序数组J 之后的

ZuY(K + 1) = ZuY(K)

Next

ZuY(J) = I: GoTo Next1

End If

Next

ZuY(I) = I

Next1:

Next

End Sub

Private 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 Sub

Private Sub SubGuiDao(I As Long, Optional IsDown As Boolean)

'画天体I 的卫星轨道的一半

Dim W As Long

For W = 0 To ctDs

If W <> I And ctD(W).GuiDao And ctD(W).Father = I Then GuiDao W, IsDown Next

End Sub

Private 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 Boolean

Dim InD As Boolean, InUpD As Boolean, J1 As Single, J2 As Single

Picture1.DrawWidth = 1

W1 = Picture1.ScaleWidth * 0.5 - ctBW: H1 = Picture1.ScaleHeight * 0.5 - ctBW

CenX = ctD(ctD(I).Father).X: CenY = ctD(ctD(I).Father).Y '父天体的位置

If IsDown Then

J1 = ctP * 0.5: J2 = ctP * 1.5 '下半部分

Else

J1 = ctP * 1.5: J2 = ctP * 2.5 '上半部分

End If

For J = J1 To J2 Step 0.05

Call 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).Se xUp = X: yUp = Y: InUpD = InD: Is2 = True

Next

'末点:将轨道封闭

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 小程序> 太阳系行星轨道及运行动画演示

太阳系行星介绍

水星(英语:Mercury,拉丁语:Mercurius)是太阳系八大行星最内侧也是最小的一颗行星,也是离太阳最近 的行星。水星是一颗类地行星,由于其非常靠近太阳,所以只会出现在凌晨成为晨星,或是黄昏出现作为昏星。除 非有日食,否则在阳光的照耀下通常是看不见水星的。 内部构造 水星是太阳系内与地球相似的4颗类地行星之一,有着与地球一样的岩石个体。它是太阳系中最小的行星,在赤道的半径是2,439.7公里。水星由大约70%的金属和30%的硅酸盐材料组成,水星的密度是5.427克/cm3,在太阳系中是第二高的,仅次于地球的5.515克/cm3。 地形地貌 美国发射的“水手10号”在1974年3月、9月和1975年3月探测了水星,并向地面发回5000多张照片,为我们了解水星提供了珍贵的信息。从照片上我们看出,水星的外貌酷似月球,有许多大小不一的环形山,还有辐射纹、平原、裂谷、盆地等地形。水星的表面很像月球,满布着环形山、大平原、盆地、辐射纹和断崖。1976年,国际天文学联合会开始为水星上的环形山命名。 水星表面上有着星罗棋布的大大小小的环形山,既有高山,也有平原,还有令人胆寒的悬崖峭壁。据统计,水星上的环形山有上千个,这些环形山比月亮上的环形山的坡度平缓些。 水星表面平均温度约452K,变化范围从90-700K,是温差最大的行星。白天太阳光直射处温度高达427℃,夜晚太阳照不到时,温度降低到-173℃。可以比较一下地球,地球上的度温变化只有11K(这里只是太阳辐射能量,不考虑“季节”,“天气”)。水星的表面的日照比地球强8.9 倍,总共辐照度有9126.6W/㎡。 令人惊讶地是,在1992年所进行的雷达观察显示,水星的北极有冰。一般相信这些冰存在于阳光永无法照射到的环形山底部,由于彗星的撞击或行星内部的气体冒出表面而积累的。由于没有大气调节,这些地方的温度一直维持在华氏零下280度(约合-173℃)左右。 大气层 水星上有极稀薄的大气,大气压小于2×10百帕,大气中含有氦、氢、氧、碳、氩、氖、氙等元素。由于大气非常稀薄,水星的表面白天和夜晚的温度相差很大,实际上水星大气中的气体分子与水星表面相撞的频密程度比它们之间互相相撞要高。出于这些原因,水星应被视为是没有大气的。 水星的大气非常少,主要成份为氦(42%)、汽化钠(42%)和氧(15%),而且在白天气温非常高,平均地表温度为179℃,最高为427℃,最低为零下173℃,因此水星上看来不可能存在水;但1991年科学家在水星的北极发现了一个不同寻常的亮点,造成这个亮点的可能是在地表或地下的冰。水星上真的有可能存在冰吗?由于水星的轨道比较特殊,在它的北极,太阳始终只在地平线上徘徊。在一些陨石坑内部,可能由于永远见不到阳光而使温度降至零下161℃以下。这样低的温度就有可能凝固从行星内部释放出来的气体,或积存从太空来的冰。 真正发现水星有冰 2014年,美国航天局派往水星的探测器信使号,早前传来的照片中,却发现北极地区一个陨石坑附近有冰的存在,是首次真正发现水星有冰。 学者早于两年前已透过间接的分析指水星上存在着冰,但这次则是首次直接看到。专家估计冰块有数以十米厚,但亦可能延伸至坑洞内。虽然水星围绕太阳转一圈需时58个地球日,几乎整个大地都被阳光照射,但水星的极地则永远无法被太阳照到,温度低得有机会让冰形成。

太阳系教学设计

5、太阳系 【教学目标】 科学概念: 太阳和围绕它运动的行星、矮行星和小天体组成了太阳系。太阳系是一个较大的天体系统。 过程与方法: 1、收集资料认识和了解太阳系。 2、按一定比例对数据进行处理,并在此基础上用一定的材料建立太阳系的模型。情感态度与价值观: 1、认识到收集和整理资料,并进行交流,是科学学习的一种方式。 2、学会与他人合作,并能在合作中发挥自己的作用。 3、意识到太阳系中天体的运动是有规律的,并可以逐渐被人们认识的。 【教学重点】太阳和围绕它运动的行星、矮行星和小天体组成了太阳系。 【教学难点】根据八大行星距太阳的平均距离及各行星赤道直径数据表建立太阳系的模型。 【教学准备】 教师准备:太阳系图片、多媒体资料、八大行星数据表、八个铁丝制成的支架、橡皮泥、小皮球、直尺等;教师事先考察制作太阳系模型的室外场地。 学生准备:课前收集有关太阳系的资料,小组内先进行交流。 【教学过程】 一、认识太阳系。 1、提出问题:地球在不停的围绕太阳运动,那么还有哪些天体也在不停地围绕着太阳运动呢? 2、课前同学们都进行了有关太阳系资料的收集,现在让我们来开个有关太阳系的交流会,请各组派代表进行全班交流,资料可以是文字的,也可以用图片的形式展示。说说: (1)哪些天体在围绕着太阳运动? (2)这些天体有哪些特点? (3)它们之间是如何排列的? 3、教师展示自己收集的资料做补充。(最好是有关太阳系的科普录像资料) 4、小结:太阳系是以太阳为中心,包括围绕它转动的八大行星(及围绕行星转动的卫星)、矮行星、小天体(包括小行星、流星、彗星等)组成的天体系统。 二、建立太阳系模型。 1、谈话:我们已经对太阳系有了初步的了解,为了能更好地认识太阳系,让我们用橡皮泥捏成球表示八大行星,按照一定的顺序和比例,试着建一个太阳系的模型。 2、讨论:怎样才能建好模型?需要哪些相关数据才能保证我们建的模型相对准确? 3、阅读课本56页有关八大行星的数据资料。 4、尝试根据八大行星与太阳的距离来建模型,思考: (1)如何在桌面上将八大行星摆列出来? (预设:把表中行星与太阳的距离按相同比例缩小,将“太阳”及“八大行星”在桌子上排开。) (2)如果要对八大行星与太阳距离的数据进行处理,该如何处理?

Matlab动画模拟太阳系行星运动

Matlab动画模拟太阳系行星运动 figure('name','星系演示');%设置标题名字 pausetime=.02;%设置暂停时间 set(gca,'xlim',[-50 50],'ylim',[-50 30],'zlim',[-50 50]); set(gcf,'doublebuffer','on') %消除抖动 xlabel('x轴'),ylabel('y轴'),zlabel('z轴'); axis equal; grid on; view([3 5 2]); hold on a=[8.5 12.5 20 30 50 60 80 100 90];b=[8 12 18 26 45 55 70 90 30]; omga=[4 1.25 1 0.5 0.1 0.05 0.25 0.125 1];r=[0.35 0.8 0.8 0.5 3 2.5 1.5 1.5 0.35];%长轴,短轴,角速度,球体半径 c=sqrt(a.^2-b.^2);h=pi/18;h1=pi/10;f=pi/9;g=pi/8; aby=[h h 0;h1 h 0;h h 0;h h 0;h h 0;h h 0;h g 0;h h h;g 0 g];%每个轨道平面倾斜角度,偏移设置 %colo={'y','m','b','m','r','c','b','b'}; [X,Y,Z]=sphere(40); surf(5*X,5*Y,5*Z);colormap(autumn) %设置太阳 light ('position',[1 0 2],'style','infinite') lighting phong material shiny t=0:0.01*pi:50*pi; t'; num=length(a); for n=1:num x(:,n)=a(n)*cos(omga(n)*t)+c(n); y(:,n)=b(n)*sin(omga(n)*t); z(:,n)=0*t; %计算未经轨道平面角度倾斜的轨道位置 xuanz(:,:)=[1 0 0;0 cos(aby(n,1)) -sin(aby(n,1));0 sin(aby(n,1)) cos(aby(n,1))]*[cos(aby(n,2)) 0 sin(aby(n,2));0 1 0;-sin(aby(n,2)) 0 cos(aby(n,2))]*[cos(aby(n,3)) -sin(aby(n,3)) 0;sin(aby(n,3)) cos(aby(n,3)) 0;0 0 1]; %每个轨道平面倾斜计算 xyz(:,:)=[x(:,n) y(:,n) z(:,n)]*xuanz(:,:); x(:,n)=xyz(:,1); y(:,n)=xyz(:,2); z(:,n)=xyz(:,3); %计算轨道平面倾斜后的轨道位置 p(n)=surf(r(n)*X+x(1,n),r(n)*Y+y(1,n),r(n)*Z+z(1,n));shading interp %画出每个行星

中学生科学小知识介绍八大行星是哪八大

中学生科学小知识介绍八大行星是哪八大中学生科学小知识介绍八大行星 八大行星其实指的就是在太阳系中的;水星、金星、地球、火星、木星、土星、天王星、海王星,这颗八行星,而其中只有地球、火星、木星、土星、天王星、海王星这六颗行星有自己的卫星。 我给你一一介绍认识,那么就先从水星开始吧,水星是最接近太阳的,它也是太阳系中最小最轻的行星。常和太阳同时出没。早在公元前3000年的苏美尔时代,我们的祖先便发现了水星,在水星上温差是整个太阳系中最大的,温度变化的范围为90到700。相比之下,金星的温度略高些,但更为稳定。金星在史前就已被人所知晓。它是在太阳系除了太阳外,它是最亮的一颗的。金星是一颗内层行星,从地球用望远镜观察它的话,会发现它有位相变化。告诉你在金星上大气压力为90个标准大气压(相当于地球海洋深1千米处的压力)人一上去就是死啊,大气大多由二氧化碳组成的,金星表面温度大约在400度,你知道吗温度超过了740开时(足以使铅条熔化)。金星表面自然比水星表面热,虽然金星比水星离太阳要远两倍。 火星这或许是由于它鲜红的颜色外表而得来的;火星有时被称为“红色行星”。火星是在史前时代为人类所知。由于它被认为是太阳系中人类最好的住所(除地球外),它受到科幻小说家们的喜爱。火星的两极永久地被固态二氧化碳(干冰)覆盖着。这个冰罩的结构是层叠式的,它是由冰层与变化着的二氧化碳层轮流叠加而成。在北部的夏天,二氧化碳完全升华,留下剩余的冰水层。由于南部的二氧化碳从没有完全消失过,所以我们无法知道在南部的冰层下是否也存在着冰水

层。这种现象的原因还不知道,但或许是由于火星赤道面与其运行轨道之间的夹角的长期变化引起气候的变化造成的。或许在火星表面下较深处也有水存在。这种因季节变化而产生的两极覆盖层的变化使火星的气压改变了25%左右。 木星在太阳系中是最大的一颗除了太阳,是所有其他的7颗行星总和质量的2.5倍,是地球的318倍,体积为地球的1316倍。所以被人们被称为“行星之王”。木星表面的云层是多彩的可能是由于大气中化学成分的微妙差异及其作用造成的,可能其中混入了硫的混合物,造就了五彩缤纷的视觉效果,色彩的变化与云层的高度有关:最低处为蓝色,跟着是棕色与白色,最高处为红色。我们只能通过高处云层的洞才能看到低处的云层。 土星它是太阳系上密度最小的行星,甚至它可以浮在水上。通过小型的望远镜观察也能明显地发现土星是一个扁球体。它赤道的直径比两极的直径大大约10%。这其实是因为它快速的自转和流质地表的结果。其他的气态行星也是扁球体,不过没有这样明显。还有土星是最疏松的一颗行星,它的比重比水星的还要小。但是与木星一样,土星是由大约75%的氢气和25%的氦气以及少量的水,甲烷,氨气和一些类似岩石的物质组成。这些组成类似形成太阳系时,太阳星云物质的组成。而且土星内部和木星一样,由一个岩石核心,一个具有金属性的液态氢层和一个氢分子层,同时还存在少量的各式各样的冰。 天王星的体积比海王星大,质量却比海王星的小。大多数的行星总是围绕着几乎与黄道面垂直的轴线自转,可天王星的轴线却几乎平行于黄道面。在卫星旅行者2号探测的那段时间里,天王星的南极几乎是接受太阳直射的。这一奇特的事实表明天王星两极地区所得到来自太阳的能量比其赤道地区所得到的要高。然而天王星的赤道地区仍比两极地区热,这其中的原因还不为人知。

太阳系各行星有关参数

太阳系各行星有关参数: //各行星轨道长半径之比radiusRatio //1.5467 2.6667 4.0000 6.1333 20.8000 37.3333 77.3333 120.0000 157.3333 //程序中使用的轨道半径之比sqrt(4*radiusRatio) //2.4873 3.2660 4.0000 4.9531 9.1214 12.2202 17.5879 21.9089 25.0865 公转周期之比: 0.2408 0.6152 1.0000 1.8809 11.8600 29.5000 84.0000 164.8000 248 水星 轨道长半径5790万km 偏心率0.206 周期87.969日 轨道加速度0.3350383( 00 ) 0.1452248( 1800 ) 0.240127( 平均值) 金星 轨道平均半径0.723天文单位偏心率0.007 周期224.7日 轨道加速度0.08178403( 00 ) 0.07950966( 1800 ) 0.080647( 平均值) 地球 轨道长半径149597870km 偏心率0.0167 周期365.25636 日 轨道加速度0.05130527( 00 ) 0.04798734( 1800 ) 0.049646( 平均值) 火星

轨道长半径1.524天文单位偏心率0.093 周期约687日 轨道加速度0.03219483( 00 ) 0.02216973( 1800 ) 0.027182( 平均值) 木星 轨道长半径5.2 天文单位偏心率0.048 周期11.86年 轨道加速度0.004619721( 00 ) 0.003812124( 1800 ) 0.0042159( 平均值) 土星 轨道长半径14亿公里偏心率0.055 周期29.5年 轨道加速度0.001889939( 00 ) 0.001512879( 1800 ) 0.0017014( 平均值) 天王星 轨道长半径29亿公里偏心率0.05 周期84年 轨道加速度0.0006550741( 00 ) 0.0005362398( 1800 ) 0.00059566( 平均值) 海王星 轨道长半径30天文单位偏心率0.01 周期164.8年 轨道加速度0.0003070913( 00 ) 0.0002950497( 1800 ) 0.00030107( 平均值) 冥王星 近日点29.8天文单位偏心率( 缺)取0.01 周期248年g≈1.99845*10-4

太阳系行星轨道及运行

太阳系行星轨道及运行 动画演示 本程序对太阳系行星、卫星运行情况进行动画演示。具有以下功能: 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 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

太阳系介绍

太阳系Solar System 一、太阳系的组成The composition of the solar system 太阳系由太阳、行星和其他物质组成。 The solar system is made up of the sun, the planets, and other objects. 四个较小的内行星,水星,金星,地球和火星,是陆地行星,主要由岩石和金属组成。 The four smaller inner planets, Mercury, Venus, Earth and Mars, are terrestrial planets, being primarily composed of rock and metal. 四个外行星都是巨大的行星,木星和土星是两个最大的气态巨星,主要由氢和氦组成。两个最外层的行星,天王星和海王星,都是冰巨星。 The four outer planets are giant planets. The two largest, Jupiter and Saturn, are gas giants, being composed mainly of hydrogen and helium; the two outermost planets, Uranus and Neptune, are ice giants.

二、太阳与行星的尺寸比较Size comparison of the Sun and the planets 太阳直径相当于地球直径的109倍,体积大约是地球的130万倍,其质量大约是地球的330000(33万)倍。 The diameter of the sun is 109 times the diameter of the earth, its volume is about 1 million 300 thousand times that of the earth, its mass is about 330 thousand times that of the earth. 太阳系的八个行星尺寸由大到小是木星、土星、天王星、海王星、地球、金星、

2020届高三地理复习讲解:太阳系模式图判读

2020届高三地理复习讲解:太阳系模式图判读 一、典题示例 阅读下图,探究下列问题。 (1)八大行星绕日公转的运动特征是什么? (2)与其他行星相比,地球的运动特征方面有无特殊之处?由此得到的结论是什么? (3)八大行星中表面温度最高和最低的分别是哪个?为什么? 答案: (1)同向性、共面性、近圆性。 (2)没有特殊之处。八大行星都可能存在生命。 (3)水星表面温度最高,海王星表面温度最低。距太阳越近,温度越高;距太阳越远,温度越低。 二、归纳总结 读图指导:阅读该图尤其要注意以下几方面的问题:①按距离太阳由近及远的顺序找出太阳系的八大行星,说出地球的“左邻右舍”,明确地球在太阳系中的位置;②知道小行星带位于火星轨道与木星轨道之间,即类地行星与巨行星轨道之间;③认识八大行星公转运动的同向性、共面性和近圆性特征;④认识哈雷彗星轨道具有扁长形的特点、自东向西的公转运动和彗尾长度与其距离太阳远近的关系。

三、跟踪训练 1.如图为古希腊时期托勒密体系示意图,读图回答1~2题。 1.该体系认为,宇宙的中心是() A.太阳B.地球 C.恒星天D.最高天 2.与现代科学相比,该体系的正确之处是() A.月球与火星和木星等是同一级别的天体 B.太阳与土星和木星等是同一级别的天体 C.火星和木星等天体具有公转的同向性 D.所有恒星与地球之间距离相同 解析:第1题,由图可以看出,地球位于体系的中心位置;第2题,月球属于卫星,而火星与木星属于行星,太阳属于恒星,不是同一级别的天体;火星与木星公转方向相同,都是自西向东。 答案:1.B 2.C 3.读图回答下题。

图中所示信息反映了行星的运动特征是() A.自转方向都一致 B.公转方向都一致 C.公转轨道都为正圆形 D.公转轨道面完全重合 解析:八颗行星的自转方向不完全一致;八颗行星绕日公转的方向相同,都是自西向东;八颗行星公转轨道形状近似圆形;八颗行星的绕日公转轨道面具有共面性,实际上是其他行星与地球公转轨道面的夹角较小,接近0°,但不等于0°,因此不是完全重合。 答案:B 4.阅读材料,回答下列问题。下图为太阳系模式图。 北航星是指为庆祝北航建校60周年,国家天文台经批准,把于1995年10月发现并命名为“北航星”的小行星定为永久编号为09830的小行星。 (1)八颗行星中,离太阳最近的是__A__,表示地球的是__G__。(填字母) (2)在图中适当位置画出“北航星”(小行星)的运动轨道并画出公转方向。

揭开天体行星运动轨道的奥秘

在太阳系中,天体行星的运行轨道都是椭圆的,这一点早已被科学观察所证实。但为什么行星的运动轨迹都会是椭圆的呢?几个世纪来,牛顿给出了计算椭圆轨道的公式,康德在其《宇宙发展史概论》中作出了一个不很明确的解答“行星的偏心率是自然界因力图使行星作圆周运动时,由于中间出现了许多情况,而不能完全达到圆形的结果”。而拉普拉斯在其《宇宙体系论》中是这样解释的“如果行星只受太阳的作用,它们围绕太阳运行的轨道是椭圆的……。”20世纪的爱因斯坦也只告诉我们“空间是弯曲的”,现代科学对于行星椭圆轨道形成的原因。如同“万有引力”一样,尚是一个未揭开的科学之迷。 天体行星的运动,不但轨道是椭圆的,而且运动的公转速度与自转速度也随着时空的变化而变化,显现出某些特殊的运动规律。这些规律,至今为止,人们尚未真正解开其中的奥秘。近年来,俄罗斯科学家,运用数学和控制论科研所的研究员提出“由于地球内部的固体核旋转速度快于地慢,从而影响了地球的自转速度”。有关专家指出“该科研成果解决了地球自转角速度发生变化的原因,解决了多年来困扰学术界的一个难题。” 天体行星运动轨道的变化规律,是因地球内部固体核与地慢流的运动差异而引起的变化吗?本人运用量子引力理论进行了诸多的推演,创新了一套天体行星运动系统的引力控制理论,它能全面地解释天体行星椭圆轨道的形成和运动速度变化的原因。该理论发现:太阳系行星运动的规律直接受银河系中心引力场引力控制,从而产生出太阳系轨道行星运动的自然法规。 18世纪法国大科学家拉普拉斯,在其所著的《宇宙体系论》中指出:“行星系里,除了使行星围绕太阳在椭圆轨道上运行的主要原因外,还存在其他特殊扰乱它们的运动,而且长时期里改变他们的轨道根数”。引自《宇宙体系论·第四章·行星围绕太阳运动的规律及其轨道的形状》(法)皮埃尔·西蒙·拉普拉斯著。 银河系中心引力场究竟怎样控制太阳系里的行星运动呢?拉普拉斯所预言的“还存在其它特殊原因”,而这个特殊原因就是“银河系引力的控制”。但拉普拉斯说“如果行星只受太阳的作用,它围绕太阳运行的轨道是椭圆的”,这句话从理论推演上说反了。实际上行星在围绕着太阳运行时,在不受银河系引力场控制的前提下,行星的运行轨道是正圆的而不是椭圆的。在后文的推演中,我们将会使读者真正认识到银河系中心引力场对太阳系的引力控制,对于运动行星来说是无法摆脱且真实地存在。

行星运行轨道的推导

行星运行轨道的推导 王晓琳,陈海军 (陇东学院 物理与电子工程学院,甘肃 庆阳 745000) 摘 要:从力的观点对行星运行轨道推导计算,通过求有心力,然后求出在有心力作用下的质点运动规律,进而对行星运行轨道形状展开讨论;再从能量的观点出发,得到行星运行轨道的一般Binet 方程,还可以从质点的运动微方程导出比耐方程,从而了解行星运行轨道的一般规律,即天体运行轨道的方程。 关键词:有心力,比耐公式,轨道方程 0引言 天体行星的运行轨道都是椭圆,这一点早已被科学观察所证实。但为什么行星的运动轨迹都会是椭圆的呢?1609年,德国著名的天文学家、数学家开普勒在研究古希腊天文学家托勒密的“地心说”和波兰天文学家哥白尼的“日心说”的基础上,提出了“开普勒定律”,描述了行星绕太阳运动的规律,其中开普勒第一定律,即轨道定律,认为每一行星沿一个椭圆轨道环绕太阳,而太阳则处在椭圆的一个焦点中。几个世纪来,牛顿给出了计算椭圆轨道的公式,康德在其《宇宙发展史概论》中做出了一个不很明确的解答 “行星的偏心率是自然界因力图使行星作圆周运动时,由于中间出现了许多情况,而不能完全达到圆形的结果 ”。而拉普拉斯在其《宇宙体系论》中是这样解释的“如果行星只受太阳的作用,它们围绕太阳运行的轨道是椭圆的 ……。”20世纪的爱因斯坦也只告诉我们“空间是弯曲的 ”, 现代天文学研究表明,当今人类所能观察到的离地球最远的距离是200亿光年,但这并不是宇宙的边缘,而宇宙的一切天体,一切一切星系的运行,都有着特定的森严的规律,如月球绕地球旋转,地球绕太阳旋转,太阳系绕银河系旋转,银河系绕室女星系旋转等等,万物各成其形,各行其道,这是当代一切科学家共同确认的。 本文首先从力的角度进行讨论 1用力的观点来推导轨道 1.1有心力 各大行星的运行轨道都是绕太阳做椭圆运动的,因为万有引力的作用,一般而言,若运动质点所受的力作用线始终通过某一个定点,则该质点所受的力是有心力。 在平面极坐标系中,质点的运动微分方程为: )2()()(2==+==-θ θθθF r r m r F F r r m r 对( 1)的第二式进行第一积分,得0)(r 12=θ r d d m t

太阳系行星运行模拟C程序语言

太阳系行星运行模拟 组员: 2011年9月2日

概述 太阳系(Solar System)就是我们现在所在的恒星系统。它是以太阳为中心,和所有受到太阳引力约束的天体的集合体:8颗行星冥王星已被开除、至少165颗已知的卫星,和数以亿计的太阳系小天体。这些小天体包括小行星、柯伊伯带的天体、彗星和星际尘埃。广义上,太阳系的领域包括太阳、4颗像地球的内行星、由许多小岩石组成的小行星带、4颗充满气体的巨大外行星、充满冰冻小岩石、被称为柯伊伯带的第二个小天体区。在柯伊伯带之外还有黄道离散盘面、太阳圈和依然属于假设的奥尔特云。 模拟太阳系不仅仅是完成作业,也能让我们更近一步的了解太阳系,拓广知识面,对行星的运行有基本的感性和理性感知。增加我们对宇宙探索的渴望,可能培养出又一批天文学家。 OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。 OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。它具有七大功能: 1.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数。 2.变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、变比镜像四种变换,投影变换有平行投影(又称正射投影)和透视投影两种变换。其变换方法有利于减少算法的运行时间,提高三维图形的显示速度。 3.颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Index)。 4.光照和材质和镜面光(Specular Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。5:纹理映射(Texture Mapping)。利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。6:位图显示和图象增强图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、反走样(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可使被仿真物更具真实感,增强图形显示的效果。7:双缓存动画(Double Buffering)双缓存即前台缓存和后台缓存,简言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。此外,利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur)等特殊效果。从而实现了消隐算法。 具体实现 利用VC6.0和OpenGL绘制太阳系模拟,以最简单的方式,新建一个win32 console application,加入以下代码: #include #include #include #include "gl/glut.h" //行星 GLfloat rot0 = 30.0; GLfloat rot1 = 0.0;

探索星空的奥秘——太阳系行星手工

幼师宝典 https://www.360docs.net/doc/d07841653.html, 探索星空的奥秘——太阳系?星?? 太阳是银河系较典型的恒星,提及银河系就不得不说?说太阳系了,太阳系以太阳为中?,包括???星,5颗矮?星和数以亿计的太阳系?天体,以往也只能在图?或视频中领略或美丽或神秘的太系?星和?天体,今天?编就通过??把远在天边的星球拉到眼前来,?起来感受下吧! ?星制作?法 泡沫球?星 选取?种颜料为泡沫球上?。选取相同?调的颜料绘制纹理。最后再?贴画等装饰?下,?个美美的星球就做好了。

彩泥?星 先??个颜?的彩泥包裹泡沫球来打底,然后再参照星球的图??其它颜?的彩泥做出纹理,?个个星球模型就做好了,或者?朋友们可以发挥创造?和想象?来创造出 ?个特别的星球,把它命名成??的名字。

光盘七彩?星 从泡沫球的顶部开始,由上?下?圈?圈给泡沫球涂上不同的颜?,在晾?之前再撒上各?的亮?来装饰,然后,在?分之?处把泡沫球切开,把光盘放在中间,两部分

泡沫球??签连结,这样,?个七彩的?星就诞?了!

太阳系?? ?果太阳系?? 找?个深蓝?的盘?,把你所能找到的?果或去?或切开后摆在盘?中,地球的?颗颗?星就出来啦:太阳—橘?,?星—红葡萄,?星—芹菜,地球—猕猴桃,?星—草莓,?星—?肠,?星—切达?酪,天王星—奶酪,海王星—?腿,冥王星—??,最后再???的奶酪装点?下盘?,就?功告成了!果盘做成这样,会不会更有?欲? (注意:冥王星现已不属于太阳系中???星之列,?是?颗矮?星) 或者把酸奶装进袋??,利?袋?的??在盘??画出?星的运?轨道,再把?果做的?星放在相应的轨道上,?个??味俱全的太阳系就完成了!

太阳系里八大行星公转轨道不在同一个平面上

太阳系里八大行星公转轨道不在同一个平面上 1、水星最接近太阳,是太阳系中最小最轻的行星。基本参数 轨道半长径:5791万千米(0.38 天文单位) 公转周期:87.70 天 平均轨道速度:47.89 千米/每秒 轨道偏心率:0.206 轨道倾角:7.0 度 行星赤道半径:2440 千米 质量(地球质量=1):0.0553 密度:5.43 克/立方厘米 自转周期:58.65 日 卫星数:无 公转轨道: 距太阳57,910,000 千米(0.38 天文单位) 2、金星八大行星之一,中国古代称之为太白或太白金星。它有时是晨星,黎明前出现在东方天空,被称为“启明”;有时是昏星,黄昏后出现在西方天空,被称为“长庚”。金星是全天中除太阳和月亮外最亮的星,犹如一颗耀眼的钻石,于是古希腊人称它为阿佛洛狄忒--爱与美的女神,而罗马人则称它为维纳斯--美神。 基本参数 公转周期:224.701天 平均轨道速度:35.03 千米/每秒 轨道偏心率:0.007 轨道倾角:3.4 度 赤道直径:12,103.6千米 直径:12105千米 质量(地球质量=1):0.8150 密度:5.24 克/立方厘米 卫星数量:0 公转半径:108,208,930 km(0.72 天文单位) 表面面积:4.6亿平方千米 自转时间:243.02天 逃逸速度:10.4 千米/秒 3、地球是距太阳第三颗,也是第五大行星,基本参数 轨道半径: 149,600,000 千米(离太阳1.00 天文单位) 行星直径: 12,756.3 千米 质量: 5.9736e24 千克 赤道引力(地球=1) 1.00 逃逸速度(公里/秒) 11.2

Matlab动画模拟太阳系行星运动

M a t l a b动画模拟太阳 系行星运动 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

Matlab动画模拟太阳系行星运动 figure('name','星系演示');%设置标题名字 pausetime=.02;%设置暂停时间 set(gca,'xlim',[-50 50],'ylim',[-50 30],'zlim',[-50 50]); set(gcf,'doublebuffer','on') %消除抖动 xlabel('x轴'),ylabel('y轴'),zlabel('z轴'); axis equal; grid on; view([3 5 2]); hold on a=[ 20 30 50 60 80 100 90];b=[8 12 18 26 45 55 70 90 30]; omga=[4 1 1];r=[ 3 ];%长轴,短轴,角速度,球体半径 c=sqrt(a.^2-b.^2);h=pi/18;h1=pi/10;f=pi/9;g=pi/8; aby=[h h 0;h1 h 0;h h 0;h h 0;h h 0;h h 0;h g 0;h h h;g 0 g];%每个轨道平面倾斜角度,偏移设置 %colo={'y','m','b','m','r','c','b','b'}; [X,Y,Z]=sphere(40); surf(5*X,5*Y,5*Z);colormap(autumn) %设置太阳 light ('position',[1 0 2],'style','infinite') lighting phong material shiny t=0:*pi:50*pi; t'; num=length(a); for n=1:num x(:,n)=a(n)*cos(omga(n)*t)+c(n); y(:,n)=b(n)*sin(omga(n)*t); z(:,n)=0*t; %计算未经轨道平面角度倾斜的轨道位置 xuanz(:,:)=[1 0 0;0 cos(aby(n,1)) -sin(aby(n,1));0 sin(aby(n,1)) cos(aby(n,1))]*[cos(aby(n,2)) 0 sin(aby(n,2));0 1 0;-sin(aby(n,2)) 0 cos(aby(n,2))]*[cos(aby(n,3)) -sin(aby(n,3)) 0;sin(aby(n,3)) cos(aby(n,3)) 0;0 0 1]; %每个轨道平面倾斜 计算

太阳系八大行星之一 火星介绍

太阳系八大行星之一---火星介绍

火星是太阳系中距离太阳第四近的行星,它大约是地球的一半大,自转周期比地球的稍长一点。火星绕太阳转一圈需要地球上687天,它的季节大约是地球季节的两倍长。火星有两个极冠。北极冠比南极冠又大又冷。两颗小卫星---火卫一与火卫二绕着火星旋转。 火星的特征是有些像干涸的河床和山洪暴发水渠一样的东西。这些特征可能是表层下的冰融化,并被偶然的火山活动带出来。这些水在汽化之前可能暂时淹没火星表面。另一种解释是:火星上温暖和温润的气候将其表面腐蚀。 发射到火星的宇宙飞船发现:火星光秃、荒凉且充满弹坑的表面会出现经常性的强沙尘暴。火星上几乎没有氧气和液态水,而且水平面上的紫外线能将任何生命体杀死。测得火星上下午的温度是-29摄氏度,晚上的温度是-84摄氏度。 火星北半球的两个最明显特点是有一个24千米高的火山,名为“奥林匹斯”火山,它比太阳系中任何火山都大。还有一个3220千米长的峡谷,名为“水手”号山谷,它是美国“大峡谷”的26倍长、3倍深。火星南半球的显着特点是有一条古老的峡谷,它以前很长并充满了熔岩,而它现在是一片又大又亮且充满尘埃的地域。

美国第一个火星探测器---“水手”四号于1965年飞越火星。它发回了22张火星照片,让我们首次看到火星坑坑洼洼的表面。它还显示出火星稀薄的大气主要由二氧化碳组成,火星表面的气压还不到地球的1%。1969年发射的“水手”六号与“水手”七号拍摄了201张新的火星照片,而且还更加详细的测量了火星结构及其大气和表面的成分。它们检测出这颗行星的极冰冠是由薄雾、干冰和云构成。 1997年之前,与火星接触最近和最直接的探测器是美国于1976年发射的“海盗”1号和“海盗”2号。每个“海盗”号宇宙飞船都由一颗人造卫星和一个着陆车构成。1976年7月20日,“海盗”1号首次成功地在火星上实现软着陆。软着陆指的是飞船完整无缺的着陆。过了不久,“海盗”2号登上了火星的另一端。两个着陆车上的摄像机拍摄到一些绣色的岩石和飘石,还有略带红色的天空。这种绣色是由火星土壤中的氧化铁造成的。着陆车采取的土壤样本表明火星过去和现在都没有生命存在。 1996年8月初,美国航空航天宇航局领导的9人研究组探测到了“海盗”1号和“海盗”2号在火星上没有探测到的东西,它可能是远古火星生命存在的证据。1984年,美国科学家在南极洲发

太阳系九大行星介绍

太阳系九大行星介绍 一个帮助你想象太阳系中各成员相对大小的方法是:将实际图大小缩小十亿倍(1e9),这样地球直径大约为1.3厘米(一颗葡萄的大小);月球轨道宽则在一个成人脚印外;太阳直径则为1.5米(大约一个人高),离地球150米(相当于一个街区);土星直径15厘米(一个大葡萄轴的大小),离太阳五个街区远;土星(桔子般大小)则离太阳十个街区远;天王星和海王星(柠檬)离太阳分别为20及30街区远;一个人在此情况下的比例为一个原子;最近的一颗恒星将在40000公里以外。 在上面插图中未显示的是大量的栖居在太阳系中的小物体:行星的卫星;大量的绕太阳公转的小行星(小石块构成),大多数在火星及土星之间,其他则分散在各个角落;在太阳系内延大大延伸的轨道运动的彗星(小冰块构成),对黄道面来讲具有上下随机的运动方向。行星卫星绕轨道运行时同行星般大致与黄道同一平面,很少有例外,但通常彗星与小行星不是这样。 分类 这些物体的分类是次要的争论。按传统说法,太阳系被分为行星(绕太阳公转的大物体),它们的卫星(如月球,绕行星公转的各种大小的星体),小行星(小型的密集的绕太阳公转的星体)和彗星(小个体的冰质的绕高度偏心轨道公转的星体)。不幸的是,太阳系远比这里提到的复杂: 有几个卫星比冥王星大,并有两个大于水星; 有几个小卫星很有可能是被吸引到的小行星; 彗星有时与小行星进行区别; Kuiper带物体和别的类似Chiron的物体运行不太符合计算; 地球/月球和冥王星/冥卫一的运动系统有时被认为是“双星系统”。 别的分类是以化学组成为基础的,或以起源假说为基础,这个正在试图以自然规律加以证实,但它们常常由于太多的级别或太多的例外而终止使用。大多数星体是独一无二的;我们当前所理解的是不足以建立清楚的分类的。在随后的几页,我将使用常用的分类。 这九大行星通常按以下几个方法分类: 根据组成: 固态的由石头构成的行星:水星,金星,地球和火星: 固态行星主要由岩石与金属构成,高密度,自转速度慢,固态表面,没有光环,卫星较少。较大的气态行星:木星,土星,天王星和海王星: 气态行星主要由氢和氦构成,密度低,自转速度快,大气层厚,有光环和很多卫星。 冥王星。 根据大小: 小行星:水星,金星,地球,火星和冥王星。 小行星的直径小于13000公里。 巨行星:木星,土星,天王星和海王星。 巨行星的直径大于48000公里。

行星的轨道和位置

行星的轨道和位置 高路 (船舶海洋与建筑工程学院 5120109107) 一、背景介绍 16世纪以前,人们都认为行星绕太阳旋转的轨迹是圆。17世纪初,在丹麦天文学家T.Brache观察工作的基础上,Kepler提出了震惊当时科学界的行星运动三大定律: 1.行星运行的轨道是以太阳为一个焦点的椭圆; 2.从太阳指向某一行星的线段在单位时间内扫过的面积相等; 3.行星运动周期的平方与其轨道椭圆长轴的立方之比值是不随行星而改变的常数。 对这三条定律的分析和研究导致Newton发现了著名的万有引力定律,而同时,应用万有引力定律,Kepler的行星运动三大定律得到了理论上的推导。由于行星间引力的存在,基于万有引力定律的计算表明:行星的轨道应该是稍偏于以太阳为焦点的椭圆。计算结果与天文学家测得的实际结果在木星、土星等行星的轨道上相当吻合,然而在天王星的轨道上却存在着不容忽视的误差。当时人们只发现了太阳系的七大行星,天王星是其中最后发现的(1781年),于是科学家们猜想:还存在影响天王星运行轨道的其他行星。1864年,Adams(英)与Leverrier(法)分别推算出这颗可能存在的行星的位置,同年,天文学家就在他们推算的方位上找到了海王星。由于这颗行星的发现首先依赖于根据万有引力定律的计算,因此它被称为“铅笔尖上的行星”。此后,仍是类似的猜想和推算导致了质量较小的冥王星被发现,这充分说明了Newton万有引力定律这样一个数学模型的正确性和重要性。 二、实际问题 水星距太阳最远处(远日点)距离为6.982×1010m,此时地球绕太阳运动(公转)的速度为3.886×104m/s,试求: (1)地球距太阳的最近距离; (2)地球绕太阳运转的周期; (3)在从远日点开始的第50天结束时,地球的位置与速度。 三、数学模型 设太阳中心所在位置为复平面之原点O,在时刻t,行星位于 ()θi re Z=……………………………(1) t

太阳系行星及其卫星介绍

Other Planets and Their Moons 水星(Mercury) ?38%地球半徑 ?隕石坑多(與月球很相像) ?離太陽最近的行星 ?幾乎沒有大氣層為什麼? 少數氣體來自岩石擠壓, 以及太陽風(主要是氫與氦) ?日、夜溫差大350o C to -170o C ?太陽潮汐力(公轉88天兩次,自轉58.7天三次)

1974 by Mariner 水星的兩極有些隕石坑沒有日照,似乎有冰。是彗星撞擊所致,還是來自水星內部的氣體造成的? Mercury 和地球一樣 有個鐵核心;水星是 太陽系中鐵含量最豐 富的行星

2005 Earth flyby Messenger任務 MESSENGER launched from Cape Canaveral Air Force Station, Fla., on August 3, 2004. It returned to Earth for a gravity boost on August 2, 2005, then will fly past Venus twice, in October 2006 and June 2007. The spacecraft uses the tug of Venus’gravity to resize and rotate its trajectory closer to Mercury’s orbit. Three Mercury flybys, each followed about two months later by a course correction maneuver, put MESSENGER in position to enter Mercury orbit in March 2011. During the flybys –set for January 2008, October 2008 and September 2009 –MESSENGER will map nearly the entire planet in color, image most of the areas unseen by Mariner 10, and measure the composition of the surface, atmosphere and magnetosphere. It will be the first new data from Mercury in more than 30 years –and invaluable for planning MESSENGER’s yearlong orbital mission. https://www.360docs.net/doc/d07841653.html,/

相关文档
最新文档