我正在开发望远镜控制器开源应用程序。我是在很少了解天文学的情况下开始这个项目的。 基本上,该应用将通过无线连接将数据发送到望远镜。
天体的数据如下:
["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中与我的代码位置相同的数据。
根据我的代码计算出的数据,除了视在海拔高度外,甚至都没有接近恒星的数据。