2011-05-28 47 views
4

所以,這是我的問題。我應該製造一個太陽系,太陽在中心,行星在旋轉;每個行星都應該有自己的衛星。所以,我做了所有,但我無法做到地球自轉......地球圍繞太陽旋轉,月球圍繞地球旋轉......我如何讓地球旋轉本身?當我把另一個「glrotating」命令裏面的代碼,月亮落下地球或發生一些奇怪的事情......我的太陽系問題

這裏如下我的代碼...

// EARTH 
// INFO: 1) it's 3rd planet from the Sun; 
//  2) it's 5th largest planet in the Solar System, with an equatorial radius of 6378.388km; 
//  3) it's 3rd fastest planet, because its orbital period is of 365 earth-days (1 year). 
void Earth(void) 
{ 
    DrawOrbit(5.5, 1); 
    glRotatef((GLfloat) year*6.2, 0.0, 1.0, 0.0); //orbital movement for the Earth around the Sun 
    glTranslatef(5.5, 0.0, 0.0); 
    glColor3f(0.0, 0.3, 1.0); 
    glutSolidSphere(0.28, 20, 10); //draw Earth: more or less, the Earth has got the same dimension of Venus. 

    // The Earth has got one natural satellites: the Moon. Let's draw it: 
    glPushMatrix(); 
    glRotatef((GLfloat) day*2, 0.0, 1.0, 0.0); //rotate for the moon 
    glTranslatef(0.5, 0.0, 0.0); 
    glColor3f(1.0f, 1.0f, 1.0f); 
    glutSolidSphere(0.05, 5, 4); //draw moon: its diameter is about a quarter the diameter of Earth 
    glPopMatrix(); 

} 
+0

我假設你使用的是OpenGL? – 2011-05-28 13:10:39

+7

這個問題的標題是偉大的。 xD – Cephron 2011-05-28 13:20:58

+0

只要你不使用紋理,無論如何你都不會注意到旋轉地球的網格。當你開始使用紋理時,只需移動一個紋理座標,地球就會開始旋轉 – hirschhornsalz 2011-05-28 13:30:26

回答

1

月球的公轉繞地球的是與地球繞其自身軸線的旋轉無關(至少用於渲染目的)

所以你應該推動矩陣旋轉地球,彈出並使用你的月亮邏輯。此外,如果你只畫地爲實心球,即使它圍繞它本身不會那麼在應用程序中顯示,除非你有它

+0

是的,當然...要看到旋轉,我用「Wire」球體替換「Solid」... – Elaine 2011-05-31 09:30:49

5

變化對地球一個不錯的質感這個

glPushMatrix(); 
glRotatef(earth_rotation); 
glutSolidSphere(0.28, 20, 10); //draw Earth: more or less, the Earth has got the same dimension of Venus. 
glPopMatrix(); 

幾個天文學筆記:地球實際上比金星稍大。到目前爲止,你的所有軌道都是共面的。此外,地球旋轉軸相對於軌道平面(稱爲黃道)傾斜約23°。月球的軌道再次相對於黃道傾斜約5°。當然,這些行星並不以完美的圓周旋轉的方式繞太陽運行,而是以橢圓曲線運行。

+0

非常感謝,但是識別器「earth_rotation」呢?我怎樣才能定義它?就像我爲識別器「年」和「日」做的那樣? – Elaine 2011-05-31 09:31:52

+0

@Elaine:它是一個佔位符標識符。地球自轉爲每23小時360度,持續時間爲360分鐘4.1秒(太陽日需要24小時,但由於軌道運動,地球必須在太陽日期間略微超過360°)。所以你必須適當地將它與你的模型的其餘部分同步。 – datenwolf 2011-05-31 14:13:31

+0

非常感謝你! :) – Elaine 2011-06-01 12:27:49

0

如果你想準確地做到這一點,你在做什麼,是鈍的,錯的。

行星並不完全繞太陽運行。它們圍繞太陽表面以外的太陽系重心軌道運行。月球的質量大約是地球的0.0123,這意味着你最好模擬地球和月球繞地球的共同中心軌道運行,而不是繞月球繞地球軌道運行。

冥王星和冥王星也是如此,但嘿,冥王星不再是行星了,所以誰在乎呢?

+0

Ahaha是的,你是對的......但他們告訴我這樣做:) – Elaine 2011-05-31 09:32:36