54 constructorParams.origin = origin;
55 constructorParams.axis = axis;
56 constructorParams.direction = direction;
57 constructorParams.length = length;
58 constructorParams.radius = radius;
59 constructorParams.large_radius = large_radius;
76 constructorParams.origin = rhs.constructorParams.origin;
77 constructorParams.axis = rhs.constructorParams.axis;
78 constructorParams.direction = rhs.constructorParams.direction;
79 constructorParams.length = rhs.constructorParams.length;
80 constructorParams.radius = rhs.constructorParams.radius;
81 constructorParams.large_radius = rhs.constructorParams.large_radius;
90 if (
this == &rhs) {
return *
this; }
98 constructorParams.origin = rhs.constructorParams.origin;
99 constructorParams.axis = rhs.constructorParams.axis;
100 constructorParams.direction = rhs.constructorParams.direction;
101 constructorParams.length = rhs.constructorParams.length;
102 constructorParams.radius = rhs.constructorParams.radius;
103 constructorParams.large_radius = rhs.constructorParams.large_radius;
110void G4BREPSolidCone::InitializeCone()
115 + (constructorParams.radius
116 * constructorParams.direction));
118 G4Vector3D tmporigin(constructorParams.origin);
121 tmppoint=
G4Point3D(constructorParams.origin)
122 + (constructorParams.length*tmpaxis);
123 G4Point3D origin2(tmppoint.
x(), tmppoint.
y(), tmppoint.
z());
125 tmppoint= origin2 + (constructorParams.large_radius*tmpaxis);
126 G4Point3D ArcStart2(tmppoint.
x(), tmppoint.
y(), tmppoint.
z());
128 G4Ray::Vcross(tmpaxis, constructorParams.axis, constructorParams.direction);
136 axis2, constructorParams.origin),
137 constructorParams.large_radius);
143 constructorParams.large_radius);
148 constructorParams.length,
149 constructorParams.radius,
150 constructorParams.large_radius);
157 axis2, constructorParams.origin),
158 constructorParams.radius);
160 CVec2.push_back(tmp);
167 constructorParams.large_radius);
171 constructorParams.origin);
193 if(dist1 > dist2) dist1 = dist2;
194 if(dist1 > dist3) dist1 = dist3;
212 if(dist1 > dist2) dist1 = dist2;
213 if(dist1 > dist3) dist1 = dist3;
225 G4Ray r(Pttmp, Vtmp);
249 G4Ray r(Pttmp, Vtmp);
263 if(dist1 > dist2) dist1 = dist2;
264 if(dist1 > dist3) dist1 = dist3;
278 <<
"\n origin: " << constructorParams.origin
279 <<
"\n axis: " << constructorParams.axis
280 <<
"\n direction: " << constructorParams.direction
281 <<
"\n length: " << constructorParams.length
282 <<
"\n radius: " << constructorParams.radius
283 <<
"\n large_radius: " << constructorParams.large_radius
284 <<
"\n-----------------------------------------------------------\n";
std::vector< G4Curve * > G4CurveVector
HepGeom::Point3D< G4double > G4Point3D
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const
G4BREPSolidCone & operator=(const G4BREPSolidCone &rhs)
std::ostream & StreamInfo(std::ostream &os) const
EInside Inside(register const G4ThreeVector &Pt) const
G4double DistanceToOut(register const G4ThreeVector &p, register const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const
G4double DistanceToIn(const G4ThreeVector &p) const
G4BREPSolidCone(const G4String &name, const G4ThreeVector &origin, const G4ThreeVector &axis, const G4ThreeVector &direction, G4double length, G4double radius, G4double large_radius)
G4BREPSolid & operator=(const G4BREPSolid &rhs)
G4int Intersect(register const G4Ray &) const
virtual std::ostream & StreamInfo(std::ostream &os) const
virtual void Reset() const
void CheckSurfaceNormals()
virtual void CalcBBoxes()
static G4double ShortestDistance
void Init(const G4Axis2Placement3D &position0, G4double radius0)
void SetBounds(G4double p1, G4double p2)
static void Vcross(G4Plane &a, const G4Vector3D &b, const G4Vector3D &c)
virtual G4double ClosestDistanceToPoint(const G4Point3D &Pt)
virtual G4Vector3D Normal(const G4Vector3D &p) const
void SetBoundaries(G4CurveVector *)
virtual G4double HowNear(const G4Vector3D &x) const
G4double GetDistance() const