天体的计算/单位转换-天文/ Swift iOS

时间:2018-09-04 09:36:40

标签: swift astronomy

我正在开发望远镜控制器开源应用程序。我是在很少了解天文学的情况下开始这个项目的。 基本上,该应用将通过无线连接将数据发送到望远镜。


天体的数据如下:

["SAO#": 308,
"HD": 8890,
"Con": "Alpha Ursae Minoris",
"StarName": "Polaris",
"RAH": 2,
"RAM": 31.812,
"DED": 89,
"DEM": 15.85,
"Mag": 2.02,
"PRA": 0.038,
"PDec": -0.015]

RAH = RA小时,RAM = RA分钟,
DED =十度度,DEM =十分钟度

(PRA和PDec是每年以弧度秒为单位的恒星漂移(来自目录Epoch J2000.0。据我所知,我不需要在应用程序中使用它们。)

控制器服务器(数据接收器)采用以下格式:
设置目标RA- HH:MM:SS,
设置目标Dec- DD:MM:SS,
设置目标Azm- DDD:MM:SS,
设置目标Alt- DD:MM:SS


我想将给定的天体数据转换为Ra,Dec,Azm,Alt。

有人告诉我:

RA = ((RAH + (RAM / 60.0)) * 15.0); //in degrees, RA is an earthly longitude projected onto the sky
DEC = (DED + (DEM / 60.0)); //in degrees, Dec is an earthly latitude projected onto the sky

对于目录中的恒星或其他天体,它们具有固定的纪元(J2000)。我需要对岁差/章动(地球自转轴的摆动)进行校正,以对恒星的恒星进行半个体面的估计。 RA / Dec为“现在”。

我使用的code library似乎对此有支持,并且自己进行计算。
我想知道从赤道坐标到水平包括的数据转换过程。 对于一个实例,代码就是这样工作的:

    let jd = Date().julianDay
    let RAH = 2.0
    let RAM = 31.812
    let DED = 89.0
    let DEM = 15.85

    let eqCoor = EquatorialCoordinates.init(rightAscension: Hour((RAH+(RAM/60.0))*15.0), declination: (Degree(DED+(DEM/60.0))), epoch: Epoch.J2000, equinox: Equinox.standardJ2000)
    let annualAbb = eqCoor.correctedForAnnualAberration(julianDay: jd, highPrecision: true)
    let initEQ = AstronomicalObject.init(name: "Polaris", coordinates: annualAbb, julianDay: jd, highPrecision: true)
    print("EquatorialCoordinates -> RA(α):", initEQ.equatorialCoordinates.alpha, "DEC(δ):", initEQ.equatorialCoordinates.delta) 

    let userLocation = GeographicCoordinates(positivelyWestwardLongitude: Degree(.plus, 75, 51, 13.65), latitude: Degree(.plus, 30, 54, 43.55), altitude: 256)
    print("User Location -> Latitude:", userLocation.latitude, "Longitude:", userLocation.longitude)

    let preccCoor = annualAbb.precessedCoordinates(to: Equinox.standardJ2000)
    let horizontalCoor = preccCoor.makeHorizontalCoordinates(for: userLocation, at: jd)
    print("Horizontal Coordinates -> Azimuth:", horizontalCoor.azimuth.inHours, "Altitude:", horizontalCoor.altitude.inRadians.inDegrees)

这是代码返回的数据:

EquatorialCoordinates -> RA(α): +37h56m06.009s DEC(δ): +89°16'05.165"
User Location -> Latitude: +30°54'43.550" Longitude: +75°51'13.650"
Horizontal Coordinates -> Azimuth: +12h1m07.396s Altitude: +30°13'16.650"

这是Stellarium中与我的代码位置相同的数据。

enter image description here

根据我的代码计算出的数据,除了视在海拔高度外,甚至都没有接近恒星的数据。

0 个答案:

没有答案