anddorу отдельное спасибо.
Кажется я всё таки добил это преобразование экв. координат в горизонтальные.
Часовой угол показывает тоже самое, что и в проге Starry Night Pro 5.0 , координаты объектов тоже попадают в правильный диапазон.
Правда всё таки не с такой точностью как хотелось бы. Причём некоторые с точностью в пару минут, а некоторые пару градусов.
Осталось ещё поточнее откалибрировать счётчики, чтобы точнее отсчитивать реальные градусы.
//##################################################################
//########### РАСЧЁТ ЧАСОВОГО УГЛА В РАДИАНАХ ###############
//##################################################################
function Hour_Angle(float RA)returns float
{float HA,ha,t_grad,t_rad,ST;//t=s-R.A.
ST=Sidereal_time( Longitude,system.year(),system.month(),system.day(),
system.hour(),system.minute(),system.second() );
//часовой угол в текущий момент времени в часах и дол.часа
HA = ST - RA;
if ST>0 and ST<12{
if HA > 0 and HA < 12 HA = HA;//ok
if HA < 0 and HA > -12 HA = HA;//ok
if HA < -12 HA = 24 + HA ;//ok
}
if ST>12 and ST<24{
if HA < 0 and HA > -12 HA = HA;//ok
if HA > 12 HA = ST - RA - 24;//ok
if HA > 0 and HA < 12 HA = HA;//ok
}
t_grad=(HA/24.0)*360.0;
t_rad = 0.017453293 * t_grad;
return t_rad;//в радианах
}//----------------OK
//####################################################
int richtung;float x;
function Azimuth_(float t,float Declination,float Latitude)returns float
{float A,azimuth,y;
A = (math.cos(Declination)*math.sin(t))/(-math.cos(Latitude)*math.sin(Declination)
+ math.sin(Latitude)*math.cos(Declination)*math.cos(t));//OK
y = math.atan(A);
//--------------------------С ЮГА НА СЕВЕР ------------------
if Declination<Latitude{
if t>0 and t<constant.half_pi{//Часовой угол от 0° до -90° +++++++
if y<0 {
azimuth = constant.double_pi+y;//180-360
}
if y>0 {
azimuth = constant.pi+y;//180-360
}
}
//-----------------------------------------------------------------------------
if t>constant.half_pi and t<constant.pi{//Часовой угол от 90° до -180° ++++++
if y<0{
azimuth = constant.double_pi+y;//180-360
}
}
//-----------------------------------------------------------------------------
//------------------------ С СЕВЕРА НА ЮГ ----------------------------
if t<0 and t>-constant.half_pi{//Часовой угол от 0° до -90° ---------
if y<0 {
azimuth = constant.pi+y;//0-180
}
if y>0 {
azimuth = y;//0-180
}
}
//-----------------------------------------------------------------------------
if t<-constant.half_pi and t>-constant.pi{//Часовой угол от -90° до -180° -----
if y>0 {
azimuth = y;//0-180
}
}
//-----------------------------------------------------------------------------
}
if Declination>Latitude{//для незаходящих объектов, то есть тех,
//которые находятся в обл. между 52°Latitude и 90°Zenit
if x>y richtung=0;//счёт уменьшается
if x<y richtung=1;//счёт увеличивается
if y>0 {//
azimuth = y;// 0 < t_grad < 180
}
if y<0 {//
azimuth = constant.double_pi+y;// 180 < t_grad < 360
}
}
x=y;
return azimuth;
}//-------------------------OK
//####################################################
Может не совсем грамотно с точки зрения астрономии такие алгоритмы рисовать, но работает правильно