Render sleepers on points
authorNick Gasson <nick@nickg.me.uk>
Sat, 13 Jun 2009 21:55:22 +0000 (22:55 +0100)
committerNick Gasson <nick@nickg.me.uk>
Sat, 13 Jun 2009 21:55:22 +0000 (22:55 +0100)
src/Points.cpp

index 172e12ee657493dbc197e1e5a96384f0b8df3862..b34dea31108c96381b78a2af58e2e7c0dcdd82da 100644 (file)
@@ -102,7 +102,27 @@ void Points::render() const
    
    glPopMatrix();
 
-   // Draw the sleepers
+   // Draw the curved sleepers
+   for (float i = 0.2f; i < 1.0f; i += 0.08f) {
+      glPushMatrix();
+      
+      Vector<float> v = (amReflected ? myReflectedCurve : myCurve)(i);
+
+      glTranslatef(v.x - 0.4f, 0.0f, v.y);
+      
+      const Vector<float> deriv =
+         (amReflected ? myReflectedCurve : myCurve).deriv(i);
+      const float angle =
+         radToDeg<float>(atanf(deriv.y / deriv.x));
+
+      glRotatef(-angle, 0.0f, 1.0f, 0.0f);
+
+      renderSleeper();
+      
+      glPopMatrix();
+   }
+   
+   // Draw the straight sleepers
    glTranslatef(-0.4f, 0.0f, 0.0f);
    
    for (int i = 0; i < 12; i++) {