Code_TYMPAN  4.4.0
Industrial site acoustic simulation
ValidRay.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) <2012> <EDF-R&D> <FRANCE>
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License as published by
5  * the Free Software Foundation; either version 2 of the License, or
6  * (at your option) any later version.
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10  * See the GNU General Public License for more details.
11  * You should have received a copy of the GNU General Public License along
12  * with this program; if not, write to the Free Software Foundation, Inc.,
13  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
14  */
15 
16 #ifndef VALIDRAY_H
17 #define VALIDRAY_H
18 
19 #include "Ray/Ray.h"
20 #include "Geometry/Shape.h"
21 
26 namespace ValidRay
27 {
28 
32 
37 bool computeRealImpact(Ray* r, Intersection* inter, Cylindre* cylindre, vec3& impact);
38 
42 bool isRayPassesNearRidge(Ray* r, const vec3& impact, const vec3& realImpact);
43 
50 bool pathDiffValidationForDiffraction(Ray* r, const vec3& impact);
51 
57 bool pathDiffValidationForReflection(Ray* r, const vec3& impact);
58 
62 void computeCumulDistance(Ray* r, const vec3& impact);
63 
64 #ifdef _ALLOW_TARGETING_
65 void appendDirectionToEvent(boost::shared_ptr<Event> e, TargetManager& targets);
66 #endif //_ALLOW_TARGETING_
67 }; // namespace ValidRay
68 
69 #endif
Cylinder class.
Definition: Cylindre.h:27
: Describes a ray by a pair of unsigned int. The first one gives the source number (in the range 0-40...
Definition: Ray.h:38
Class to manage targets.
Definition: TargetManager.h:27
This namespace contains all the functions needed for a ray validation.
bool isRayPassesNearRidge(Ray *r, const vec3 &impact, const vec3 &realImpact)
Return True if ray passes near enough the ridge for it be in the thickness of the ray.
Definition: ValidRay.cpp:168
bool validRayWithDoNothingEvent(Ray *r, Intersection *inter)
Definition: ValidRay.cpp:24
void computeCumulDistance(Ray *r, const vec3 &impact)
adds the distance between impact and the last REFLECTION/SOURCE of the ray to the cumulDistance of th...
Definition: ValidRay.cpp:85
bool pathDiffValidationForReflection(Ray *r, const vec3 &impact)
Tests if the addition of a reflection event at position impact does not cause the pathDifference to e...
Definition: ValidRay.cpp:100
bool validTriangleWithSpecularReflexion(Ray *r, Intersection *inter)
Definition: ValidRay.cpp:46
bool computeRealImpact(Ray *r, Intersection *inter, Cylindre *cylindre, vec3 &impact)
Try to compute the intersection of the ray and the ridge.
Definition: ValidRay.cpp:139
bool pathDiffValidationForDiffraction(Ray *r, const vec3 &impact)
Tests if the addition of a diffraction event at position impact does not cause the pathDifference to ...
Definition: ValidRay.cpp:121
bool validCylindreWithDiffraction(Ray *r, Intersection *inter)
Definition: ValidRay.cpp:184
base_vec3< decimal > vec3
Definition: mathlib.h:381
Intersection struct.
Definition: Shape.h:46