/** * Converts a given bearing to the bearing part of the teamcode * @param bearing Bearing to the reference waypoint * @param code The teamcode (pointer) */ static void ConvertBearingToTeamCode(const Angle bearing, TCHAR *code) { const fixed bamValue = bearing.AsBearing().Degrees() / 360 * TEAMCODE_COMBINATIONS; NumberToTeamCode(bamValue, code, 2); }
void TeamCode::Update(Angle bearing, fixed range) { // Clear teamcode memset(code, 0, sizeof(TCHAR) * 10); // Calculate bearing part of the teamcode ConvertBearingToTeamCode(bearing, code); // Calculate distance part of the teamcode NumberToTeamCode(range / 100, &code[2], 0); }
void ConvertHeadingToTeamCode(double heading, TCHAR *code) { if (heading >= 360) { code[0] = '-'; code[1] = '-'; return; } double bamValue = (heading * TEAMCODE_COMBINAIONS) / 360.0; NumberToTeamCode(bamValue, code, 2); }
void GetTeamCode(TCHAR *code, double bearing, double range) { memset(code, 0, sizeof(TCHAR) * 10); // trim to seeyou //double trim = cos(bearing*DEG_TO_RAD)*range/8500; //bearing+= 1.2; // if (bearing > 360) //{ // bearing -= 360; //} ConvertHeadingToTeamCode(bearing, code); NumberToTeamCode(range/100.0, &code[2],0); }