根据卫星的方位角和仰角画卫星星空图(QT实现)

作者:haomingHu
email:hhm_master@163.com

需求:在0183格式中,根据GNGSV中的卫星仰角和方位角去绘制卫星星空图

如图:
在这里插入图片描述
目标:实现一个卫星的映射

名词解释:

方位角:从标准方向的北端起,顺时针方向到直线的水平角称为该直线的方位角。方位角的取值范围为0°~360°。,就是卫星相 对于测量点的方向,正北方向为0 度,顺时针递增。

仰角: 视线在水平线以上时,在视线所在的垂直平面内,视线与水平线所成的角叫做仰角.就是在地平面上,要抬头多少度,才能望到卫星,水平方向为 0 度,头顶的垂直方向为 90 度。

elevation:仰角 、(0-90)azimuth:方位角(0-360)

先用QT画一个圆环
在这里插入图片描述
代码如下:

 painter.translate(180,180);//坐标变换  //y轴向下边为正方向
      painter.setRenderHint(QPainter::Antialiasing, true);

      painter.setPen(QPen(QColor("#98F5FF"), 2));
      painter.setBrush(QColor(	255 ,250 ,250));
      painter.drawEllipse(QPointF(0, 0), 180, 180);

      painter.setPen(QPen(QColor("#76EEC6"), 2));
      painter.setBrush(QColor(	255 ,250 ,250));
      painter.drawEllipse(QPointF(0, 0), 120, 120);

      painter.setPen(QPen(QColor("#FFE4B5"), 2));
      painter.setBrush(QColor(	255 ,250 ,250));
      painter.drawEllipse(QPointF(0, 0), 60, 60);

      painter.setPen(QPen(QColor("#696969"), 3));
      painter.drawLine(QPointF(0, 180), QPointF(0,-180));
      painter.drawLine(QPointF(-180,0), QPointF(180,0));

这里需要注意,一定要将坐标原点搬到圆心,否则等下画的卫星就不正确了。坐标平移使用到的函数是:translate
参数为原来坐标系统的圆心坐标,而且平移之后y轴的正方向向下

现在给定参数:

      int elevation =35;
      int azimuth =33;

计算过程:

      int elevation =35;
      int azimuth =33;
      int cosLen = cos(elevation*3.141592/180)*180;
      int y = cos(azimuth*3.141592/180)*cosLen;
      int x = sin(azimuth*3.141592/180)*cosLen;

      qDebug()<< x<<y<<cosLen;
      painter.setPen(QPen(QColor("#FF0000"), 2));
      painter.setBrush(QColor("#FFFAFA"));
      painter.drawEllipse(QPointF(x,-y),10,10);

      painter.setBrush(QColor(255,48,48));
      painter.drawText(QPointF(x-9,-y+5),"13");

在这里插入图片描述

最终效果:
在这里插入图片描述

计算过程解释:
int elevation =35;
int azimuth =33;
int cosLen = cos(elevation*3.141592/180)180;
int y = cos(azimuth
3.141592/180)cosLen;
int x = sin(azimuth
3.141592/180)*cosLen;

  int cosLen = cos(elevation*3.141592/180)*180;  这个是使用仰角计算卫星投射到X-Y平面的点,距离远点的距离

int y = cos(azimuth*3.141592/180)cosLen;
int x = sin(azimuth
3.141592/180)*cosLen;
这两个则是用这个距离分别计算投影到X-Y轴的距离。

首先假设空间中的卫星和三维坐标系的原点组成一个向量,方位角可以理解为先将这个向量投影到X-Y面,然后得到的新向量与Y轴的夹角,因为三维坐标系绕着X轴转到90°,Z轴和Y轴是重合,所以就可以用正余弦关系计算出最终的二维平面坐标

  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值