9 #include <utl/Photon.h>
10 #include <utl/Vector.h>
11 #include <utl/TabulatedFunction.h>
16 namespace TelescopeSimulatorKG2 {
18 namespace RTFunctions {
25 const double filterAbsorptionFactor,
29 const double mirrorAbsorptionFactorTop,
30 const double mirrorAbsorptionFactorBot,
31 const double verticalPosOnMirror,
33 const double mirrorSize);
56 const double torusRadius,
57 const double tubeRadius);
59 void Cubic(
const double a0,
63 std::vector<double>& roots);
70 std::vector<double>& roots);
74 const double torusRadius,
75 const double tubeRadius,
81 const double torusRadius,
82 const double tubeRadius,
88 const double sigma_alpha);
92 const double sigma_alpha,
98 const double amountOfStrayLight,
99 const double MaxTheta);
105 const double verticalPosOnMirror);
std::vector< PhotonNormalPair > IntersectionList
void Reflection(const utl::Photon &photonIn, const Vector &normal, utl::Photon &photonOut)
Class to hold collection (x,y) points and provide interpolation between them.
void Cubic(const double a0, const double a1, const double a2, const double a3, vector< double > &roots)
void Absorption(const utl::Photon &photonIn, const double filterAbsorptionFactor, utl::Photon &photonOut)
int Refraction(const double n12, const utl::Photon &photonIn, const Vector &normal, PhotonList &photonsOut)
std::pair< utl::Photon, utl::Vector > PhotonNormalPair
Vector TorusNormal(const utl::Point &origin, const utl::Vector &inwards, const utl::Point &point, const double torusRadius, const double tubeRadius)
Wraps the random number engine used to generate distributions.
Vector MirrorDiffusion(utl::RandomEngine &rndm, const Vector &specularDir, const utl::TabulatedFunction *mirrorDiffusionTop, const utl::TabulatedFunction *mirrorDiffusionBot, const double verticalPosOnMirror)
void Quartic(const double a0, const double a1, const double a2, const double a3, const double a4, vector< double > &roots)
int CurvedLensSurface(const utl::Point &origin, const utl::Vector &inwards, const double torusRadius, const double tubeRadius, const utl::Photon &photonIn, const utl::Photon &photonLens)
Vector RandomNormal(utl::RandomEngine &rndm, const Vector &normalIn, const double sigma_alpha)
double Plane(const utl::Point &point, const utl::Vector &normal, const utl::Photon &photonIn, utl::Photon &photonOut)
Vector LambertDiffusion(utl::RandomEngine &rndm, const Vector &rayIn, const Vector &normal, const double amountOfStrayLight, const double MaxTheta)
bool Sphere(const Point &origin, const double radius, const utl::Photon &photonIn, IntersectionList &intersection)
std::vector< utl::Photon > PhotonList
Vector RandomFacet(utl::RandomEngine &rndm, const Vector &normalIn, const double sigma_alpha, const Vector &rayIn)
void Torus(const utl::Point &origin, const utl::Vector &inwards, const double torusRadius, const double tubeRadius, const utl::Photon &photonIn, IntersectionList &intersections)