Code_TYMPAN  4.4.0
Industrial site acoustic simulation
ValidRay.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) <2012-2024> <EDF-DTG> <FRANCE>
3  * This file is part of Code_TYMPAN (R).
4  * Code_TYMPAN (R) is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  * Code_TYMPAN (R) is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  * You should have received a copy of the GNU General Public License along
13  * with Code_TYMPAN (R). If not, see <https://www.gnu.org/licenses/>.
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:387
Intersection struct.
Definition: Shape.h:46