- rwy_no = globals->get_runways()->search(arr->id, int(wind_heading));
- //cout << "Using runway # " << rwy_no << " for departure at " << dep->id << endl;
-
- if (!(globals->get_runways()->search(arr->id, (int) wind_heading, &rwy )))
- {
- cout << "Failed to find runway for " << arr->id << endl;
- // Hmm, how do we handle a potential error like this?
- exit(1);
- }
- //cerr << "Done" << endl;
- heading = rwy.heading;
- azimuth = heading + 180.0;
- while ( azimuth >= 360.0 ) { azimuth -= 360.0; }
-
-
-
- geo_direct_wgs_84 ( 0, rwy.lat, rwy.lon, azimuth,
- 100000,
- &lat2, &lon2, &az2 );
- wpt = new waypoint;
- wpt->name = "BOD"; //wpt_node->getStringValue("name", "END");
- wpt->latitude = lat2;
- wpt->longitude = lon2;
- wpt->altitude = 10000;
- wpt->speed = speed;
- wpt->crossat = alt +19;
- wpt->gear_down = false;
- wpt->flaps_down= false;
- wpt->finished = false;
- wpt->on_ground = false;
- waypoints.push_back(wpt);
-
- // Ten thousand ft. Slowing down to 240 kts
- geo_direct_wgs_84 ( 0, rwy.lat, rwy.lon, azimuth,
- 20*SG_NM_TO_METER,
- &lat2, &lon2, &az2 );
- wpt = new waypoint;
- wpt->name = "Dec 10000ft"; //wpt_node->getStringValue("name", "END");
- wpt->latitude = lat2;
- wpt->longitude = lon2;
- wpt->altitude = arr->elevation + 19;
- wpt->speed = 240;
- wpt->crossat = 10000;
- wpt->gear_down = false;
- wpt->flaps_down= false;
- wpt->finished = false;
- wpt->on_ground = false;
- waypoints.push_back(wpt);
-
- // Three thousand ft. Slowing down to 160 kts
- geo_direct_wgs_84 ( 0, rwy.lat, rwy.lon, azimuth,
- 8*SG_NM_TO_METER,
- &lat2, &lon2, &az2 );
- wpt = new waypoint;
- wpt->name = "DEC 3000ft"; //wpt_node->getStringValue("name", "END");
- wpt->latitude = lat2;
- wpt->longitude = lon2;
- wpt->altitude = arr->elevation + 19;
- wpt->speed = 160;
- wpt->crossat = 3000;
- wpt->gear_down = true;
- wpt->flaps_down= true;
- wpt->finished = false;
- wpt->on_ground = false;
- waypoints.push_back(wpt);
- //Runway Threshold
- geo_direct_wgs_84 ( 0, rwy.lat, rwy.lon, azimuth,
- rwy.length*0.45 * SG_FEET_TO_METER,
- &lat2, &lon2, &az2 );
- wpt = new waypoint;
- wpt->name = "Threshold"; //wpt_node->getStringValue("name", "END");
- wpt->latitude = lat2;
- wpt->longitude = lon2;
- wpt->altitude = arr->elevation + 19;
- wpt->speed = 15;
- wpt->crossat = arr->elevation + 19;
- wpt->gear_down = true;
- wpt->flaps_down= true;
- wpt->finished = false;
- wpt->on_ground = true;
- waypoints.push_back(wpt);
-
- //Full stop at the runway centerpoint
- geo_direct_wgs_84 ( 0, rwy.lat, rwy.lon, azimuth,
- rwy.length*0.45,
- &lat2, &lon2, &az2 );
- wpt = new waypoint;
- wpt->name = "Center"; //wpt_node->getStringValue("name", "END");
- wpt->latitude = rwy.lat;
- wpt->longitude = rwy.lon;
- wpt->altitude = arr->elevation + 19;
- wpt->speed = 15;
- wpt->crossat = -10000;
- wpt->gear_down = true;
- wpt->flaps_down= true;
- wpt->finished = false;
- wpt->on_ground = true;
- waypoints.push_back(wpt);
-
-direction = (rand() % 360);
-geo_direct_wgs_84 ( 0, arr->latitude, arr->longitude, direction,
- 100,
- &lat2, &lon2, &az2 );
-
- // Add the final destination waypoint
- wpt = new waypoint;
- wpt->name = arr->id; //wpt_node->getStringValue("name", "END");
- wpt->latitude = lat2;
- wpt->longitude = lon2;
- wpt->altitude = arr->elevation+19;
- wpt->speed = 15;
- wpt->crossat = -10000;
- wpt->gear_down = true;
- wpt->flaps_down= true;
- wpt->finished = false;
- wpt->on_ground = true;
- waypoints.push_back(wpt);
-
- // And finally one more named "END"
- wpt = new waypoint;
- wpt->name = "END"; //wpt_node->getStringValue("name", "END");
- wpt->latitude = lat2;
- wpt->longitude = lon2;
- wpt->altitude = 19;
- wpt->speed = 15;
- wpt->crossat = -10000;
- wpt->gear_down = true;
- wpt->flaps_down= true;
- wpt->finished = true;
- wpt->on_ground = true;
- waypoints.push_back(wpt);
-
- // And finally one more named "EOF"
- wpt = new waypoint;
- wpt->name = "EOF"; //wpt_node->getStringValue("name", "END");
- wpt->latitude = lat2;
- wpt->longitude = lon2;
- wpt->altitude = 19;
- wpt->speed = 15;
- wpt->crossat = -10000;
- wpt->gear_down = true;
- wpt->flaps_down= true;
- wpt->finished = true;
- wpt->on_ground = true;
- waypoints.push_back(wpt);