本人需要做一个卫星轨道预报软件,当中需要用opengl做这样一些工作:
三维视图(卫星沿轨道围绕地球飞行),
二维卫星轨迹视图(墨卡托投影视图)。
关于这方面的软件有不少,可是却没有源代码可以研究,很难入手,特别对于我这种刚入门的人来说。
不知道哪位热心人有这方面的资料,望能告知,感激不尽
邮件:[email protected] , [email protected]
三维视图(卫星沿轨道围绕地球飞行),
二维卫星轨迹视图(墨卡托投影视图)。
关于这方面的软件有不少,可是却没有源代码可以研究,很难入手,特别对于我这种刚入门的人来说。
不知道哪位热心人有这方面的资料,望能告知,感激不尽
邮件:[email protected] , [email protected]
卫星的轨迹函数 sa(t) 是一个矢量函数,通过这个矢量函数可以求出星下轨迹线函数
sa1(t) 也是一个矢量函数
sa1(t) = [sa1x(t), sa1y(t), sa1z(t)]然后根据直角坐标系和球坐标系的关系
[
x = R*cos(u)*cos(v);
y = R*sin(u)*cos(v);
z = R*sin(v);
]求出球面上的参数曲线
sa2(t) = [sa2u(t), sa2v(t)] 注意这是一个二维矢量函数。得到这个参数曲线之后,令
x = sa2u(t)
y = sa2v(t)
就可以画出 xy 坐标系中的展开后的星下轨迹线了。
x = R*cos(u)*cos(v); (1)
y = R*sin(u)*cos(v); (2)
z = R*sin(v); (3)
](1)^2 + (3)^2 得到
x^2/(R^2*cos(u)^2) + z^2/R^2 = 1 (4)同样
(2)^2 + (3)^2 得到
y^2/(R^2*sin(u)^2) + z^2/R^2 = 1 (5)从 (4) 得到
x^2 = (1-z^2/R^2)*R^2*cos(u)^2 (6)
因为 z<=R 所以
(1-z^2/R^2) >= 0
又因为 x 和 cos(u) 必定同号,所以 从 (6) 得到
x = R*cos(u)*sqrt(1-z^2/R^2);
从这里面可以解出 cos(u)同样的方法可以解出 sin(u)有了 cos(u) 和 sin(u) 的值,就可以算出 u 了
u = atan2(cos(u), sin(u))
atan2() 函数是标准库函数。根据 3 可以算出 v。于是 u, v 都有了。
你真行啊!
我现在有了卫星运行轨迹上的各点的三维坐标(x,y,z)
并且建了一个卫星的三维模型,可如何才能将卫星模型放到卫星运行
的轨迹点上,并且让卫星的轴线在轨迹线上啊!而且还要保持卫星的一个
扫描面永远对者地球,而不出现卫星在轨道上翻转呢?
子坐标系中
1,z轴为椭圆轨道面法向量。
2,x轴为 pntEarth - pntSa 并且单位化。 pntEarth 是地球球心,pntSa 是卫星中心
3,y 轴自然是 z 叉乘 x
4,坐标架的原点是 pntSa绘制的时候,保证卫星处于这个坐标架就能保证卫星的某一个面对准地球。如果还有不明白的地方可以再讨论。
看来你真是高手啊!给我讲的这么详细,我还是不太明白,我是不是太笨啊?就是就是。
条件如下:
我已知卫星轨道上的各点坐标(x,y,z)与该点的(经度,纬度)
用如下方法变换坐标总是不对啊!卫星的轴线与轨道的方向总是有
夹角,并在两极地区转动方向(就是从赤道向极地上升时,卫星的头是
朝上的向极地运动,可是到了极地时就转为尾部朝前了)
另外:我的卫星模型的轴线是Y轴正方向。
glPushMatrix();
glTranslatef(X1,Y1,Z1);//将卫星坐标换到X1,Y1,Z1点
//为了让卫星的一个扫描面永远对着地球,
//我将卫星绕Y轴转所在轨道点的经度,再将卫星绕X轴转该点的负纬度
glRotatef(Longitude,0.0f,1.0f,0.0f);//经度
glRotatef(-Latitude,1.0f,0.0f,0.0f);//纬度
glCallList(Satellite1);//显示卫星
glPopMatrix();我有图的贴子在这个地方
http://bbs.chinagamedev.net/showthread.php?s=&threadid=4993
http://expert.csdn.net/Expert/topic/2643/2643860.xml?temp=.3680536
1. 地心系坐标系统
2. 中国使用的地心系及参数 (五四系、地心一号、地心二号),地球是一个椭球体,每个国家因为平均海拔的的不同,计算系数是不一样的。资料可能不太好拿到,大多的军方用的或是天文台才有. 要是用球形坐标系,也可以不用.
3. 卫星轨道平面(卫星加一个地球自转的角速度,轨迹是一个平面)及星下点(是一个二维坐标,用经纬度直接转换在高度为0(海平面)上的坐标就是了)
4. 各种三维坐标系间的转换及反转换. 这是图形学课程里的东东.
5. 墨卡托投影视图与星下点的计算类似.极点会变成一条线.但卫星不可能通过极点的.
6. 经度\纬度\海拔高度 与 地心系间的转换.这个是整个计算的基础.
7. 有卫星点的地心系坐标, 有轨道平面, 应该可以计算切线的方向. 卫星是不是还得做一次投影变换?
8. 源代码: 到网上找一个 叫 sattrack的软件, 可能改名字了, 我记得版本1.10源代码是公开的,六七年前用过,这个代码是C写的,很好读.但计算公式效率不高.