2014-01-15 99 views
0

我有問題,因爲我想繪製球體上的點,但我不知道如何正確縮放它們。OpenGL繪圖地球如何縮放點

R = 6400km <- R of earth 
r = 6400m <- r of earth in my program 
w = r/R; 

每個點都有h。 x =地形,y =經度

我的問題是高度。你能告訴我我錯了嗎?

x = (r+h*w) * cos(x * PI/180.0) * cos(y * PI/180.0) 
y = (r+h*w)* cos(x * PI/180.0) * sin(y * PI/180.0) 
z = (r+h*w) *sin(x * PI/180.0) 

這就是當我設置w = 0.01時。當我設置W = R/R我看到的只是文物 img

+0

什麼是「錯」?如果你的山脈可能是隱形的,那是因爲即使是山峯。珠穆朗瑪峯在它的8800米處,僅比地球的平均地球高出0.1%。嘗試誇大你的高度一點。 – usr2564301

+0

我不認爲這是錯的......太空中的地球不是崎嶇不平的,但如果你靠近的話,你會看到山脈。我認爲這更多的是照明模型座標誇張的問題。添加法線和方向漫射光 – Spektre

回答

3

它應該是這樣的:

x=scale*(re+h)*cos(a)*cos(b); 
y=scale*(re+h)*cos(a)*sin(b); 
z=scale*(rp+h)*sin(a); 
  • 重 - 赤道半徑
  • RP - 極半徑
  • ^h - 高度
  • a < -0.5 * PI,+ 0.5 * PI>
  • b < 0,2.0 * PI>

你的身高的比例似乎OK也許問題是

  • 沒有括號的(一些編譯器做沒有適當的包圍一塌糊塗)
  • 錯PI ...通常的數學定義:M_PI
  • cos,sin手柄通常弧度,但我也看到一些庫中的度數,以確保什麼是適合你的
  • 錯誤的角度間隔

究竟是什麼錯誤?圖像或更多詳細信息將有幫助

0

看看你有什麼樣的矢量看起來是在正確的方向。我不知道爲什麼你乘以W,你不只是想

x = (r+h) * cos(latitude * PI/180.0) * cos(longitude * PI/180.0) 
y = (r+h) * cos(latitude * PI/180.0) * sin(longitude * PI/180.0) 
z = (r+h) * sin(latitude * PI/180.0)