]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/measure.cpp
Make use of the mspmath library
[r2c2.git] / source / designer / measure.cpp
index 69ada814e110ff53935e8151e70462762cf8e059..c7fead1af705a4c60a8230b5e04750d8fd21cd5c 100644 (file)
@@ -29,7 +29,7 @@ void Measure::button_press(float gx, float gy, unsigned btn)
        if(btn==1)
        {
                ssnap.position = Vector(gx, gy, 0);
-               ssnap.rotation = 0;
+               ssnap.rotation = Angle::zero();
                snap_to_tracks(ssnap);
 
                state = ACTIVE;
@@ -61,18 +61,12 @@ void Measure::pointer_motion(float gx, float gy)
 
        if(state!=STARTING)
        {
-               Vector delta(pointer.x-ssnap.position.x, pointer.y-ssnap.position.y, 0);
-               float c = cos(ssnap.rotation);
-               float s = sin(ssnap.rotation);
+               Vector delta = rotated_vector(pointer-ssnap.position, -ssnap.rotation);
 
-               par_dist = delta.x*c+delta.y*s;
-               perp_dist = delta.x*s-delta.y*c;
+               par_dist = delta.x;
+               perp_dist = delta.y;
 
-               adiff = sn.rotation-ssnap.rotation+M_PI;
-               while(adiff<-M_PI)
-                       adiff += M_PI*2;
-               while(adiff>M_PI)
-                       adiff -= M_PI*2;
+               adiff = wrap_balanced(sn.rotation-ssnap.rotation+Angle::half_turn());
 
                update_mesh();
 
@@ -87,7 +81,7 @@ void Measure::render(GL::Renderer &renderer, const GL::Tag &) const
 
        GL::Renderer::Push push(renderer);
        const Vector &pos = (state==ACTIVE ? ssnap.position : pointer);
-       renderer.matrix_stack() *= GL::Matrix::translation(pos.x, pos.y, pos.z);
+       renderer.matrix_stack() *= GL::Matrix::translation(pos);
 
        mesh.draw(renderer);
 }