月球引力常數(shù)范文

時(shí)間:2023-04-04 15:40:04

導(dǎo)語(yǔ):如何才能寫好一篇月球引力常數(shù),這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。

月球引力常數(shù)

篇1

1、首先,開普勒有三大天文定律(都是針對(duì)行星繞太陽(yáng)運(yùn)動(dòng)的) 行星運(yùn)動(dòng)第一定律(橢圓定律): 所有行星繞太陽(yáng)的運(yùn)動(dòng)軌道是橢圓,太陽(yáng)位于橢圓的一焦點(diǎn)上,行星運(yùn)動(dòng)第二定律(面積定律): 聯(lián)接行星和太陽(yáng)的直線在相等的時(shí)間內(nèi)掃過的面積相等。 行星運(yùn)動(dòng)第三定律(調(diào)和定律)。

2、行星繞太陽(yáng)運(yùn)動(dòng)的公轉(zhuǎn)周期的平方與它們的軌道半長(zhǎng)徑的立方成正比,牛頓的萬有引力定律是在調(diào)和定律的基礎(chǔ)上提出的假設(shè),并且被科學(xué)觀測(cè)所驗(yàn)證。萬有引力的內(nèi)容用公式表示就是: F=G*M1*M2/(R*R) 開普勒的調(diào)和定律認(rèn)為: T*T/(R*R*R)=常數(shù) 如果我們考慮兩個(gè)做星體運(yùn)動(dòng)的星體,以一個(gè)質(zhì)量為M1的星體做參考系,那么可以看成質(zhì)量為M2的星體繞M1做圓周運(yùn)動(dòng),而它們之間的萬有引力提供了它們做圓周運(yùn)動(dòng)的向心力。

3、M2*(W*W)*R=G*M1*M2/(R*R) 而W=2*3.14/T帶入上面的式子就可以得到T平方比上R的三次方是定制,也就是開普勒定律所闡述的內(nèi)容,這樣就證明了牛頓引力定律. 其實(shí)科學(xué)的講,這不叫證明,因?yàn)榕nD定律是牛頓想出來的,再通過一系列科學(xué)的觀測(cè)數(shù)據(jù)來核實(shí)的,并不能從根源來證明,開普勒也是實(shí)驗(yàn)天文學(xué)家,他是通過對(duì)天文資料的長(zhǎng)期觀測(cè)總結(jié)猜想出他的三大定律的,物理學(xué)的發(fā)現(xiàn)往往就是通過猜想的,答案補(bǔ)充 G,是萬有引力系數(shù),是常數(shù),是規(guī)定死的,=6.67乘以10的負(fù)11次方,牛米方除以千克方答案補(bǔ)充 牛頓知道有個(gè)引力常數(shù),但是他沒測(cè)試出來,測(cè)試出來的是英國(guó)物理學(xué)家卡文迪許,通過鉛球試驗(yàn)測(cè)試出G的數(shù)值答案補(bǔ)充 假定維持月球繞地球運(yùn)動(dòng)的力與使得蘋果下落的力真的是同一種力的話,同樣遵從平方反比的規(guī)律,那么,由于月球軌道半徑約為地球半徑的60倍,所以月球軌道上一個(gè)物體受到的引力,比它在地面附近時(shí)受到的引力要小,前者只有后者的60的平方分之一.根據(jù)牛頓第二定律,物體在月球軌道上運(yùn)動(dòng)時(shí)的加速度,也就是月球公轉(zhuǎn)的向心加速度,也就應(yīng)該是它在地面附近下落時(shí)的加速度的60的平方分之一答案補(bǔ)充 知道月球與地球的距離,月球公轉(zhuǎn)的周期,從而能夠算出月球運(yùn)動(dòng)的向心加速度.答案補(bǔ)充 數(shù)據(jù)表明,地面物體所受地球的引力,月球受到地球的引力,以及太陽(yáng)與行星間的引力,是遵從同樣的規(guī)律,所以,證明了萬有引力的存在答案補(bǔ)充 m括號(hào)2派除以T括號(hào)的平方乘以R=mg,化簡(jiǎn)得4派方R除以T方=a。

(來源:文章屋網(wǎng) )

篇2

High School Physics Related to "Celestial Movement"

Problem-solving Analysis

LI Xing

(Lanzhou No.58 Middle School, Lanzhou, Gansu 730000)

Abstract Discovery of the law of gravity is one of the greatest achievements of natural science. In this paper, starting from the practical examples, summarized the law of gravity several types and basic methods to solve these problems in practical application, describes the "piecemeal" and other physical ideas.

Key words centroid spacing; orbital radius; planet radius; rotation period

萬有引力定律揭示了天體運(yùn)動(dòng)的規(guī)律,在天文學(xué)上和宇宙航行的計(jì)算方面有著廣泛的應(yīng)用。學(xué)生在這一章節(jié)的學(xué)習(xí)中,由于公式較為繁雜,解法靈活多變,對(duì)一些相近的概念容易混淆,從而出現(xiàn)解題失誤。在多年從事高中物理一線教學(xué)的過程中,筆者整理總結(jié)了兩類相近的物理量,加以對(duì)比剖析,以求能幫助學(xué)生走出誤區(qū),正確地掌握解題方法。

1 三個(gè)距離的聯(lián)系與區(qū)別

在這一章中,很多題目要求根據(jù)一些環(huán)繞天體(如人造衛(wèi)星等)來解決中心天體的某些參數(shù)。在這一類問題中,有關(guān)星球半徑、軌道半徑和質(zhì)心間距這三個(gè)長(zhǎng)度物理量的處理,往往成為了一些學(xué)生解題中的困惑之處。不能正確處理這三個(gè)長(zhǎng)度關(guān)系,是學(xué)生在解決這類問題中常常出現(xiàn)的一個(gè)易錯(cuò)點(diǎn)。

首先我們來對(duì)三種長(zhǎng)度物理量來進(jìn)行區(qū)分。

(1)質(zhì)心間距:萬有引力定律告訴我們:自然界中任何兩個(gè)物體都相互吸引,引力的大小與物體質(zhì)量乘積成正比,與它們距離的二次方成反比。從公式 = 可看出,這里的指的是兩物體質(zhì)心間的間距。

(2)軌道半徑:本章內(nèi)容有很多問題就是讓環(huán)繞天體僅在中心天體的萬有引力下做勻速圓周運(yùn)動(dòng),由向心力公式 = 可看出,這里的是指物體做勻速圓周運(yùn)動(dòng)的軌道半徑。

(3)星球半徑:在求解某一未知天體的密度問題中,由球體體積公式 = 引出第三個(gè)長(zhǎng)度,此處的是指星球半徑。同時(shí),在有些問題中由于已知條件里包含了某一星球表面的重力加速度,往往要利用黃金代換 = (注:該等式并非一級(jí)公式,應(yīng)用時(shí)應(yīng)寫出原始公式)將未知量用已知量表示,也就要求引入星球半徑。

綜上,只有正確理解了這三個(gè)距離的關(guān)系,才不會(huì)在解題時(shí)出現(xiàn)約分錯(cuò)誤。

應(yīng)注意到:雙星問題模型中,三者皆不相等;環(huán)繞天體繞中心天體在高軌道上做勻速圓周運(yùn)動(dòng)時(shí),圓周運(yùn)動(dòng)的軌道半徑等于環(huán)繞天體和中心天體質(zhì)心間距;在近地衛(wèi)星模型中,三者相等。下面我們通過幾個(gè)具體事例來分析。

例1:(2010年全國(guó)卷Ⅰ)如圖1,質(zhì)量分別為m和M的兩個(gè)星球A和B在引力作用下都繞O點(diǎn)做勻速圓周運(yùn)動(dòng),星球A和B兩者中心之間的距離為L(zhǎng)。已知A、B的中心和O三點(diǎn)始終共線,A和B分別在O的兩側(cè)。引力常數(shù)為G。

圖1

(1)求兩星球做圓周運(yùn)動(dòng)的周期;

(2)在地月系統(tǒng)中,若忽略其它星球的影響,可以將月球和地球看成上述星球A和B,月球繞其軌道中心運(yùn)行的周期記為T1。但在近似處理問題時(shí),常常認(rèn)為月球是繞地心做圓周運(yùn)動(dòng)的,這樣算得的運(yùn)行周期記為T2。已知地球和月球的質(zhì)量分別為5.98??24 kg和7.35??22 kg。求T2與T1兩者平方之比(結(jié)果保留3位小數(shù))。

【解析】:(1)這是一道典型的雙星問題。該類問題的特點(diǎn)是兩星球的周期相等,并在彼此之間的萬有引力作用下做勻速圓周運(yùn)動(dòng),故而向心力也相等。但解題易錯(cuò)點(diǎn)在于兩星球的質(zhì)心間距并不等于各自做勻速圓周運(yùn)動(dòng)運(yùn)動(dòng)的軌道半徑。即上文提到的 ≠ 。

設(shè)星球A、B各自做圓周運(yùn)動(dòng)的半徑分別為、,周期為T,則根據(jù)萬有引力定律對(duì)A衛(wèi)星分析可知: = ,式中 = ( + );又 = ,聯(lián)立解得: = 。

(2)T2的求解方法中,就涉及到了環(huán)繞天體繞中心天體做勻速圓周運(yùn)動(dòng)這類模型,其中兩星球的質(zhì)心間距等于環(huán)繞天體做勻速圓周運(yùn)動(dòng)的軌道半徑,即上文提到的 = 。

設(shè)地球和月球的球心間距為,地球和月球質(zhì)量分別為、則由第一問可知: = ;當(dāng)月球繞地球做勻速圓周運(yùn)動(dòng)時(shí),地球?qū)υ虑虻娜f有引力提供了月球繞地球做勻速圓周運(yùn)動(dòng)的向心力,即有: = ,解得: = ;代入數(shù)據(jù)解得:()2 = 1.012。

【點(diǎn)評(píng)】:通過比對(duì)不難發(fā)現(xiàn),該題涉及的問題即為上文中提到的質(zhì)心間距以及軌道半徑這兩種不同的距離之間的差別。在解題時(shí)應(yīng)格外謹(jǐn)慎,不能盲目套用公式。

例2:在某行星上以初速度自地面豎直向上彈射一個(gè)小球,用秒表測(cè)得小球經(jīng)時(shí)間落回地面,已知該行星的半徑為,如果在該行星上發(fā)射一顆衛(wèi)星,則衛(wèi)星在該行星表面附近環(huán)繞的周期為多少?(行星表面無空氣)

【解析】:分析題目可知,該衛(wèi)星是近地衛(wèi)星模型。在上文中提到過,對(duì)近地衛(wèi)星模型而言,衛(wèi)星和星球的質(zhì)心間距等于該衛(wèi)星的軌道半徑,也等于該星球的半徑。即 = = 。

設(shè)該行星表面的重力加速度為,質(zhì)量為,衛(wèi)星質(zhì)量為。則由運(yùn)動(dòng)學(xué)規(guī)律: = ;在星球表面,有: = ;衛(wèi)星做勻速圓周運(yùn)動(dòng)的向心力由行星對(duì)其的萬有引力提供,故有: = ;又由題意: = = ,聯(lián)立解得: = = = 。

【點(diǎn)評(píng)】:在這道題中,所涉及的長(zhǎng)度關(guān)系是上文中提到的質(zhì)心間距、星球半徑、軌道半徑三者相等的情況。這類問題的解決過程中,要特別注意黃金代換式的合理應(yīng)用。

2 兩個(gè)周期的區(qū)別

(1)公轉(zhuǎn)周期:公轉(zhuǎn)周期是行星繞恒星或是衛(wèi)星繞行星轉(zhuǎn)動(dòng)一周所用的時(shí)間。衛(wèi)星的公轉(zhuǎn)周期一般都由萬有引力提供向心力這條思路求解,即由 = 解得,又由于公轉(zhuǎn)周期一般比較容易測(cè)得,有時(shí)候也可通過反向代入,解出有關(guān)中心天體的一些具體參數(shù)。

(2)自轉(zhuǎn)周期:自轉(zhuǎn)周期是一個(gè)天體沿自轉(zhuǎn)軸自轉(zhuǎn)一周所需的時(shí)間。

要注意到二者一般并不相等,比如地球的公轉(zhuǎn)周期約為365天,但自轉(zhuǎn)周期僅有24小時(shí)。某星球自轉(zhuǎn)周期求解是學(xué)生的一大難點(diǎn),很多學(xué)生在解題過程中也容易混淆二者。以下面為例:

例3:已知地球質(zhì)量為,半徑為,地球表面赤道處重力加速度為,萬有引力常量為。試根據(jù)以上數(shù)據(jù)求出地球自轉(zhuǎn)周期。

【解析】:很多同學(xué)會(huì)直接由 = 得出錯(cuò)解 = ;實(shí)際上這里解出的T并非地球自轉(zhuǎn)周期,而是近地衛(wèi)星貼著地球表面在飛行時(shí)的公轉(zhuǎn)周期。事實(shí)上,題目中給的條件“赤道處的重力加速度”是解決本題的關(guān)鍵。我們知道,在地球表面,萬有引力分為了兩個(gè)分力,其一是重力,其二是物體隨地球自轉(zhuǎn)的自轉(zhuǎn)向心力。應(yīng)有,僅僅在地球的赤道處,由于這三個(gè)力都指向地心,所以可以將該矢量式寫成標(biāo)量式。其中,利用自轉(zhuǎn)向心力可以求解地球自轉(zhuǎn)周期。

設(shè)地球自轉(zhuǎn)周期為,赤道處有一質(zhì)量為的物體正隨地球自轉(zhuǎn),則應(yīng)有 = + ,即 = + ,解得: = 。

【點(diǎn)評(píng)】:這道題目是一道典型的自轉(zhuǎn)周期的求法的題目。通過這道題目的講解,力求能讓學(xué)生對(duì)兩種不同的運(yùn)動(dòng)周期加以區(qū)分,在解題時(shí)能夠選擇正確合理的方法進(jìn)行求解。

練習(xí):質(zhì)量為的物體在某星球“赤道”的重力比“兩極”小10%,該星球的自轉(zhuǎn)周期為,則當(dāng)該行星的自轉(zhuǎn)角速度為多少時(shí),物體能在“赤道”上飄起來?

【解析】:在星球上,兩極處的萬有引力完全等于重力,赤道處的萬有引力等于重力和自轉(zhuǎn)向心力的代數(shù)和。已知自轉(zhuǎn)周期,即可以表示出自轉(zhuǎn)向心力,從而解出近地軌道上的萬有引力,由該萬有引力提供向心力,即可解出需要飄起來所對(duì)應(yīng)的角速度了。

= + , = 10 ,又物體漂浮,即有 = ; = ,即10 = ,解得: = 。

篇3

關(guān)鍵詞:衛(wèi)星發(fā)射仿真;OpenGL;3D建模;可視化仿真;動(dòng)畫效果

中圖分類號(hào):TP391.9文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2011)16-3933-03

Research and Implementation on Simulation System of Satellite into Orbit Based on OpenGL

ZHANG Tong

(Department of Computer Science, Tongji University, Shanghai 201804, China)

Abstract: Describe the development and implementation on the OpenGL-based satellite launching orbit simulation system, including program design framework, the specific module package, object model design, satellite design and implementation process of the visual, animation effects, and so on. Realize the dynamic simulation of satellite launched into orbit.

Key words: simulation of satellite launch; OpenGL; 3D modeling; visual simulation; animation effects

目前,隨著我國(guó)空間信息科學(xué)技術(shù)研究的深入,在衛(wèi)星發(fā)射中引入三維可視化圖形技術(shù)已是必然的趨勢(shì)。因此,結(jié)合當(dāng)前的要求,開發(fā)有真實(shí)感的衛(wèi)星發(fā)射至入軌過程仿真軟件,具有一定的實(shí)用意義。

SGI公司推出的OpenGL三維圖形庫(kù)因其易于使用而且功能強(qiáng)大而成為高性能圖形和交互式視景處理的標(biāo)準(zhǔn)[1]。但OpenGL沒有提供高級(jí)命令函數(shù)來定義復(fù)雜的三維模型,而只提供點(diǎn)、線、多邊形的方式來構(gòu)建三維模型;雖然提供了創(chuàng)建復(fù)雜幾何物體的機(jī)制,卻未提供描述復(fù)雜的幾何物體以及建立復(fù)雜幾何物體模型的手段,所以描述衛(wèi)星三維模型是一項(xiàng)艱巨的工作。采用借助三維建模軟件(3DSMAX)建造衛(wèi)星模型既有利于三維仿真,也有利于模型運(yùn)動(dòng)的計(jì)算和控制,可減少大量工作量。但3DS數(shù)據(jù)格式只能保存和轉(zhuǎn)換幾何信息,色彩,材質(zhì)等信息可能會(huì)在轉(zhuǎn)換時(shí)丟失,在程序的編寫過程中要對(duì)色彩和材質(zhì)等進(jìn)行處理。

本文在OpenGL三維圖形編程環(huán)境中,使用3D Max建立衛(wèi)星模型并將其導(dǎo)入OpenGL,調(diào)用OpenGL圖形庫(kù)的函數(shù),并通過對(duì)衛(wèi)星軌道方程的計(jì)算,設(shè)計(jì)天體模型,實(shí)現(xiàn)衛(wèi)星飛行過程的視覺設(shè)計(jì)和動(dòng)畫效果,達(dá)到衛(wèi)星發(fā)射至入軌過程的仿真目的。在實(shí)現(xiàn)過程中,使用了OpenGL提供的動(dòng)畫機(jī)制,是整個(gè)畫面看起來更流暢,更具有真實(shí)感。

1 衛(wèi)星軌道方程的計(jì)算

1.1 衛(wèi)星在軌運(yùn)行的無攝運(yùn)動(dòng)

若將地球或任何一個(gè)探測(cè)目標(biāo)天體(如大行星,小行星等)看成一個(gè)質(zhì)量密度分布均勻的球體,則它對(duì)繞其運(yùn)行的衛(wèi)星的引力作用可等效于一個(gè)質(zhì)點(diǎn),相當(dāng)于質(zhì)量全部集中在該天體質(zhì)心上,于是就構(gòu)成一個(gè)簡(jiǎn)單的二體系統(tǒng),一個(gè)中心天體和一個(gè)運(yùn)動(dòng)天體。以地球和人造衛(wèi)星為例,將坐標(biāo)系的原點(diǎn)放在地心上。討論人造衛(wèi)星相對(duì)地心的運(yùn)動(dòng),則衛(wèi)星運(yùn)動(dòng)方程可寫成:

(1)

其中 r 是衛(wèi)星相對(duì)于地心的位置向量,h 是衛(wèi)星的高度即地心距,μ = GM 是地心引力常數(shù),M 表示地球質(zhì)量。

1.2 二體問題的積分與軌道常數(shù)

研究?jī)蓚€(gè)質(zhì)點(diǎn)在萬有引力作用下的運(yùn)動(dòng)規(guī)律的問題被稱為二體問題。若將地球看成質(zhì)量密度分布均勻的球體,則它對(duì)繞其運(yùn)行的衛(wèi)星的引力作用可等效為一個(gè)質(zhì)點(diǎn),相當(dāng)于質(zhì)量全部集中在地球的質(zhì)心,即地心上,于是就構(gòu)成一個(gè)以地球?yàn)橹行奶祗w、衛(wèi)星為運(yùn)動(dòng)天體的簡(jiǎn)單二體系統(tǒng)。

二體系統(tǒng)的積分公式與軌道常數(shù)是本系統(tǒng)程序核心算法的基礎(chǔ)[2]。以下列出主要積分公式:

人造衛(wèi)星繞地球的運(yùn)動(dòng)為一平面運(yùn)動(dòng),相應(yīng)的動(dòng)量矩積分可寫成:

(2)

其中,h為面積速度常數(shù),R表示面積速度方向,它是衛(wèi)星運(yùn)動(dòng)平面的法向單位矢量。

人造地球衛(wèi)星運(yùn)行軌跡為橢圓,地心在橢圓的焦點(diǎn)上。以下為軌道積分之一,其中e和ω即兩個(gè)新的軌道常數(shù):

(3)

衛(wèi)星運(yùn)動(dòng)即在以上數(shù)學(xué)基礎(chǔ)上進(jìn)行研究。

2 程序設(shè)計(jì)框架

本程序以Visual C++6.0作為編程開發(fā)平臺(tái),調(diào)用OpenGL三維圖形庫(kù),使用3D Max建立衛(wèi)星模型并保存為3DS數(shù)據(jù)格式,將3D模型導(dǎo)入OpenGL,再通過坐標(biāo)的變換、渲染、紋理、光照、混合等功能,充分利用一些已有的模塊,實(shí)現(xiàn)衛(wèi)星發(fā)射至入軌過程的仿真。程序主體框架如圖1所示。

3 天體模型的設(shè)計(jì)與實(shí)現(xiàn)

3.1 繪制天體的父類設(shè)計(jì)

本系統(tǒng)中最終的衛(wèi)星發(fā)射至入軌過程的動(dòng)態(tài)顯示畫面中應(yīng)包含地球、太陽(yáng)、月亮、星空以及衛(wèi)星。除了衛(wèi)星,其他幾種景物的實(shí)現(xiàn)都可歸結(jié)為球體模型的構(gòu)建,星空的實(shí)現(xiàn)也需借助于球體:即將整個(gè)系統(tǒng)置于一個(gè)半徑很大的虛擬球體中,在此球體表面映射上星空的紋理,這樣在系統(tǒng)中任何角度都能看到星空的景象,并且具有一定的立體感?;谶@種實(shí)現(xiàn)上的需要,設(shè)計(jì)一個(gè)名為CModelObj的類作為其父類,通過C++提供的繼承機(jī)制,派生出所需要的子類。

根據(jù)OpenGL只提供基本幾何圖元(點(diǎn),線,多邊形)的繪制特性,球體設(shè)計(jì)的思路為:繪制多個(gè)四邊形,然后將其拼接起來。

具體實(shí)現(xiàn)方式為:在水平方向上將球體劃分為M圈(類似于地球的緯度分割),豎直方向上將球體劃分為N圈(類似于地球的經(jīng)度分割)。按照先從水平方向,再?gòu)呢Q直方向上循環(huán)繪制四邊形,共需要繪制M*N個(gè)四邊形。假設(shè)球體半徑為r,球的中心在坐標(biāo)原點(diǎn),坐標(biāo)系采用OpenGL中的右手坐標(biāo)系[3]。

假設(shè)球面上一個(gè)頂點(diǎn)A,AO與y軸的夾角為φ, AO在xoz平面的投影與z軸的夾角為θ,那么A點(diǎn)的坐標(biāo)為

(X = r*sinφ*sinθ,Y = r*cosφ,Z = r*sinφ*cosθ);

頂點(diǎn)A的法向量為( sinφ*sinθ, cosφ, sinφ*cosθ ),頂點(diǎn)的法向量用于實(shí)體光照模型中。對(duì)于第i行(0 ≤ i < N),第j列(0 ≤ j < M),φ和θ的取值為

φ = i*π/NCπ/2,θ = j*2*π/M

在頂點(diǎn)的計(jì)算中,不僅要計(jì)算頂點(diǎn)的坐標(biāo)和法向量,還需要計(jì)算該頂點(diǎn)的紋理坐標(biāo)。然后將頂點(diǎn)的計(jì)算結(jié)果保存在數(shù)組中,供以后調(diào)用。

3.2 天體模型的實(shí)現(xiàn)

地球、太陽(yáng)以及月球都是按照上述方法繪制。為了增加模型的真實(shí)感,使用了紋理貼圖,并且在地球增加了云層和大氣層,通過一個(gè)循環(huán)自增變量控制云層的移動(dòng),模擬真實(shí)自然界大氣層對(duì)光的折射。

云層在視覺上都是環(huán)繞在地球表面的半透明球體,因此也作為CModelObj的子類來處理。使用云層的紋理貼圖可以使其看起來更具真實(shí)感。另外,云層的透明性通過混合處理來實(shí)現(xiàn)。大氣層附著在云層,大氣的顯示顏色與觀察者的觀察方向、太陽(yáng)的位置以及地表位置有關(guān)。地球在自轉(zhuǎn)的同時(shí),也圍繞著太陽(yáng)公轉(zhuǎn),這意味著在不同時(shí)刻,地球表面被光源(太陽(yáng))照亮的地方都不同,但始終只有朝向太陽(yáng)的一面才能被照亮。

大氣層繪制的具體實(shí)現(xiàn)方法為:首先計(jì)算出觀察點(diǎn)的太陽(yáng)地平緯度(即地平線與太陽(yáng)的角度距離),如圖2所示。

在程序中,先通過地球的位置,觀察點(diǎn)的位置,和太陽(yáng)的位置,來確定AB與地球的切點(diǎn)O。步驟如下:

首先,計(jì)算地球中心到太陽(yáng)中心的向量EF;

其次,計(jì)算出觀察位置到地球中心的向量為eyeVec;

再次,通過向量EF,和向量eyeVec,計(jì)算向量T。T與前兩個(gè)向量處于同一平面,且為觀察位置與地球的切線方向。從而得到切點(diǎn)O。切點(diǎn)O的具體算法可以參考程序中的函數(shù)CGEllipsoidAtmosphereRender::ellipsoidTangent;

最后,通過計(jì)算AB與EF的叉積,計(jì)算太陽(yáng)地平緯度的余弦值。在后面的顏色計(jì)算中將使用地平緯度的余弦值。

計(jì)算出大氣的輪廓后,只需要在地球的繪制圓環(huán)即可,同樣使用四邊形拼接法來繪制。如果一個(gè)圓周用M個(gè)四邊形連接,一個(gè)圓環(huán)有N層,那么需要繪制N*M個(gè)四邊形[4]。

最后對(duì)頂點(diǎn)的顏色進(jìn)行處理,顏色的設(shè)置應(yīng)該有大氣層的厚度決定(大氣層的厚度不同,對(duì)光線的折射率不同,從而顯現(xiàn)出的顏色也就不同),并運(yùn)用亮度因子進(jìn)行亮度調(diào)節(jié)。最后的效果如圖3所示。

4 衛(wèi)星飛行過程的視覺設(shè)計(jì)及實(shí)現(xiàn)

在本程序的設(shè)計(jì)過程中,為了體現(xiàn)出衛(wèi)星發(fā)射后在太空中飛行的過程,將視點(diǎn)設(shè)置成跟蹤衛(wèi)星,即視點(diǎn)始終跟隨衛(wèi)星飛行?;谝韵翺penGL變換原理實(shí)現(xiàn):取景變換,模型變換,投影變換,視區(qū)變換[5]。因此,以pSendUp->xcam,pSendUp->ycam,pSendUp->zcam等變量為參數(shù)調(diào)用函數(shù)gluLookAt,此函數(shù)是實(shí)現(xiàn)視點(diǎn)跟蹤的關(guān)鍵[9]。

函數(shù)gluLookAt的函數(shù)體一共包括三組參數(shù),分別用于指定視點(diǎn)的位置,定義一個(gè)相機(jī)指向的參考點(diǎn)和指示那一個(gè)方向向上。首先,要選擇一個(gè)能得到預(yù)想場(chǎng)景的視點(diǎn),而參考點(diǎn)一般位于場(chǎng)景的中間位置(如果已經(jīng)將場(chǎng)景構(gòu)建在了原點(diǎn)處,那么參考點(diǎn)通常就是原點(diǎn))。如何確定向上的方向向量比較復(fù)雜[6]。以本程序的設(shè)計(jì)為例,在衛(wèi)星飛行過程中,該方向向量應(yīng)該始終垂直于機(jī)翼并向上。而當(dāng)衛(wèi)星到達(dá)預(yù)定軌道并顯示在軌飛行時(shí),則場(chǎng)景應(yīng)該在原點(diǎn),而且y軸的正方向向上。該函數(shù)在掃描全景時(shí)尤其有用。在x和y對(duì)稱的視圖體中,所指定的(eyex,eyey,eyez)點(diǎn)總是處在屏幕上圖像的中心點(diǎn)處。這樣就可以使用一系列的變換函數(shù),逐漸移動(dòng)該點(diǎn),從而實(shí)現(xiàn)對(duì)場(chǎng)景的全景掃描。gluLookAt函數(shù)的原型為:

void gluLookAt( GLdoubleeyex , GLdoubleeyey , GLdoubleeyez , GLdoublecenterx , GLdoublecentery , GLdoublecenterz , GLdoubleupx , GLdoubleupy , GLdoubleupz )。該函數(shù)定義一個(gè)視圖矩陣并將其右乘到當(dāng)前矩陣上,其結(jié)果返回給當(dāng)前矩陣。期望的視點(diǎn)由參數(shù)eyex,eyey,eyez指定,而參數(shù)centerx,centery,centerz指定期望視線上的任意一點(diǎn),通常取觀測(cè)場(chǎng)景中心的點(diǎn),這兩點(diǎn)就確定了視線的方向。參數(shù)upx,upy,upz指定向上的方向(即視圖體自下而上的方向)。

gluLookAt函數(shù)在本程序中的調(diào)用實(shí)例為:

gluLookAt(pSendUp->xcam,pSendUp->ycam,pSendUp->zcam,pSendUp->xmis,pSendUp->ymis,(pSendUp->zmis)/10,0.0f,1.0f,0.0f);

其中,參數(shù)pSendUp->xcam,pSendUp->ycam,pSendUp->zcam,能夠?qū)崿F(xiàn)自減運(yùn)算,從而實(shí)現(xiàn)衛(wèi)星位置和視點(diǎn)位置的不斷變換,以達(dá)到跟蹤的效果。試點(diǎn)追隨正在飛行的衛(wèi)星,并按y軸方向上升。

5 實(shí)現(xiàn)衛(wèi)星飛行的動(dòng)畫效果

5.1 基于OpenGL的動(dòng)畫實(shí)現(xiàn)

本系統(tǒng)中的衛(wèi)星飛行動(dòng)畫基于計(jì)算機(jī)動(dòng)畫中標(biāo)準(zhǔn)動(dòng)畫法和物理動(dòng)畫法完成,基于OpenGL的雙緩沖機(jī)制來實(shí)現(xiàn)。在顯示前臺(tái)緩沖內(nèi)容中的一幀畫面的同時(shí),后臺(tái)緩沖正在繪制下一幀畫面,當(dāng)繪制完畢,再將后臺(tái)緩沖的內(nèi)容顯示出來,這時(shí)前臺(tái)緩沖則又開始繪制下一幀畫面,如此循環(huán)往復(fù),屏幕上總是呈現(xiàn)顯示好的內(nèi)容,因此畫面看上去是連續(xù)的,這是一種類似于流水線的操作方式[7]。

為了模擬衛(wèi)星的飛行效果,在每?jī)蓭嬅嬷g坐標(biāo)平移和旋轉(zhuǎn)操作,即后一幀畫面可由前一幀畫面經(jīng)過平移和旋轉(zhuǎn)操作得到。平移和旋轉(zhuǎn)分別由一個(gè)參數(shù)決定,參數(shù)的修改在繪制兩幀畫面之間進(jìn)行[8]。在本程序中,實(shí)現(xiàn)衛(wèi)星飛行過程的關(guān)鍵函數(shù)為:

glTranslatef(xm,ym,zm);

glRotatef(am,1.0f,0.0f,0.0f);

glRotatef(180.0f,0.0f,1.0f,0.0f);

這些語(yǔ)句在每?jī)蓭嬅媲袚Q時(shí)被調(diào)用,以實(shí)現(xiàn)衛(wèi)星位置的不斷變換。

5.2 模擬發(fā)射過程的尾焰效果

在實(shí)際的衛(wèi)星發(fā)射過程中,衛(wèi)星是由運(yùn)載火箭送入太空的,衛(wèi)星本身不帶有升空過程的動(dòng)力設(shè)備。運(yùn)載火箭將衛(wèi)星送入預(yù)定軌道后,即與衛(wèi)星脫離。同步人造地球衛(wèi)星繞著地球飛行時(shí),是以地球?qū)ζ涞娜f有引力作為向心力繞軌運(yùn)行[10]。

在本程序的設(shè)計(jì)過程中,由于技術(shù)上的一些限制條件,并沒有將衛(wèi)星與運(yùn)載火箭捆綁,而是假定衛(wèi)星自己具有動(dòng)力源,為了達(dá)到預(yù)期的仿真效果,利用OpenGL提供的一些相關(guān)技術(shù),對(duì)火箭上升過程中的噴射尾焰進(jìn)行了模擬。

實(shí)現(xiàn)尾焰的模擬效果主要使用視圖變換和紋理貼圖等技術(shù)。定義一些規(guī)則的幾何體,然后對(duì)這些幾何體進(jìn)行預(yù)定軌道的位置變換,通過使用紋理貼圖技術(shù),使其看起來更具有真實(shí)感。本程序中通過以下步驟進(jìn)行火焰效果仿真:

首先,用規(guī)則的三維幾何體定義尾焰輪廓;

其次,對(duì)該幾何體尾部進(jìn)行透明度擾動(dòng)以產(chǎn)生火焰的噴射效果;

最后,用分段函數(shù)定義幾何體各區(qū)間的顏色以求色彩逼真。

6 結(jié)論

在本衛(wèi)星發(fā)射至入軌過程仿真系統(tǒng)的設(shè)計(jì)過程中,以O(shè)penGL圖形接口為開發(fā)環(huán)境,在Visual C++中調(diào)用系統(tǒng)封裝的OpenGL函數(shù),運(yùn)用OpenGL的各項(xiàng)功能,例如模型變換,投影變換等,實(shí)現(xiàn)了衛(wèi)星發(fā)射過程的動(dòng)態(tài)仿真及衛(wèi)星飛行過程的動(dòng)畫顯示。在本程序的編寫過程中,采用了標(biāo)準(zhǔn)動(dòng)畫法來繪制衛(wèi)星的過程,在視覺上帶來了一定的真實(shí)感,但在仿真方面還不夠完善,此外,衛(wèi)星在軌運(yùn)行的模型使用的是無攝運(yùn)動(dòng)模型,它比真是太空中天體的運(yùn)動(dòng)簡(jiǎn)單很多。怎樣從計(jì)算公式的角度和動(dòng)畫仿真的角度提高模型的真實(shí)性,還有待進(jìn)一步的研究。

參考文獻(xiàn):

[1] 黃權(quán),徐學(xué)軍.基于OpenGL的衛(wèi)星跟蹤仿真[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(2):131-134.

[2] 劉林.人造地球衛(wèi)星軌道力學(xué)[M].北京:高等教育出版社,1992:1-100.

[3] Jim Pitts,Martin Van Velsen,Robin Fercoq,et al.3D Studio File Format[Z].1997.

[4] 夏一飛,黃天衣.球面天文學(xué)[M].南京:南京大學(xué)出版社,1995:20-200.

[5] Dave Shreiner,Mason Woo,Jackie Neider,等.OpenGL編程指南[M].北京:機(jī)械工業(yè)出版社,2006:1-297.

[6] Mark Segal,Kurt Akeley.The OpenGL Graphics System: A Specification(Version 2.1)[Z].2006:1-394.

[7] 唐澤圣,周嘉玉,李新友.計(jì)算機(jī)圖形學(xué)基礎(chǔ)[M].北京:清華大學(xué)出版社,1999:1-180.

[8] Cass Everitt.OpenGL ARB Vertex Program[Z].2003:1-58.

[9] 刁成嘉,刁奕.C++面向?qū)ο缶幊袒A(chǔ)[M].北京:機(jī)械工業(yè)出版社,2007:95-117.