Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-core / trunk / src / synfig / vector.h
index c46a773..46baff8 100644 (file)
@@ -6,6 +6,7 @@
 **
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2007 Chris Moore
 **
 **     This package is free software; you can redistribute it and/or
 **     modify it under the terms of the GNU General Public License as
@@ -27,6 +28,7 @@
 
 /* === H E A D E R S ======================================================= */
 
+#include "angle.h"
 #include "real.h"
 #include <math.h>
 
@@ -71,18 +73,18 @@ private:
        value_type _x, _y;
 
 public:
-       Vector() { };
+       Vector(): _x(0.0), _y(0.0) { };
        Vector(const value_type &x, const value_type &y):_x(x),_y(y) { };
 
        bool is_valid()const { return !(isnan(_x) || isnan(_y)); }
 
        value_type &
        operator[](const int& i)
-       { return (&_x)[i] ; }
+       { return i?_y:_x; }
 
        const value_type &
        operator[](const int& i) const
-       { return (&_x)[i] ; }
+       { return i?_y:_x; }
 
        const Vector &
        operator+=(const Vector &rhs)
@@ -169,6 +171,9 @@ public:
        Vector perp()const
                { return Vector(_y,-_x); }
 
+       Angle angle()const
+               { return Angle::rad(atan2(_y, _x)); }
+
        bool is_equal_to(const Vector& rhs)const
        {
                static const value_type epsilon(0.0000000000001);
@@ -271,7 +276,7 @@ public:
        { return (&a)[i]; }
 
        //! Bezier curve intersection function
-       time_type intersect(const bezier_base<value_type,time_type> &x, time_type near=0.0)const
+       time_type intersect(const bezier_base<value_type,time_type> &/*x*/, time_type /*near*/=0.0)const
        {
                return 0;
        }