计算重要天文坐标系之间的转换(C#)

编程入门 行业动态 更新时间:2024-10-27 21:16:50

计算重要天文<a href=https://www.elefans.com/category/jswz/34/1768665.html style=坐标系之间的转换(C#)"/>

计算重要天文坐标系之间的转换(C#)

用了一个多月的时间研究天文坐标系之间的坐标转换,虽然最终项目不得不砍掉与之相关的功能(因为某些原因),但是对于使用计算机模拟宇宙中天体坐标系的相互转换还是有一些非常重要的成果值得分享,希望对从事虚拟现实且开发与太阳系天体运动有关的工作人员有所帮助。

1.天体坐标系基础知识(翻墙所得)







2.C#源码实现

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
/*
该脚本实现从地平坐标系转换到赤道坐标系在转换到黄道坐标系【存在问题】*/
public class CoordinatesTransform : MonoBehaviour {private float PI;//π值private float HCJJ = (float)(23 + 26 / 60 + (20.512 / 60)/60);//黄赤交角//***********************************************public float A=0;//代表方位角(不能用度数**需除以180度乘以PI)【0~360】public float α=0;//代表高度角(不能用度数**需除以180度乘以PI)【-90~+90】private float φ=39.62f;//代表观测者所在纬度(不能用度数**需除以180度乘以PI)private float H;//时角private float sinH=0;//时角正弦值private float cosH=0;//时角余弦值private float sinδ=0;//赤纬正弦值private float cosδ=0;//赤纬余弦值private float cosδcosH=0;private float cosδsinH=0;private float ChiJing=0;//赤经//***********************************************private float sinHuangWei=0;//黄纬正弦值private float cosHuangJingcosHuangWei=0;private float sinHuangJingcosHuangWei=0;private Vector3 HD_POS;//在黄道坐标系中摄像机方向向量void Start () {PI = Mathf.PI;}void Update () {//从地平坐标系转换到赤道坐标系sinδ = Mathf.Sin (φ / 180 * PI) * Mathf.Sin (α / 180 * PI)+ Mathf.Cos (φ / 180 * PI) * Mathf.Cos (α / 180 * PI) * Mathf.Cos (A / 180 * PI);cosδcosH = Mathf.Cos (φ / 180 * PI) * Mathf.Sin (α / 180 * PI)- Mathf.Sin (φ / 180 * PI) * Mathf.Cos (α / 180 * PI) * Mathf.Cos (A / 180 * PI);cosδsinH = -Mathf.Sin (A / 180 * PI) * Mathf.Cos (α / 180 * PI);//计算整理需要的变量值cosδ = Mathf.Sqrt(1 - sinδ * sinδ);//可以直接开根号cosH = cosδcosH / cosδ;sinH = cosδsinH / cosδ;H = Mathf.Atan2 (sinH, cosH);//返回一个值【时角】范围-pi~+pi,应该是0~2PIChiJing =9.30f - H;//求赤经(这里有一个值【地方恒星时】需要从网页中读取)//赤道坐标转到黄道坐标sinHuangWei = Mathf.Cos (HCJJ / 180 * PI) * sinδ - Mathf.Sin(ChiJing) * cosδ * Mathf.Sin (HCJJ / 180 * PI);cosHuangJingcosHuangWei = Mathf.Cos(ChiJing) * cosδ;sinHuangJingcosHuangWei = Mathf.Sin (HCJJ / 180 * PI) * sinδ + Mathf.Sin(ChiJing) * cosδ * Mathf.Cos (HCJJ / 180 * PI);//获取黄道坐标系点坐标HD_POS.x = cosHuangJingcosHuangWei;HD_POS.y = sinHuangJingcosHuangWei;HD_POS.z = sinHuangWei;Camera.main.transform.LookAt (HD_POS);}
}




更多推荐

计算重要天文坐标系之间的转换(C#)

本文发布于:2024-03-08 16:24:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721441.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:坐标系   天文

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!