if PositionCamera uses data directlly for gluLookAt, then like I said it sould be
UserCam.PositionCamera(ShipPos[0], ShipPos[1], ShipPos[2],
ShipPos[0] + ShipRot[8], ShipPos[1] + ShipRot[9], ShipPos[2] +ShipRot[10],
ShipRot[4],ShipRot[5],ShipRot[6]);


And for any camera position
CamView = ObjectPos - CamPos;
CamRight = CrossProduct((0,1,0), CamView);
CamTop = CrossProduct(CamRight, CamView);