【问题标题】:OpenGL drawing earth how to scale pointsOpenGL绘制地球如何缩放点
【发布时间】:2014-01-16 08:00:44
【问题描述】:

我有问题,因为我想在球体上绘制点,但我不知道如何正确缩放它们。

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

每个点都有高度。 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 时,我只看到人工制品

【问题讨论】:

  • 什么是“错误”?如果是你的山可能是看不见的,那是因为即使是珠穆朗玛峰,在它的 8800m 处,也只比你的平均地球环绕球高 0.1%。试着夸大你的身高。
  • 我不认为这是错误的......从太空看地球并不颠簸,但如果你飞得更近,你就会看到山脉。我认为这更多的是照明问题,而不是模型坐标夸大。添加法线和定向漫射光

标签: opengl math


【解决方案1】:

应该是这样的:

x=scale*(re+h)*cos(a)*cos(b);
y=scale*(re+h)*cos(a)*sin(b);
z=scale*(rp+h)*sin(a);
  • 再赤道半径
  • rp - 极半径
  • h - 高度
  • 一个
  • b

你的高度缩放似乎没问题,也许问题是

  • 没有括号(一些编译器在没有正确括号的情况下会弄得一团糟)
  • 错误的 PI ... 通常数学定义:M_PI
  • cos,sin 句柄通常是弧度,但我也看到了一些库中的度数,以确保什么适合你
  • 角度间隔错误

究竟出了什么问题?图片或更多详细信息会有所帮助

【讨论】:

    【解决方案2】:

    看看你有什么矢量似乎是在正确的方向。我不知道你为什么要乘以 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) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      相关资源
      最近更新 更多