Вот как делал я...
Сначала путем легких астрономических расчетов
получаем угол возвышения el и азимут az звезды
Дальше эти углы переводим в трехмерные декартовые XYZ
примерно вот так...
X = R*cos(el)*cos(az);
Y = R*cos(el)*sin(az);
Z = R*sin(el);
Дальше XYZ проецируем на плоскость, что бы на экране нарисовать, вот... тут синусов будет больше...
void BCT(double X, double Y, double Z, double fi,double psi, double T,
double& x, double& y, double& z)
{
double a11,a12,a13,a21,a22,a23,a31,a32,a33;
double cosfi = cos(fi);
double sinfi = sin(fi);
double cospsi= cos(psi);
double sinpsi= sin(psi);
double cosT = cos(T);
double sinT = sin(T);
a11 = cosfi*cospsi;
a21 = -sinfi*cosT + cosfi*sinpsi*sinT;
a31 = sinfi*sinT + cosfi*sinpsi*cosT;
a12 = sinfi*cospsi;
a22 = cosfi*cosT + sinfi*sinpsi*sinT;
a32 =-cosfi*sinT + sinfi*sinpsi*cosT;
a13 =-sinpsi;
a23 = cospsi*sinT;
a33 = cospsi*cosT;
x = a11*X+a12*Z+a13*Y;
y = a21*X+a22*Z+a23*Y;
z = a31*X+a32*Z+a33*Y;
}
На выходе y и z можно выводить на канву