Beispiel #1
0
void Ray3D::closestPoint(const Line3D& l,Real& t,Real& u) const
{
  Line3D::closestPoint(l,t,u);
  if(t < 0) {
    t=0;
    u=l.closestPointParameter(source);
  }
}
Beispiel #2
0
bool Circle3D::intersects(const Line3D& l,Real* _t) const
{
  Plane3D p;
  getPlane(p);
  Real t;
  if(p.intersectsLine(l,&t)) {
    if(t == Inf)  { //line lies in plane
      t = l.closestPointParameter(center);
    }
    if(_t) (*_t)=t;
    Point3D pt;
    l.eval(t,pt);
    return DistanceLEQ(pt,center,radius);
  }
  return false;
}
Beispiel #3
0
Real HollowBall::closestPoint(const Line3D& line) const
{
  return line.closestPointParameter(center);
}