40 if (config->UsePostFilters)
61 if (r->
getEvents()->size() >
static_cast<unsigned int>(config->MaxProfondeur)) {
return false; }
67 ( r->
getReflex() <
static_cast<unsigned int>(config->MaxReflexion) ) &&
68 !( !config->UseSol && inter->
p->
isSol() ) )
75 else if (inter->
forme ==
CYLINDRE && r->
getDiff() <
static_cast<unsigned int>(config->MaxDiffraction))
81 #ifdef _ALLOW_TARGETING_ 82 if (isValid && config->EnableFullTargets) { ValidRay::appendDirectionToEvent(r->
events.back(), targetManager); }
83 #endif //_ALLOW_TARGETING_ 120 for (std::map<unsigned long long, Ray*>::iterator it = selectedData.begin(); it != selectedData.end(); it++)
unsigned int getDiff() const
Return the diffractions number encountered by the ray.
std::vector< boost::shared_ptr< Event > > events
Events list for the ray.
: To disable the rays which have a number of reflection events greater than a given threshold or refl...
deque< Ray * > valid_rays
Rays list which are validated by the solver.
bool validCylindreWithDiffraction(Ray *r, Intersection *inter)
This file provides class for solver configuration.
void addSelector(Selector< T > *selector)
Add a Selector to the list.
std::vector< boost::shared_ptr< Event > > * getEvents()
Return the events array encountered by the ray.
bool appendData(T *data)
Append data (typically a ray) and loop on Selectors to filter.
Rejects a ray if two of its events occur on the same shape (for example a diffraction close to a refl...
: Rays can be seen as long cones that get thicker as their length increases based on their associated...
: Rejects rays which have traveled a distance greater than a given length
SelectorManager< Ray > selectorManagerIntersection
std::map< unsigned long long, T * > & getSelectedData()
Get the selected data.
deque< Ray * > debug_rays
Rays list which are invalidated by the solver.
SelectorManager< Ray > selectorManagerValidation
unsigned int getReflex() const
Return the reflections number encountered by the ray.
: To keep only one from two or more rays which have the same history (events on the same primitive) ...
virtual bool valideRayon(Ray *r)
validate a ray by filtering it with the selectors for acceptance or rejection
bool validTriangleWithSpecularReflexion(Ray *r, Intersection *inter)
: Describes a ray by a pair of unsigned int. The first one gives the source number (in the range 0-40...
void reset()
Reset all the Selector and clear the local data.
Clean DoNothing events from ray events list \ –> After ray validation DoNothing events are no longer...
bool isSol() const
Get/Set the flag _isSol (ground or not)
virtual bool invalidRayon(Ray *r)
delete a ray or add it to the list of debug rays
virtual bool postTreatmentScene(Scene *scene, std::vector< Source > &sources, std::vector< Recepteur > &recepteurs)
Virtual function to post-process the Scene. It has two phases: transform the meta-objects and load th...
: Rejects rays if the cumulative length added by the diffractions events in comparison to the length ...
boost::shared_ptr< SolverConfiguration > LPSolverConfiguration
This class mainly define a mesh (list of Shape) used by the Simulation object.
virtual void finish()
End the operations.
virtual bool valideIntersection(Ray *r, Intersection *inter)
validate intersections in function of the type of the intersected primitive
bool constructEdge(Scene *scene)
Build the edges list of a scene.
static LPSolverConfiguration get()
Get the configuration.
: To disable ray with a number of diffraction events greater than a threshold value ...
: Select diffracted rays that are launched in the shadow zone of the obstacle (closed angle) Other ar...