56 G4int lineSegmentsPerCircle)
57 : fpShaftPolyhedron(
nullptr)
58 , fpHeadPolyhedron(
nullptr)
60 fType =
"G4ArrowModel";
62 fGlobalDescription = fType +
": " + description;
79 (std::pow(x2-x1,2)+std::pow(y2-y1,2)+std::pow(z2-z1,2));
80 if (shaftLength < tolerance) shaftLength = tolerance;
82 if (shaftRadius > shaftLength/100.) shaftRadius = shaftLength/100.;
83 if (shaftRadius < tolerance) shaftRadius = tolerance;
84 const G4double halfShaftLength = shaftLength/2.;
85 const G4double halfReduction = 4.*shaftRadius;
86 G4double halfLength = halfShaftLength - halfReduction;
87 if (halfLength < tolerance) halfLength = tolerance;
88 const G4Tubs shaft(
"shaft",0.,shaftRadius,halfLength,0.,
twopi);
91 if (fpShaftPolyhedron)
95 const G4double zHi = halfShaftLength;
96 const G4double zLow = halfShaftLength - 12.*shaftRadius;
97 const G4double rExt = 8. * shaftRadius;
98 const G4double xExt = std::sqrt(3.)*rExt/2.;
99 const G4Tet head(
"head",
110 const G4Point3D arrowCentre(0.5*(x1+x2),0.5*(y1+y2),0.5*(z1+z2));
113 if (fpShaftPolyhedron) fpShaftPolyhedron->Transform(tr);
114 if (fpHeadPolyhedron) fpHeadPolyhedron->Transform(tr);
119 if (fpShaftPolyhedron) fpShaftPolyhedron->SetVisAttributes(va);
120 if (fpHeadPolyhedron) fpHeadPolyhedron->SetVisAttributes(va);