void MyVesssel::DoSunPointing()
{
VESSELSTATUS vs;
GetStatus(vs);
VECTOR3 glob_pos_unit = _V(0,0,0);
GetGlobalPos(glob_pos_unit);
normalise(glob_pos_unit);
glob_pos_unit = -glob_pos_unit;
VECTOR3 vel_unit = _V(0,0,0);
GetRelativeVel(GetGravityRef(), vel_unit);
normalise(vel_unit);
VECTOR3 pos_unit = _V(0,0,0);
GetRelativePos(GetGravityRef(), pos_unit);
normalise(pos_unit);
VECTOR3 orb_normal_unit = crossp(pos_unit, vel_unit);
normalise(orb_normal_unit);
VECTOR3 ves_z_axis_unit = crossp(orb_normal_unit, glob_pos_unit);
normalise(ves_z_axis_unit);
VECTOR3 ves_x_axis_unit = crossp(glob_pos_unit, ves_z_axis_unit );
normalise(ves_x_axis_unit);
VECTOR3 xright = ves_x_axis_unit;
VECTOR3 yup = glob_pos_unit;
VECTOR3 zforward = ves_z_axis_unit;
double gamma = atan2( xright.x, yup.x);
double beta = -1*(asin(zforward.x));
double alpha = atan2(zforward.y, zforward.z);
vs.arot = _V(alpha, beta, (PI/2)-gamma);
vs.vrot = _V(0,0,0);
DefSetState(&vs);
}