Runway VASI support
This commit is contained in:
parent
9f57a49382
commit
0788bf0fcb
1 changed files with 67 additions and 2 deletions
|
@ -64,7 +64,67 @@ void LightingObj::BuildBtg( int alt_m, superpoly_list* lights )
|
||||||
// We know our normal, now create the lights
|
// We know our normal, now create the lights
|
||||||
Point3D pt1;
|
Point3D pt1;
|
||||||
|
|
||||||
if (type == 2)
|
if (type == 1)
|
||||||
|
{
|
||||||
|
SG_LOG(SG_GENERAL, SG_DEBUG, "Generating VASI = " << assoc_rw);
|
||||||
|
|
||||||
|
// VASI coordinates describe the center between the two bars.
|
||||||
|
// Space between the bars is 700 ft
|
||||||
|
|
||||||
|
// Go to downwind bar
|
||||||
|
geo_direct_wgs_84 ( alt_m, ref.lat(), ref.lon(), heading,
|
||||||
|
-350 * SG_FEET_TO_METER, &lat2, &lon2, &r );
|
||||||
|
pt1 = Point3D( lon2, lat2, 0.0 );
|
||||||
|
|
||||||
|
// unit1
|
||||||
|
geo_direct_wgs_84 ( alt_m, pt1.lat(), pt1.lon(), left_hdg,
|
||||||
|
-16 * SG_FEET_TO_METER, &lat2, &lon2, &r );
|
||||||
|
pt1 = Point3D( lon2, lat2, 0.0 );
|
||||||
|
lightobj.push_back( pt1 );
|
||||||
|
normals.push_back( normal );
|
||||||
|
|
||||||
|
// unit2
|
||||||
|
geo_direct_wgs_84 ( alt_m, pt1.lat(), pt1.lon(), left_hdg,
|
||||||
|
16 * SG_FEET_TO_METER, &lat2, &lon2, &r );
|
||||||
|
pt1 = Point3D( lon2, lat2, 0.0 );
|
||||||
|
lightobj.push_back( pt1 );
|
||||||
|
normals.push_back( normal );
|
||||||
|
|
||||||
|
// unit3
|
||||||
|
geo_direct_wgs_84 ( alt_m, pt1.lat(), pt1.lon(), left_hdg,
|
||||||
|
16 * SG_FEET_TO_METER, &lat2, &lon2, &r );
|
||||||
|
pt1 = Point3D( lon2, lat2, 0.0 );
|
||||||
|
lightobj.push_back( pt1 );
|
||||||
|
normals.push_back( normal );
|
||||||
|
|
||||||
|
// Go to upwind bar
|
||||||
|
geo_direct_wgs_84 ( alt_m, ref.lat(), ref.lon(), heading,
|
||||||
|
350 * SG_FEET_TO_METER, &lat2, &lon2, &r );
|
||||||
|
pt1 = Point3D( lon2, lat2, 0.0 );
|
||||||
|
|
||||||
|
// unit4
|
||||||
|
geo_direct_wgs_84 ( alt_m, pt1.lat(), pt1.lon(), left_hdg,
|
||||||
|
-16 * SG_FEET_TO_METER, &lat2, &lon2, &r );
|
||||||
|
pt1 = Point3D( lon2, lat2, 0.0 );
|
||||||
|
lightobj.push_back( pt1 );
|
||||||
|
normals.push_back( normal );
|
||||||
|
|
||||||
|
// unit5
|
||||||
|
geo_direct_wgs_84 ( alt_m, pt1.lat(), pt1.lon(), left_hdg,
|
||||||
|
16 * SG_FEET_TO_METER, &lat2, &lon2, &r );
|
||||||
|
pt1 = Point3D( lon2, lat2, 0.0 );
|
||||||
|
lightobj.push_back( pt1 );
|
||||||
|
normals.push_back( normal );
|
||||||
|
|
||||||
|
// unit6
|
||||||
|
geo_direct_wgs_84 ( alt_m, pt1.lat(), pt1.lon(), left_hdg,
|
||||||
|
16 * SG_FEET_TO_METER, &lat2, &lon2, &r );
|
||||||
|
pt1 = Point3D( lon2, lat2, 0.0 );
|
||||||
|
lightobj.push_back( pt1 );
|
||||||
|
normals.push_back( normal );
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (type == 2)
|
||||||
{
|
{
|
||||||
SG_LOG(SG_GENERAL, SG_DEBUG, "Generating PAPI 4L = " << assoc_rw);
|
SG_LOG(SG_GENERAL, SG_DEBUG, "Generating PAPI 4L = " << assoc_rw);
|
||||||
|
|
||||||
|
@ -97,7 +157,7 @@ void LightingObj::BuildBtg( int alt_m, superpoly_list* lights )
|
||||||
normals.push_back( normal );
|
normals.push_back( normal );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == 3)
|
else if (type == 3)
|
||||||
{
|
{
|
||||||
SG_LOG(SG_GENERAL, SG_DEBUG, "Generating PAPI 4R = " << assoc_rw);
|
SG_LOG(SG_GENERAL, SG_DEBUG, "Generating PAPI 4R = " << assoc_rw);
|
||||||
|
|
||||||
|
@ -130,6 +190,11 @@ void LightingObj::BuildBtg( int alt_m, superpoly_list* lights )
|
||||||
normals.push_back( normal );
|
normals.push_back( normal );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SG_LOG(SG_GENERAL, SG_ALERT, "Unknown lighting object (PAPI/VASI...) code: " << type);
|
||||||
|
}
|
||||||
|
|
||||||
TGPolygon lights_poly; lights_poly.erase();
|
TGPolygon lights_poly; lights_poly.erase();
|
||||||
TGPolygon normals_poly; normals_poly.erase();
|
TGPolygon normals_poly; normals_poly.erase();
|
||||||
lights_poly.add_contour( lightobj, false );
|
lights_poly.add_contour( lightobj, false );
|
||||||
|
|
Loading…
Reference in a new issue