牧夫天文网

QQ登录

只需一步,快速开始

发新帖

0

收听

24

听众

48

主题
发表于 2013-3-16 15:20 | 查看: 7670| 回复: 40来自: 福建省泉州市 电信
搞老久,然后就实现了。
以下文字需要些许天文基础和程序基础~。
一、准备数据:
5等以上星表,M天体星表,EXCEL整整,弄到TXT,丢到主控板的TF卡~(估计以后需要丢到SPI FLASH,TF感觉弄起来速度不快的样子)
星表包含信息:
RA,DEC,Magnitude,
M天体:RA,DEC,对于星等无所谓。

星座连线信息:
这里参考PP3的开源软件里边的一个dat文件,找得半死,自己不想整理这些连线,太多了!
然后耗时一天修修改改,最后用EXCEL转换成自己需要的数据。
最后体现出来的是一系列的数字序号,搞成CONST数组丢到单片机ROM去了,再弄TF卡那更XX慢了~

星座名称信息:
这个啊,直接按照星座英文简写,还有定义了下文中提到的一个“星座管理结构体”,直接指定在每个星座的α星旁边把星座名称显示出来。


二、程序准备:
1、星点绘图结构体,星座管理结构体

typedef struct _ConsDef
{
unsigned char Cname[3];
unsigned short Cnumber;
}Constellation;
//这个上文提到了,Cname是星座英文简写,很明显,这是3个字符的字符串哦也。
//Cnumber呢,是这个星座的α星在我整理的星表里边的序号。数据都XX大,不贴出来,有兴趣可以找我要。
/*
星等规约 Magi的规定:(涉及画点的大小)
4等为0,
3等为1,
2等为2,
1等为3,
0等为4,
-1等为5,
*/
typedef struct _Draw
{
signed short DDX;
signed short DDY;
signed char Magi; //星等
}StarDraw;
DDX: 赤平投影后的星点平面横坐标
DDY: 赤平投影后的星点平面纵坐标

2、极射赤平投影计算函数,用来实现三维到二维变换。 这里参考了国内某期刊老旧的文件,自己分析了下。
//单点极射赤平投影计算,计算对象单位:弧度
MapStar* Stereographic(MapStar* star)
{
static MapStar pr_star;
float Long1,Lat1,
Sin1,Sin2,Sin3,Cos1,Cos2,Cos3,
K;

Long1 = 0.0;//SysCoordinate.longitude;//这个结构体用来管理地理经纬度,海拔高度
Lat1 = 0.0//SysCoordinate.latitude;
star->X = star->X*PI/180.0;
star->Y = star->Y*PI/180.0;
Sin1 = arm_sin_f32(Lat1);
        // 这类arm_sin_f32类似的函数是ARM_MATH的LIB文件提供的,使用时必须包含头文件,对于F4这涉及FPU的使用
Sin2 = arm_sin_f32(star->Y);
Sin3 = arm_sin_f32(star->X - Long1);
Cos1 = arm_cos_f32(Lat1);
Cos2 = arm_cos_f32(star->Y);
Cos3 = arm_cos_f32(star->X - Long1);

K = 2 / (1 + Sin1*Sin2 + Cos1*Cos2*Cos3);
pr_star.X = K*Radius*Cos2*Sin3;
pr_star.Y = K*Radius*(Cos1*Sin2 - Sin1*Cos2*Cos3);
return &pr_star;
}

3、实时恒星时计算//这里参考stellarium 的程序,直接COPY使用了,二话不说啊!自己没演算过。
Sidereal_def Sidereal_time; //实时恒星时

extern Obliquity_def Obliquity;
extern Nutation_def Nutation_cal;

//function:
//Get the Sidereal_Time on xxx longitude
//平恒星时
void Mean_Sidereal_Time(double longitude,double JD)
{
double T,s,num;
T =  (JD - 2451545.0) / 36525.0;
s = 280.46061837 + (360.98564736629 * (JD - 2451545.0)) + (0.000387933 * T * T) - (T * T * T / 38710000.0);
num = s + longitude;
Sidereal_time.mean_sidereal_time = fmod(num,360)/15.0;
//return lms;
}
//真恒星时
void Apparent_Sidereal_Time(void)
{
double correction = 0.0;
correction = Nutation_cal.nl * arm_cos_f32(Obliquity.apparent_obliquity*PI/180.0);
Sidereal_time.apparent_sidereal_time = (Sidereal_time.mean_sidereal_time*15.0 + correction)/15.0;
}

平恒星时和真恒星时,算了一下后发现相差很小,于是无所谓了。对于星图显示,超级无所谓。

4、GUI界面:ucGUI
程序啥子就不能贴了,不可能贴得出来的,太多。。。
本来想自己写一下GUI来弄星图界面,但是当时发现超级麻烦的,太头大了。其实现在想一下,是可以实现的,就是那些窗口重绘什么比较麻烦,大概需要参考下ucGUI的核心代码部分。

5、星点绘制
程序比较多了,不想贴也不能贴。
思路:

读星点数据->赤平投影变换->根据星点坐标和星等大小打点。M天体打点的时候用了黄色,大小都相等,以示区分

6、星座连线绘制
读星座连线数组->指定到赤平投影后的星点->画直线。

7、星座名称显示
读星座结构体->指定到赤平投影后的星点->显示字符串、

8、
看实际效果么:
单纯画星点效果:
psb (3).jpg

这个是一个礼拜前的结果。
赤平投影的时候选择的天球半径为400


psb (5).jpg

psb (4).jpg
这个有所不同了,这个是这个星期的最后结果了
黄色的点是M天体,星座名称有,星点连线也有。。。赤平投影所用半径为200














发表于 2013-4-2 13:23 来自手机 来自: 广东省 电信
自己顶顶顶顶…~

回复 显示全部楼层 道具 举报

发表于 2013-3-21 18:56 来自手机 来自: 广东省 电信
自己顶~~~~~~~~~~~~~~~~

回复 显示全部楼层 道具 举报

发表于 2013-3-20 07:20 来自手机 来自: 广东省 电信
望交流指正………………………………………

回复 显示全部楼层 道具 举报

发表于 2013-3-19 19:21 来自手机 来自: 广东省 电信
自己顶自己顶~~~~~

回复 显示全部楼层 道具 举报

发表于 2013-3-19 13:04 来自手机 来自: 广东省 电信
角落里的烟嘴 发表于 2013-3-18 23:31
http://www.projectpluto.com/source.htm 不知道这个网站的资料对你时候有帮助

谢谢分享

回复 显示全部楼层 道具 举报

发表于 2013-3-19 09:24 来自手机 来自: 广东省 电信
maxchen 发表于 2013-3-18 23:32
可以用FSMC接SRAM的嘛

嗯,我现在用的vgt 6,拓不了的,得用z系列,所以说得换…

回复 显示全部楼层 道具 举报

发表于 2013-3-19 09:22 来自手机 来自: 广东省 电信
maxchen 发表于 2013-3-18 23:32
可以用FSMC接SRAM的嘛

嗯,我现在用的vgt 6,拓不了的,得用z系列,所以说得换…

回复 显示全部楼层 道具 举报

发表于 2013-3-18 23:32 来自: 广东省佛山市 电信

可以用FSMC接SRAM的嘛

点评 回复 显示全部楼层 道具 举报

天籁 发表于 2013-3-19 09:24 详情  回复
嗯,我现在用的vgt 6,拓不了的,得用z系列,所以说得换…
天籁 发表于 2013-3-19 09:22 详情  回复
嗯,我现在用的vgt 6,拓不了的,得用z系列,所以说得换…
发表于 2013-3-18 23:31 来自: 江苏省苏州市昆山市 电信
天籁 发表于 2013-3-18 22:26
自己顶顶,望交流学习,不知哪位是否有太阳系天体赤经赤纬的计算方法…

http://www.projectpluto.com/source.htm 不知道这个网站的资料对你时候有帮助

点评 回复 显示全部楼层 道具 举报

天籁 发表于 2013-3-19 13:04 详情  回复
谢谢分享
发表于 2013-3-18 22:49 来自手机 来自: 广东省 电信
maxchen 发表于 2013-3-18 22:29
F4能跑168MHz啊,又有FPU,这样速度都不够吗?

嘿嘿,要画面好,旋转啥的,换成可扩展ram 的就行,这个片子要能旋转啥的内存不够…
画面如果移植GUI 那太慢了,得自己写这个星图的GUI 才会流畅

点评 回复 显示全部楼层 道具 举报

maxchen 发表于 2013-3-18 23:32 详情  回复
可以用FSMC接SRAM的嘛
发表于 2013-3-18 22:29 来自: 广东省佛山市 电信
天籁 发表于 2013-3-17 10:45
是的,不过,需要更换CPU了。

F4能跑168MHz啊,又有FPU,这样速度都不够吗?

点评 回复 显示全部楼层 道具 举报

天籁 发表于 2013-3-18 22:49 详情  回复
嘿嘿,要画面好,旋转啥的,换成可扩展ram 的就行,这个片子要能旋转啥的内存不够… 画面如果移植GUI 那太慢了,得自己写这个星图的GUI 才会流畅
发表于 2013-3-18 22:26 来自手机 来自: 广东省 电信
自己顶顶,望交流学习,不知哪位是否有太阳系天体赤经赤纬的计算方法…

点评 回复 显示全部楼层 道具 举报

角落里的烟嘴 发表于 2013-3-18 23:31 详情  回复
http://www.projectpluto.com/source.htm 不知道这个网站的资料对你时候有帮助
发表于 2013-3-18 20:04 来自手机 来自: 广东省 电信
sunmj 发表于 2013-3-18 08:48
楼主真的厉害,你的工作会非常好找,自己创业也没问题。

是么~在实习咯,就近找了一个

回复 显示全部楼层 道具 举报

发表于 2013-3-18 08:48 来自: 山东省潍坊市 电信
楼主真的厉害,你的工作会非常好找,自己创业也没问题。

点评 回复 显示全部楼层 道具 举报

天籁 发表于 2013-3-18 20:04 详情  回复
是么~在实习咯,就近找了一个
发表于 2013-3-17 16:09 来自: 福建省福州市 福州大学
好家伙,顶

回复 显示全部楼层 道具 举报

发表于 2013-3-17 13:51 来自: 福建省泉州市 电信
mingkoukou 发表于 2013-3-17 13:44
哇塞,那不更牛了,等向你学习下,希望你到时不要吝啬。

有啥问题都能请教没关系的。。。。。。。

回复 显示全部楼层 道具 举报

发表于 2013-3-17 13:49 来自: 福建省泉州市 电信
姜磊 发表于 2013-3-17 13:34
支持楼主将所学专业和自己的爱好相结合,创造出自身的价值!顶楼主!

谢谢支持。。。。哈

回复 显示全部楼层 道具 举报

发表于 2013-3-17 13:44 来自: 天津市河西区 /和平区联通
天籁 发表于 2013-3-17 13:09
这不是DIY软件。

这个是小型的嵌入式平台而已,自己做挺久的了,四五个月了,从0开始做的,硬件各种调试 ...

哇塞,那不更牛了,等向你学习下,希望你到时不要吝啬。{:soso_e113:}

点评 回复 显示全部楼层 道具 举报

天籁 发表于 2013-3-17 13:51 详情  回复
有啥问题都能请教没关系的。。。。。。。
发表于 2013-3-17 13:34 来自: 天津市 联通
支持楼主将所学专业和自己的爱好相结合,创造出自身的价值!顶楼主!

点评 回复 显示全部楼层 道具 举报

天籁 发表于 2013-3-17 13:49 详情  回复
谢谢支持。。。。哈

APP下載|爱牧夫天文淘宝店|牧夫天文网 ( 公安备案号21021102000967 )|网站地图|辽ICP备19018387号

GMT+8, 2024-9-28 05:24 , Processed in 0.365032 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表