Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4TessellatedGeometryAlgorithms.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration and of QinetiQ Ltd, *
20// * subject to DEFCON 705 IPR conditions. *
21// * By using, copying, modifying or distributing the software (or *
22// * any work based on the software) you agree to acknowledge its *
23// * use in resulting scientific publications, and indicate your *
24// * acceptance of all terms of the Geant4 Software license. *
25// ********************************************************************
26//
27// $Id:
28// GEANT4 tag $Name: not supported by cvs2svn $
29//
30// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31//
32// Class G4TessellatedGeometryAlgorithms
33//
34// Class description:
35//
36// The G4TessellatedGeometryAlgorithms class is used to contain standard
37// routines to determine whether (and if so where) simple geometric shapes
38// intersect.
39//
40// The constructor doesn't need to do anything, and neither does the
41// destructor.
42//
43// IntersectLineAndTriangle2D
44// Determines whether there is an intersection between a line defined
45// by r = p + s.v and a triangle defined by verticies P0, P0+E0 and P0+E1.
46// Here:
47// p = 2D vector
48// s = scaler on [0,infinity)
49// v = 2D vector
50// P0, E0 and E1 are 2D vectors
51// Information about where the intersection occurs is returned in the
52// variable location.
53//
54// IntersectLineAndLineSegment2D
55// Determines whether there is an intersection between a line defined
56// by r = P0 + s.D0 and a line-segment with endpoints P1 and P1+D1.
57// Here:
58// P0 = 2D vector
59// s = scaler on [0,infinity)
60// D0 = 2D vector
61// P1 and D1 are 2D vectors
62// Information about where the intersection occurs is returned in the
63// variable location.
64
65// CHANGE HISTORY
66// --------------
67//
68// 07 August 2007, P R Truscott, QinetiQ Ltd, UK - Created, with member
69// functions based on the work of Rickard Holmberg.
70// 12 October 2012, M Gayer, CERN, - Reviewed optimized implementation.
71//
72///////////////////////////////////////////////////////////////////////////////
73#ifndef G4TessellatedGeometryAlgorithms_hh
74#define G4TessellatedGeometryAlgorithms_hh 1
75
76#include "G4TwoVector.hh"
77
79{
80 public:
81
83 const G4TwoVector &v,
84 const G4TwoVector &p0,
85 const G4TwoVector &e0,
86 const G4TwoVector &e1,
87 G4TwoVector location[2]);
89 const G4TwoVector &d0,
90 const G4TwoVector &p1,
91 const G4TwoVector &d1,
92 G4TwoVector location[2]);
93 static G4double cross(const G4TwoVector &v1, const G4TwoVector &v2);
94};
95
96#endif
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
static G4bool IntersectLineAndTriangle2D(const G4TwoVector &p, const G4TwoVector &v, const G4TwoVector &p0, const G4TwoVector &e0, const G4TwoVector &e1, G4TwoVector location[2])
static G4double cross(const G4TwoVector &v1, const G4TwoVector &v2)
static G4int IntersectLineAndLineSegment2D(const G4TwoVector &p0, const G4TwoVector &d0, const G4TwoVector &p1, const G4TwoVector &d1, G4TwoVector location[2])