AffineTransformOps() { }
public:
- static AffineTransform<T, 2> rotation(const Angle<T> &);
+ static AffineTransform<T, 2> rotation(Angle<T>);
};
template<typename T>
AffineTransformOps() { }
public:
- static AffineTransform<T, 3> rotation(const Angle<T> &, const LinAl::Vector<T, 3> &);
+ static AffineTransform<T, 3> rotation(Angle<T>, const LinAl::Vector<T, 3> &);
};
}
template<typename T>
-AffineTransform<T, 2> AffineTransformOps<T, 2>::rotation(const Angle<T> &angle)
+AffineTransform<T, 2> AffineTransformOps<T, 2>::rotation(Angle<T> angle)
{
AffineTransform<T, 2> r;
T c = cos(angle);
}
template<typename T>
-AffineTransform<T, 3> AffineTransformOps<T, 3>::rotation(const Angle<T> &angle, const LinAl::Vector<T, 3> &axis)
+AffineTransform<T, 3> AffineTransformOps<T, 3>::rotation(Angle<T> angle, const LinAl::Vector<T, 3> &axis)
{
AffineTransform<T, 3> r;
LinAl::Vector<T, 3> axn = normalize(axis);
public:
Angle(): value(0) { }
template<typename U>
- Angle(const Angle<U> &other): value(other.radians()) { }
+ Angle(Angle<U> other): value(other.radians()) { }
static Angle from_degrees(T);
static Angle from_radians(T);
T radians() const { return value; }
T turns() const { return value/6.28318530717958647692; }
- Angle &operator+=(const Angle &);
- Angle &operator-=(const Angle &);
+ Angle &operator+=(Angle);
+ Angle &operator-=(Angle);
Angle &operator*=(T);
Angle &operator/=(T);
- bool operator==(const Angle &other) const { return value==other.value; }
- bool operator!=(const Angle &other) const { return value!=other.value; }
- bool operator<(const Angle &other) const { return value<other.value; }
- bool operator<=(const Angle &other) const { return value<=other.value; }
- bool operator>(const Angle &other) const { return value>other.value; }
- bool operator>=(const Angle &other) const { return value>=other.value; }
+ bool operator==(Angle other) const { return value==other.value; }
+ bool operator!=(Angle other) const { return value!=other.value; }
+ bool operator<(Angle other) const { return value<other.value; }
+ bool operator<=(Angle other) const { return value<=other.value; }
+ bool operator>(Angle other) const { return value>other.value; }
+ bool operator>=(Angle other) const { return value>=other.value; }
- Angle &wrap_with_base(const Angle &);
+ Angle &wrap_with_base(Angle);
Angle &wrap_positive();
Angle &wrap_balanced();
};
}
template<typename T>
-inline Angle<T> &Angle<T>::operator+=(const Angle &a)
+inline Angle<T> &Angle<T>::operator+=(Angle a)
{
value += a.value;
return *this;
}
template<typename T>
-inline Angle<T> operator+(const Angle<T> &a1, const Angle<T> &a2)
+inline Angle<T> operator+(Angle<T> a1, Angle<T> a2)
{
Angle<T> r(a1);
return r += a2;
}
template<typename T>
-inline Angle<T> &Angle<T>::operator-=(const Angle &a)
+inline Angle<T> &Angle<T>::operator-=(Angle a)
{
value -= a.value;
return *this;
}
template<typename T>
-inline Angle<T> operator-(const Angle<T> &a1, const Angle<T> &a2)
+inline Angle<T> operator-(Angle<T> a1, Angle<T> a2)
{
Angle<T> r(a1);
return r -= a2;
}
template<typename T>
-inline Angle<T> operator-(const Angle<T> &a)
+inline Angle<T> operator-(Angle<T> a)
{
return Angle<T>::zero()-a;
}
}
template<typename T>
-inline Angle<T> operator*(const Angle<T> &a, T s)
+inline Angle<T> operator*(Angle<T> a, T s)
{
Angle<T> r(a);
return r *= s;
}
template<typename T>
-inline Angle<T> operator*(T s, const Angle<T> &a)
+inline Angle<T> operator*(T s, Angle<T> a)
{
return a*s;
}
}
template<typename T>
-inline Angle<T> operator/(const Angle<T> &a, T s)
+inline Angle<T> operator/(Angle<T> a, T s)
{
Angle<T> r(a);
return r /= s;
}
template<typename T>
-inline Angle<T> operator/(T s, const Angle<T> &a)
+inline Angle<T> operator/(T s, Angle<T> a)
{
return a/s;
}
template<typename T>
-inline T operator/(const Angle<T> &a1, const Angle<T> &a2)
+inline T operator/(Angle<T> a1, Angle<T> a2)
{
return a1.radians()/a2.radians();
}
template<typename T>
-inline Angle<T> &Angle<T>::wrap_with_base(const Angle<T> &b)
+inline Angle<T> &Angle<T>::wrap_with_base(Angle<T> b)
{
const T two_pi = 6.28318530717958647692;
while(value<b.value)
}
template<typename T>
-inline Angle<T> wrap_with_base(const Angle<T> &a, const Angle<T> &b)
+inline Angle<T> wrap_with_base(Angle<T> a, Angle<T> b)
{
Angle<T> r = a;
return r.wrap_with_base(b);
}
template<typename T>
-inline Angle<T> wrap_positive(const Angle<T> &a)
+inline Angle<T> wrap_positive(Angle<T> a)
{
Angle<T> r = a;
return r.wrap_positive();
}
template<typename T>
-inline Angle<T> wrap_balanced(const Angle<T> &a)
+inline Angle<T> wrap_balanced(Angle<T> a)
{
Angle<T> r = a;
return r.wrap_balanced();
}
template<typename T>
-inline Angle<T> abs(const Angle<T> &angle)
+inline Angle<T> abs(Angle<T> angle)
{
using std::abs;
return Angle<T>::from_radians(abs(angle.radians()));
}
template<typename T>
-inline T sin(const Angle<T> &angle)
+inline T sin(Angle<T> angle)
{
using std::sin;
return sin(angle.radians());
}
template<typename T>
-inline T cos(const Angle<T> &angle)
+inline T cos(Angle<T> angle)
{
using std::cos;
return cos(angle.radians());
}
template<typename T>
-inline T tan(const Angle<T> &angle)
+inline T tan(Angle<T> angle)
{
using std::tan;
return tan(angle.radians());