]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/trackwrap.cpp
Make use of the mspmath library
[r2c2.git] / source / designer / trackwrap.cpp
index 863434fb3d1299d5433f5547e77b1ce7f05621eb..398285f7acf70b335c7089be5fc5162ab8b01dfa 100644 (file)
@@ -28,7 +28,7 @@ void TrackWrap::render(GL::Renderer &renderer, const GL::Tag &) const
        {
                GL::MatrixStack::Push push(renderer.matrix_stack());
                const Vector &pos = i->track->get_position();
-               renderer.matrix_stack() *= GL::Matrix::translation(pos.x, pos.y, pos.z);
+               renderer.matrix_stack() *= GL::Matrix::translation(pos);
                renderer.matrix_stack() *= GL::Matrix::rotation(i->track->get_rotation(), 0, 0, 1);
                i->mesh->draw(renderer);
        }
@@ -56,22 +56,19 @@ GL::Mesh &TrackWrap::get_mesh(const TrackType &type)
        const TrackType3D &type3d = layout.get_catalogue().get_track(type);
 
        float min_area = -1;
-       float angle = 0;
+       Angle angle;
        Vector center;
        float width = 0;
        float height = 0;
-       for(float a=0; a<M_PI; a+=0.01)
+       for(Angle a; a<Angle::half_turn(); a+=Angle::from_radians(0.01))
        {
                Vector minp, maxp;
                type3d.get_bounds(a, minp, maxp);
                float area = (maxp.x-minp.x)*(maxp.y-minp.y);
                if(area<min_area || min_area<0)
                {
-                       float c = cos(a);
-                       float s = sin(a);
-                       float x = (minp.x+maxp.x)/2;
-                       float y = (minp.y+maxp.y)/2;
-                       center = Vector(c*x-s*y, s*x+c*y, minp.z);
+                       center = rotated_vector((minp+maxp)/2.0f, a);
+                       center.z = minp.z;
                        angle = a;
                        width = maxp.x-minp.x+0.01;
                        height = maxp.y-minp.y+0.01;