Loading...
Searching...
No Matches
constants.h
Go to the documentation of this file.
1#ifndef _BBM_CONSTANTS_H_
2#define _BBM_CONSTANTS_H_
3
4/***********************************************************************/
5/*! \file constant.h
6
7 \brief Definition of convenient constants
8***********************************************************************/
9
10#include <limits>
11#include <numbers>
12#include "core/vec.h"
13
14namespace bbm {
15
16 template<typename T>
17 struct constants {
18 static constexpr T Epsilon(void) { return std::numeric_limits<T>::epsilon(); }
19 static constexpr T Pi(T scale=1) { return scale * std::numbers::pi; }
20 static constexpr T InvPi(T scale=1) { return scale * std::numbers::inv_pi; }
21 static constexpr T Pi2(T scale=1) { return scale * Pi()*Pi(); }
22 static constexpr T InvSqrtPi(T scale=1) { return scale * std::numbers::inv_sqrtpi; }
23 static constexpr vec2d<T> Sphere(T scale=1) { return {Pi(2*scale), Pi(scale)}; }
24 static constexpr vec2d<T> Hemisphere(T scale=1) { return {Pi(2*scale), Pi(0.5*scale)}; }
25 };
26
27} // end bbm namespace
28
29#endif /* _BBM_CONSTANTS_H_ */
Defines additional helper methods for vectors.
Definition: aggregatebsdf.h:29
Definition: constants.h:17
static constexpr T InvPi(T scale=1)
Definition: constants.h:20
static constexpr vec2d< T > Hemisphere(T scale=1)
Definition: constants.h:24
static constexpr T Pi(T scale=1)
Definition: constants.h:19
static constexpr vec2d< T > Sphere(T scale=1)
Definition: constants.h:23
static constexpr T Pi2(T scale=1)
Definition: constants.h:21
static constexpr T Epsilon(void)
Definition: constants.h:18
static constexpr T InvSqrtPi(T scale=1)
Definition: constants.h:22