Changes in src/Line.cpp [6256f5:f932b7]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Line.cpp
r6256f5 rf932b7 37 37 Line::~Line() 38 38 {} 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 }47 39 48 40 … … 242 234 } 243 235 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 262 236 Line makeLineThrough(const Vector &x1, const Vector &x2){ 263 237 if(x1==x2){ … … 266 240 return Line(x1,x1-x2); 267 241 } 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.