Lightmetrica  0.0.1.50dbee3 (yosakoi)
 All Classes Functions Variables Typedefs Enumerations Enumerator
math.pdf.h
1 /*
2  Lightmetrica : A research-oriented renderer
3 
4  Copyright (c) 2014 Hisanari Otsu
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #pragma once
21 #ifndef LIB_LIGHTMETRICA_MATH_PDF_H
22 #define LIB_LIGHTMETRICA_MATH_PDF_H
23 
24 #include "math.common.h"
25 
26 LM_NAMESPACE_BEGIN
27 LM_MATH_NAMESPACE_BEGIN
28 
33 enum class ProbabilityMeasure
34 {
35 
39  None,
40 
45  SolidAngle,
46 
51  ProjectedSolidAngle,
52 
57  Area,
58 
70  Discrete,
71 
72 };
73 
79 template <typename T>
80 struct TPDFEval
81 {
82 
83  TPDFEval()
84  : v(T(0))
85  , measure(ProbabilityMeasure::None)
86  {
87 
88  }
89 
90  TPDFEval(const T& v, ProbabilityMeasure measure)
91  : v(v)
92  , measure(measure)
93  {
94 
95  }
96 
97  T v;
98  ProbabilityMeasure measure;
99 
100 };
101 
102 template <typename T> LM_FORCE_INLINE TPDFEval<T> operator*(const TPDFEval<T>& p, const T& s) { return TPDFEval<T>(p.v * s, p.measure); }
103 template <typename T> LM_FORCE_INLINE TPDFEval<T> operator*(const T& s, const TPDFEval<T>& p) { return TPDFEval<T>(s * p.v, p.measure); }
104 
105 LM_MATH_NAMESPACE_END
106 LM_NAMESPACE_END
107 
108 #endif // LIB_LIGHTMETRICA_MATH_PDF_H
T v
Value of the PDF evaluation.
Definition: math.pdf.h:97
ProbabilityMeasure measure
Probability measure that the PDF is defined.
Definition: math.pdf.h:98
Definition: math.pdf.h:80