27 #include "utility/matrices/TMatrix.h" 28 #include "../cgal_types.h" 29 #include "boost/lexical_cast.hpp" 30 #include "utility/utils/misc_utils/matem.h" 41 typedef typename POS::vector vector;
44 : m_pos(mp,f1,c1,f2,c2) {}
46 PosArray(
const size_t &f=1,
const size_t &c=1,
const POS &p= POS()): m_pos(f,c,p) {}
47 PosArray(
const POS &p1,
const POS &p2,
const size_t &num,
const GEOM_FT &ratio);
48 PosArray(
const POS &p1,
const POS &p2,
const size_t &ndiv);
49 PosArray(
const POS &p1,
const POS &p2,
const std::vector<GEOM_FT> &longs);
50 PosArray(
const POS &p0,
const POS &p1,
const POS &p2,
const size_t &ndiv1,
const size_t &ndiv2);
52 inline PosArray<POS> getBox(
size_t f1,
size_t c1,
size_t f2,
size_t c2)
const 53 {
return PosArray(*
this,f1,c1,f2,c2); }
55 {
return getBox(iRow,1,iRow,this->n_columns); }
57 {
return getBox(1,col,this->n_rows,col); }
68 const vector v_ratio= ratio * (p2-p1);
69 for(
size_t i=1;i<=num;i++)
90 const GEOM_FT ratio= double_to_FT(1.0/boost::lexical_cast<double>(ndiv));
91 const vector v_ratio= ratio * (p2-p1);
92 for(
size_t i=1;i<=ndiv+1;i++)
110 :
m_pos(longs.size()+1,1)
112 const size_t sz= longs.size();
113 const size_t num= sz+1;
116 std::cerr <<
"PosArray::" << __FUNCTION__
117 <<
"; list of lengths is empty." << std::endl;
128 for(std::vector<GEOM_FT>::const_iterator i=longs.begin();i!=longs.end();i++)
131 const vector v= p2-p1;
132 for(
size_t i=0;i<sz;i++)
134 p= p + (longs[i]/denom)*v;
144 :
m_pos(ndiv1+1,ndiv2+1)
146 const GEOM_FT dn1= double_to_FT(1.0/boost::lexical_cast<double>(ndiv1));
147 const GEOM_FT dn2= double_to_FT(1.0/boost::lexical_cast<double>(ndiv2));
148 const vector v01= (p1-p0)*dn1;
149 const vector v02= (p2-p0)*dn2;
150 const size_t n_rows= this->getNumberOfRows();
151 const size_t n_columns= this->getNumberOfColumns();
152 for(
size_t i=1;i<=n_rows;i++)
154 const vector vi= boost::lexical_cast<
int>(i-1)*v02;
155 for(
size_t j=1;j<=n_columns;j++)
156 (*
this)(i,j)= p0+vi+boost::lexical_cast<int>(j-1)*v01;
162 :
m_pos(l1_points.getNumberOfRows(),l2_points.getNumberOfRows())
186 const size_t row_number= l1_points.getNumberOfRows();
187 const size_t num_cols= l2_points.getNumberOfRows();
189 for(
size_t i=1;i<=row_number;i++)
194 row_points= l2_points;
196 row_points=
PosArray(l1_points(i,1),l3_points(i,1),num_cols-1);
198 for(
size_t j=1;j<=num_cols;j++)
199 (*
this)(i,j)= row_points(j,1);
203 template <
class POS,
class SEG>
207 const size_t n_rows= m.getNumberOfRows();
208 const size_t n_columns= m.getNumberOfColumns();
209 const size_t iRow= n_rows/2;
210 const size_t iColumn= n_columns/2;
211 if(impar(n_rows) && impar(n_columns))
212 retval= m(iRow+1,iColumn+1);
214 if(par(n_rows) && par(n_columns))
216 SEG s(m(iRow,iColumn),m(iRow+1,iColumn+1));
217 retval= s.getCenterOfMass();
222 SEG s(m(iRow,iColumn),m(iRow,iColumn+1));
223 retval= s.getCenterOfMass();
227 SEG s(m(iRow,iColumn),m(iRow+1,iColumn));
228 retval= s.getCenterOfMass();
270 const size_t nptos1= l1_points.getNumberOfRows();
271 const size_t nptos2= l2_points.getNumberOfRows();
272 const size_t ntot= nptos1*nptos2;
276 for(
size_t j=1;j<=nptos1;j++)
277 retval(1,j)= l1_points(j);
279 for(
size_t i=2;i<=nptos1;i++)
280 retval(i,1)= l2_points(i);
282 for(
size_t i=2;i<=nptos1;i++)
284 const typename PosArray<POS>::vector v= retval(i,1)-retval(i-1,1);
285 for(
size_t j=2;j<=nptos1;j++)
286 retval(i,j)= retval(i-1,j)+v;
Base class for position matrices used to represent grids of points.
Definition: PosArray.h:37
Base class for quadrilateral domains.
Definition: ShapeFunction.h:181