8 #define DEBUG_STREAM cerr << __func__ << ":" //FIXME 41 return p1.
x*p2.
x+p1.
y*p2.
y;
45 template <
class T,
class A>
52 T s=sin(alpha),
c=cos(alpha);
54 a=atan2(sin(a),cos(a));
64 template <
class T,
class A>
66 if (theta >= -M_PI && theta < M_PI)
69 int multiplier = (int)(theta / (2*M_PI));
70 theta = theta - multiplier*2*M_PI;
78 template <
class T,
class A>
86 template <
class T,
class A>
91 template <
class T,
class A>
96 template <
class T,
class A>
101 template <
class T,
class A>
106 template <
class T,
class A>
110 double s=sin(p2.theta),
c=cos(p2.theta);
115 template <
class T,
class A>
122 template <
class T,
class A>
131 return a.
x<b.
x || (a.
x==b.
x && a.
y<b.
y);
141 return (atan2(delta1.
y,delta1.
x)<atan2(delta2.
y,delta2.
x));
148 p.
x=p.
x>p2.
x?p.
x:p2.
x;
149 p.
y=p.
y>p2.
y?p.
y:p2.
y;
156 p.
x=p.
x<p2.
x?p.
x:p2.
x;
157 p.
y=p.
y<p2.
y?p.
y:p2.
y;
161 template <
class T,
class F>
163 F gain=(t3-t1)/(t2-t1);
168 template <
class T,
class A,
class F>
171 F gain=(t3-t1)/(t2-t1);
173 p.
x=p1.
x+(p2.
x-p1.
x)*gain;
174 p.
y=p1.
y+(p2.
y-p1.
y)*gain;
184 return hypot(p1.
x-p2.
x, p1.
y-p2.
y);
186 template <
class T,
class A>
188 return hypot(p1.
x-p2.
x, p1.
y-p2.
y);
190 template <
class T,
class A>
192 return hypot(p1.
x-p2.
x, p1.
y-p2.
y);
194 template <
class T,
class A>
196 return hypot(p1.
x-p2.
x, p1.
y-p2.
y);
const char *const *argv double delta
void normalize(const Iterator &begin, const Iterator &end)
point< T > min(const point< T > &p1, const point< T > &p2)
orientedpoint< T, A > rotate(A alpha)
point< T > operator-(const point< T > &p1, const point< T > &p2)
double euclidianDist(const point< T > &p1, const point< T > &p2)
orientedpoint< T, A > absoluteSum(const orientedpoint< T, A > &p1, const orientedpoint< T, A > &p2)
point< T > max(const point< T > &p1, const point< T > &p2)
orientedpoint< T, A > absoluteDifference(const orientedpoint< T, A > &p1, const orientedpoint< T, A > &p2)
point< T > operator*(const point< T > &p, const T &v)
orientedpoint(T x, T y, A _theta)
point< T > operator+(const point< T > &p1, const point< T > &p2)
point< T > interpolate(const point< T > &p1, const F &t1, const point< T > &p2, const F &t2, const F &t3)
orientedpoint< double, double > OrientedPoint