Import Geant4 10.7.0 source tree

This commit is contained in:
Gabriele Cosmo
2020-12-04 12:30:43 +01:00
parent 67ba86d073
commit dab42d2018
3770 changed files with 226369 additions and 286486 deletions
@@ -57,10 +57,11 @@ protected:
};
class pick_action : public matrix_action, public primitive_visitor {
TOOLS_ACTION(pick_action,tools::sg::pick_action,matrix_action)
protected:
virtual bool project(float& a_x,float& a_y,float& a_z,float& a_w) {
return project_point(a_x,a_y,a_z,a_w);
return parent::project_point(a_x,a_y,a_z,a_w);
}
virtual bool add_point(float a_x,float a_y,float a_z,float a_w) {
@@ -73,16 +74,11 @@ protected:
virtual bool add_point(float a_x,float a_y,float a_z,float a_w,
float,float,float,float) {
if(is_inside(a_x,a_y,a_z,a_w)) { //we have a pick.
m_done = true;
return false; //to stop
}
return true; //continue.
return pick_action::add_point(a_x,a_y,a_z,a_w);
}
virtual bool add_line(float a_bx,float a_by,float a_bz,float a_bw,
float a_ex,float a_ey,float a_ez,float a_ew) {
if(is_inside(a_bx,a_by,a_bz,a_bw)) {
m_done = true;
return false;
@@ -103,8 +99,7 @@ protected:
float,float,float,float,
float a_ex,float a_ey,float a_ez,float a_ew,
float,float,float,float){
return add_line(a_bx,a_by,a_bz,a_bw,
a_ex,a_ey,a_ez,a_ew);
return pick_action::add_line(a_bx,a_by,a_bz,a_bw,a_ex,a_ey,a_ez,a_ew);
}
virtual bool add_triangle(float a_p1x,float a_p1y,float a_p1z,float a_p1w,
@@ -120,19 +115,57 @@ protected:
}
virtual bool add_triangle(float a_p1x,float a_p1y,float a_p1z,float a_p1w,
float,float,float,float,
float,float,float,float,
float a_p2x,float a_p2y,float a_p2z,float a_p2w,
float,float,float,float,
float,float,float,float,
float a_p3x,float a_p3y,float a_p3z,float a_p3w,
float,float,float,float){
float,float,float,float){
return pick_action::add_triangle(a_p1x,a_p1y,a_p1z,a_p1w,
a_p2x,a_p2y,a_p2z,a_p2w,
a_p3x,a_p3y,a_p3z,a_p3w);
}
virtual bool project_normal(float&,float&,float&) {return true;}
virtual bool add_point_normal(float a_x,float a_y,float a_z,float a_w,
float,float,float) {
return pick_action::add_point(a_x,a_y,a_z,a_w);
}
virtual bool add_point_normal(float a_x,float a_y,float a_z,float a_w,
float,float,float,
float,float,float,float) {
return pick_action::add_point(a_x,a_y,a_z,a_w);
}
virtual bool add_line_normal(float a_bx,float a_by,float a_bz,float a_bw, float,float,float,
float a_ex,float a_ey,float a_ez,float a_ew, float,float,float) {
return pick_action::add_line(a_bx,a_by,a_bz,a_bw,a_ex,a_ey,a_ez,a_ew);
}
virtual bool add_line_normal(float a_bx,float a_by,float a_bz,float a_bw, float,float,float, float,float,float,float,
float a_ex,float a_ey,float a_ez,float a_ew, float,float,float, float,float,float,float) {
return pick_action::add_line(a_bx,a_by,a_bz,a_bw,a_ex,a_ey,a_ez,a_ew);
}
virtual bool add_triangle_normal(float a_p1x,float a_p1y,float a_p1z,float a_p1w, float,float,float,
float a_p2x,float a_p2y,float a_p2z,float a_p2w, float,float,float,
float a_p3x,float a_p3y,float a_p3z,float a_p3w, float,float,float) {
return pick_action::add_triangle(a_p1x,a_p1y,a_p1z,a_p1w,
a_p2x,a_p2y,a_p2z,a_p2w,
a_p3x,a_p3y,a_p3z,a_p3w);
}
virtual bool add_triangle_normal(float a_p1x,float a_p1y,float a_p1z,float a_p1w,
float,float,float, float,float,float,float,
float a_p2x,float a_p2y,float a_p2z,float a_p2w,
float,float,float, float,float,float,float,
float a_p3x,float a_p3y,float a_p3z,float a_p3w,
float,float,float, float,float,float,float) {
return pick_action::add_triangle(a_p1x,a_p1y,a_p1z,a_p1w,
a_p2x,a_p2y,a_p2z,a_p2w,
a_p3x,a_p3y,a_p3z,a_p3w);
}
public:
pick_action(std::ostream& a_out,unsigned int a_ww,unsigned int a_wh,float a_l,float a_r,float a_b,float a_t)
:matrix_action(a_out,a_ww,a_wh)
:parent(a_out,a_ww,a_wh)
,m_l(a_l)
,m_r(a_r)
,m_b(a_b)
@@ -146,7 +179,7 @@ public:
virtual ~pick_action(){}
public:
pick_action(const pick_action& a_from)
:matrix_action(a_from)
:parent(a_from)
,primitive_visitor(a_from)
,m_l(a_from.m_l)
,m_r(a_from.m_r)
@@ -159,7 +192,7 @@ public:
set_to_pick_ndc(); //OPTIMIZATION
}
pick_action& operator=(const pick_action& a_from){
matrix_action::operator=(a_from);
parent::operator=(a_from);
primitive_visitor::operator=(a_from);
m_l = a_from.m_l;
m_r = a_from.m_r;
@@ -176,7 +209,7 @@ public:
}
public:
void reset() {
matrix_action::reset();
parent::reset();
m_done = false;
m_node = 0;
m_zs.clear();
@@ -197,7 +230,7 @@ public:
void set_area(float a_l,float a_r,float a_b,float a_t) {
// a_l,a_r,a_b,a_t are in window coordinates (pixels)
// but handled in floats for intersection computation precision.
// WARNING : we must have a_t>a_b and a_r>a_l. No check is done for that.
// WARNING : we must have a_t>a_b and a_r>a_l. No check is done for that.
m_l = a_l;
m_r = a_r;
m_b = a_b;
@@ -567,7 +600,7 @@ protected:
if(is_inside(a_2x,a_2y,a_2z,a_2w)) return true;
if(is_inside(a_3x,a_3y,a_3z,a_3w)) return true;
// alll points are outside.
// alll points are outside.
float x1,y1;
to_pick_ndc(a_1x,a_1y,x1,y1);
@@ -589,7 +622,7 @@ protected:
if(ortho_clip_line(bx,by,bz,bw, ex,ey,ez,ew, toggle)) {
m_zs.push_back(bz);
m_ws.push_back(bw);
return true;
return true;
}
float x3,y3;
@@ -607,7 +640,7 @@ protected:
if(ortho_clip_line(bx,by,bz,bw, ex,ey,ez,ew, toggle)) {
m_zs.push_back(bz);
m_ws.push_back(bw);
return true;
return true;
}
bx = x1;
@@ -622,13 +655,13 @@ protected:
if(ortho_clip_line(bx,by,bz,bw, ex,ey,ez,ew, toggle)) {
m_zs.push_back(bz);
m_ws.push_back(bw);
return true;
return true;
}
// no intersection with edges.
// but the triangle may surround [-1,1]x[-1,1] !
// test if O=(0,0) is inside the triangle :
// test if O=(0,0) is inside the triangle :
float xo = 0;
float yo = 0;
@@ -676,7 +709,7 @@ protected:
vec3f O(0,0,0);
line<vec3f> ln(O,O+vec3f(0,0,1));
vec3f pz;
vec3f pz;
{vec3f p1(x1,y1,a_1z);
vec3f p2(x2,y2,a_2z);
vec3f p3(x3,y3,a_3z);
@@ -684,7 +717,7 @@ protected:
if(!pl.intersect(ln,pz)) {
m_out << "pick_action::intersect_triangle :"
<< " z plane/line intersection failed."
<< std::endl;
<< std::endl;
return false;
}}
@@ -692,7 +725,7 @@ protected:
// (in the xy plane, 1,2,3 points have same projection, then the
// z axis intersection with the triangle hits the same point done with zs
// than with ws).
vec3f pw;
vec3f pw;
{vec3f p1(x1,y1,a_1w);
vec3f p2(x2,y2,a_2w);
vec3f p3(x3,y3,a_3w);
@@ -700,14 +733,14 @@ protected:
if(!pl.intersect(ln,pw)) {
m_out << "pick_action::intersect_triangle :"
<< " plane/line intersection failed."
<< std::endl;
<< std::endl;
return false;
}}
//::printf("debug : w planey %g\n",p[2]);
//m_out << "pick_action::intersect_triangle :"
// << " p " << p[0] << " " << p[1] << " " << p[2]
// << std::endl;
// << std::endl;
m_zs.push_back(pz[2]);
m_ws.push_back(pw[2]);
@@ -724,7 +757,7 @@ protected:
if(!l1p.intersect(l23,q,prec)) {
m_out << "pick_action::intersect_triangle :"
<< " line/line intersection failed."
<< std::endl;
<< std::endl;
return false;
}
float dq2 = (q-p2).length();
@@ -732,7 +765,7 @@ protected:
if(d32==0) {
m_out << "pick_action::intersect_triangle :"
<< " zero d32."
<< std::endl;
<< std::endl;
return false;
}
float dp1 = (pz-p1).length();
@@ -740,7 +773,7 @@ protected:
if(dq1==0) {
m_out << "pick_action::intersect_triangle :"
<< " zero dq1."
<< std::endl;
<< std::endl;
return false;
}
@@ -878,7 +911,7 @@ protected:
// z = -1.
// z = 0.
// G.Barrand : do not do z clipping
/* else if(a_doz && (bout & (1<<4)) ) { //bz < -1
/* else if(a_doz && (bout & (1<<4)) ) { //bz < -1
float t = a_ez-a_bz;
//CHECK_DIV (t,"ClipLineParallel")
t = (-1 - a_z)/t;
@@ -919,7 +952,7 @@ protected:
float m_r;
float m_b;
float m_t;
bool m_stop_at_first;
bool m_done;