Revision 2b07acc9

View differences:

utility/quaternion.h
79 79

  
80 80
    double magnitude() const
81 81
    {
82
        double res = (_w*_w) + (_x*_x) + (_y*_y) + (_z*_z);
83
        return sqrt(res);
82
        return sqrt(_w*_w + _x*_x + _y*_y + _z*_z);
84 83
    }
85 84

  
86 85
    void normalize()
......
89 88
        *this = this->scale(1/mag);
90 89
    }
91 90

  
92
    const Quaternion conjugate() const
91
    Quaternion conjugate() const
93 92
    {
94 93
        return Quaternion(_w, -_x, -_y, -_z);
95 94
    }
96 95

  
97
    void fromAxisAngle(Vector<3> axis, double theta)
96
    void fromAxisAngle(const Vector<3>& axis, double theta)
98 97
    {
99 98
        _w = cos(theta/2);
100 99
        //only need to calculate sine of half theta once
......
214 213
        return ret;
215 214
    }
216 215

  
217
    Vector<3> rotateVector(Vector<2> v) const
216
    Vector<3> rotateVector(const Vector<2>& v) const
218 217
    {
219
        Vector<3> ret(v.x(), v.y(), 0.0);
220
        return rotateVector(ret);
218
        return rotateVector(Vector<3>(v.x(), v.y()));
221 219
    }
222 220

  
223
    Vector<3> rotateVector(Vector<3> v) const
221
    Vector<3> rotateVector(const Vector<3>& v) const
224 222
    {
225
        Vector<3> qv(this->x(), this->y(), this->z());
226
        Vector<3> t;
227
        t = qv.cross(v) * 2.0;
228
        return v + (t * _w) + qv.cross(t);
223
        Vector<3> qv(_x, _y, _z);
224
        Vector<3> t = qv.cross(v) * 2.0;
225
        return v + t*_w + qv.cross(t);
229 226
    }
230 227

  
231 228

  

Also available in: Unified diff