Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Line.cpp

    r6256f5 rf932b7  
    3737Line::~Line()
    3838{}
    39 
    40 Line &Line::operator=(const Line& rhs){
    41   if(this!=&rhs){
    42     origin.reset(new Vector(*rhs.origin));
    43     direction.reset(new Vector(*rhs.direction));
    44   }
    45   return *this;
    46 }
    4739
    4840
     
    242234}
    243235
    244 LinePoint Line::getLinePoint(const Vector &point) const{
    245   ASSERT(isContained(point),"Line point queried for point not on line");
    246   Vector helper = point - (*origin);
    247   double param = helper.ScalarProduct(*direction);
    248   return LinePoint(*this,param);
    249 }
    250 
    251 LinePoint Line::posEndpoint() const{
    252   return LinePoint(*this, numeric_limits<double>::infinity());
    253 }
    254 LinePoint Line::negEndpoint() const{
    255   return LinePoint(*this,-numeric_limits<double>::infinity());
    256 }
    257 
    258 bool operator==(const Line &x,const Line &y){
    259   return *x.origin == *y.origin && *x.direction == *y.direction;
    260 }
    261 
    262236Line makeLineThrough(const Vector &x1, const Vector &x2){
    263237  if(x1==x2){
     
    266240  return Line(x1,x1-x2);
    267241}
    268 
    269 
    270 /******************************** Points on the line ********************/
    271 
    272 LinePoint::LinePoint(const LinePoint &src) :
    273   line(src.line),param(src.param)
    274 {}
    275 
    276 LinePoint::LinePoint(const Line &_line, double _param) :
    277   line(_line),param(_param)
    278 {}
    279 
    280 LinePoint& LinePoint::operator=(const LinePoint &src){
    281   ASSERT(src.line==line,"Operation on two points of different lines");
    282   param=src.param;
    283   return *this;
    284 }
    285 
    286 Vector LinePoint::getPoint() const{
    287   ASSERT(!isInfinite(),"getPoint() on infinite LinePoint called");
    288   return (*line.origin)+param*(*line.direction);
    289 }
    290 
    291 Line LinePoint::getLine() const{
    292   return line;
    293 }
    294 
    295 bool LinePoint::isInfinite() const{
    296   return isPosInfinity() || isNegInfinity();
    297 }
    298 bool LinePoint::isPosInfinity() const{
    299   return param == numeric_limits<double>::infinity();
    300 }
    301 bool LinePoint::isNegInfinity() const{
    302   return param ==-numeric_limits<double>::infinity();
    303 }
    304 
    305 bool operator==(const LinePoint &x, const LinePoint &y){
    306   ASSERT(x.line==y.line,"Operation on two points of different lines");
    307   return x.param == y.param;
    308 
    309 }
    310 bool operator<(const LinePoint &x, const LinePoint &y){
    311   ASSERT(x.line==y.line,"Operation on two points of different lines");
    312   return x.param<y.param;
    313 }
Note: See TracChangeset for help on using the changeset viewer.