33 #define _USE_MATH_DEFINES
42 template<
unsigned int dims,
class _t =
int>
48 for (
unsigned int i=0;i<dims;i++)
pos[i]=0;
51 explicit Pos(_t x0, _t x1, _t x2) {
56 explicit Pos(_t x0, _t x1) {
65 for (
unsigned int i=0;i<dims;i++)
pos[i]=p.
pos[i];
69 for (
unsigned int i=0;i<dims;i++)
pos[i]=d[i][0];
74 for (
unsigned int i=0;i<dims;i++) {
75 pos[i]=
static_cast<_t
>(0);
88 for (
unsigned int i=0;i<dims;i++)
pos[i]=p.
pos[i];
93 for (
unsigned int i=0;i<dims;i++)
pos[i]+=p.
pos[i];
98 for (
unsigned int i=0;i<dims;i++)
pos[i]-=p.
pos[i];
103 for (
unsigned int i=0;i<dims;i++)
pos[i]/=skalar;
108 for (
unsigned int i=0;i<dims;i++)
pos[i]*=skalar;
114 for (
unsigned int i=0;i<dims;i++) result[i]=
pos[i]+p.
pos[i];
120 for (
unsigned int i=0;i<dims;i++) result[i]=
pos[i]-p.
pos[i];
126 for (
unsigned int i=0;i<dims;i++) result[i]=
pos[i]*skalar;
132 for (
unsigned int i=0;i<dims;i++) result[i]=
pos[i]/skalar;
138 for (
unsigned int i=0;i<dims;i++) result+=p[i]*
pos[i];
144 for (
unsigned int i=0;i<dims;i++) result[i]=
pos[i];
150 for (
unsigned int i=0;i<dims;i++) result[i][0]=
pos[i];
155 for (
unsigned int i=0;i<dims;i++)
pos[i]=d[i][0];
162 template<
unsigned int dims,
class _t>
164 for (
unsigned int i=0;i<dims;i++)
if (a[i]!=b[i])
return false;
168 template<
unsigned int dims>
175 template<
unsigned int dims,
class _t>
176 std::ostream& operator << (std::ostream &o, const Pos<dims, _t> &p) {
177 for (
unsigned int i=0;i<dims;i++) {
179 if (i+1<dims) o <<
" ";
184 template<
unsigned int dims,
class _t>
186 for (
unsigned int i=0;i<dims;i++) {
192 template<
unsigned int dims>
195 for (
unsigned int i=0;i<dims;i++) {
201 return std::sqrt(result);
205 template<
unsigned int dims>
208 for (
unsigned int i=0;i<dims;i++) {
214 return std::sqrt(result);
218 template<
unsigned int dims>
221 for (
unsigned int i=0;i<dims;i++) {
224 return std::sqrt(result);
227 template<
unsigned int dims,
typename _t>
230 for (
unsigned int i=0;i<dims;i++) {
240 return pos[0]>=rgn[0] && pos[0]<=rgn[2] &&
241 pos[1]>=rgn[1] && pos[1]<=rgn[3];
245 template<
unsigned int dims,
class _t>