**
** \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
/* === H E A D E R S ======================================================= */
+#include "angle.h"
#include "real.h"
#include <math.h>
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)
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);
{ 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;
}