]> git.mxchange.org Git - flightgear.git/blobdiff - src/Instrumentation/HUD/HUD_ladder.cxx
throw out "zoomed" tapes. These drew 60% of the scale with bullets rather
[flightgear.git] / src / Instrumentation / HUD / HUD_ladder.cxx
index c99ea0e62f0a195c78db7c32e88f9c3be40f6efa..5c5c245b528368fc605e1ed9e4cd29437d7f4a3f 100644 (file)
@@ -86,7 +86,6 @@ void HUD::Ladder::draw(void)
 
     float roll_value = _roll.getFloatValue() * SGD_DEGREES_TO_RADIANS;
     float pitch_value = _pitch.getFloatValue();
-    float alpha;
 
     //**************************************************************
     glPushMatrix();
@@ -134,6 +133,7 @@ void HUD::Ladder::draw(void)
     float Axx = 0.0, Ayy = 0.0, Azz = 0.0, total_vel = 0.0, pot_slope, t1;
     float up_vel, ground_vel, actslope = 0.0, psi = 0.0;
     float vel_x = 0.0, vel_y = 0.0, drift;
+    float alpha;
 
     if (_velocity_vector) {
         drift = get__beta();
@@ -474,11 +474,8 @@ void HUD::Ladder::draw(void)
                     x_ini = -half_span;
 
                     if (i == 0) {
-                        // Make zero point wider on left
-                        x_ini -= zero_offset;
-                        x_end += zero_offset;
-
-                        draw_line(x_ini, y, x_end, y);
+                        draw_line(x_ini - zero_offset, y, x_end + zero_offset, y);
+                        continue;
 
                     } else if (i > 0) {
                         // Zero or above draw solid lines
@@ -494,8 +491,8 @@ void HUD::Ladder::draw(void)
                             draw_nadir(0.0, y);
                     }
 
-                    draw_text(x_ini - 4, y, buf, HUDText::VCENTER|HUDText::LEFT);
-                    draw_text(x_end + 4, y, buf, HUDText::VCENTER|HUDText::RIGHT);
+                    draw_text(x_ini - 4, y, buf, VCENTER|RIGHT);
+                    draw_text(x_end + 4, y, buf, VCENTER|LEFT);
                 }
             }
 
@@ -523,18 +520,18 @@ void HUD::Ladder::draw(void)
                     y_end = y;
 
                     if (i == 0) {
-                        // Make zero point wider on left
+                        // make zero point wider
                         x_ini -= zero_offset;
                         x_end2 += zero_offset;
 
                         draw_line(x_ini, y, x_end, y);
                         draw_line(x_ini2, y, x_end2, y);
 
-                        draw_text(x_ini - 3, y, buf, HUDText::VCENTER|HUDText::RIGHT);
-                        draw_text(x_end2 + 3, y, buf, HUDText::VCENTER|HUDText::LEFT);
+                        draw_text(x_ini - 2.0, y, buf, VCENTER|RIGHT);
+                        draw_text(x_end2 + 2.0, y, buf, VCENTER|LEFT);
 
                     } else if (i > 0) {
-                        //draw climb bar vertical lines
+                        // draw climb bar vertical lines
                         draw_line(x_ini, y - 5.0, x_ini, y);
                         draw_line(x_end2, y - 5.0, x_end2, y);
 
@@ -542,27 +539,32 @@ void HUD::Ladder::draw(void)
                         draw_line(x_ini, y, x_end, y);
                         draw_line(x_ini2, y, x_end2, y);
 
-                        draw_text(x_ini + 0.5, y - 0.5, buf, HUDText::TOP|HUDText::LEFT);
-                        draw_text(x_end2 - 0.5, y - 0.5, buf, HUDText::TOP|HUDText::RIGHT);
+                        draw_text(x_ini + 0.5, y - 0.5, buf, TOP|LEFT);
+                        draw_text(x_end2 - 0.5, y - 0.5, buf, TOP|RIGHT);
 
                         if (i == 90 && _zenith)
                             draw_zenith(0.0, y);
 
                     } else { // i < 0
-                        y_end = y + sin(0.5 * i * SG_DEGREES_TO_RADIANS * 3/*hack*/) *
-                                _compression;
+                        float alpha = i * SG_DEGREES_TO_RADIANS / 2.0;
+                        y_end = y + (x_end - x_ini) * sin(alpha);
+
+                        float w = (x_end - x_ini) * cos(alpha);
+                        x_ini = x_end - w;
+                        x_end2 = x_ini2 + w;
 
                         // draw dive bar vertical lines
                         draw_line(x_end, y + 5.0, x_end, y);
                         draw_line(x_ini2, y + 5.0, x_ini2, y);
 
                         // draw pitch / dive bars
-                        draw_stipple_line(x_ini, y_end, x_end, y);
+                        draw_stipple_line(x_end, y, x_ini, y_end);
                         draw_stipple_line(x_ini2, y, x_end2, y_end);
 
                         float yoffs = 1.0 + (y - y_end) / 4.0;  // too hackish?
-                        draw_text(x_ini + 2.0, y_end + yoffs, buf, HUDText::BOTTOM|HUDText::HCENTER);
-                        draw_text(x_end2 - 2.0, y_end + yoffs, buf, HUDText::BOTTOM|HUDText::HCENTER);
+                        draw_text(x_ini + 3.0, y_end + yoffs, buf, BOTTOM|HCENTER);
+                        // right number shifted in a little more, because of the minus
+                        draw_text(x_end2 - 4.0, y_end + yoffs, buf, BOTTOM|HCENTER);
 
                         if (i == -90 && _nadir)
                             draw_nadir(0.0, y);