35 : startPhi(theStartPhi), totalPhi(theTotalPhi),
36 rx1(0.), ry1(0.), dx1(0.), dy1(0.),
37 rx2(0.), ry2(0.), dx2(0.), dy2(0.),
38 concave(theTotalPhi > UUtils::kPi)
66 dx1 = +
ry1 * 10 * fTolerance;
67 dy1 = -
rx1 * 10 * fTolerance;
71 dx2 = -
ry2 * 10 * fTolerance;
72 dy2 = +
rx2 * 10 * fTolerance;
79 zLo -= 10 * fTolerance;
80 zHi += 10 * fTolerance;
103 if (p.
z <
zLo)
return true;
104 if (p.
z >
zHi)
return true;
139 double cross = p.
x * v.
y - p.
y * v.
x;
140 if (cross >
radius)
return true;
142 double r2 = p.
Perp2();
145 double dot = p.
x * v.
x + p.
y * v.
y;
146 if (dot > 0)
return true;
double SafetyFromOutside(const UVector3 &p) const
double SafetyFromOutside(const UVector3 &p, bool precise=false) const
bool MustBeOutside(const UVector3 &p) const
static double Tolerance()
UEnclosingCylinder(double r, double lo, double hi, bool phiIsOpen, double startPhi, double totalPhi)
bool ShouldMiss(const UVector3 &p, const UVector3 &v) const
void Extent(UVector3 &aMin, UVector3 &aMax) const
double DistanceToIn(const UVector3 &p, const UVector3 &v, double aPstep=UUtils::kInfinity) const
double DistanceTo(const UVector3 &p, const UVector3 &v) const