Fermat
|
Classes | |
struct | cugar::SH_basis< L > |
Functions | |
template<typename Vector3 > | |
CUGAR_HOST_DEVICE float | cugar::sh (const int32 l, const int32 m, const Vector3 &v) |
template<int32 l, typename Vector3 > | |
CUGAR_HOST_DEVICE float | cugar::sh (const int32 m, const Vector3 &v) |
template<int32 l, int32 m, typename Vector3 > | |
CUGAR_HOST_DEVICE float | cugar::sh (const Vector3 &v) |
template<typename ZHVector , typename SHVector , typename Vector3 > | |
CUGAR_HOST_DEVICE void | cugar::rotate_ZH (const int32 L, const ZHVector &zh_coeff, const Vector3 &d, SHVector &sh_coeff) |
template<int32 L, typename ZHVector , typename SHVector , typename Vector3 > | |
CUGAR_HOST_DEVICE void | cugar::rotate_ZH (const ZHVector &zh_coeff, const Vector3 &d, SHVector &sh_coeff) |
template<int32 l, int32 m, typename Vector3 > | |
CUGAR_HOST_DEVICE float | cugar::rotate_ZH (const float zh_l, const Vector3 &d) |
CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float | cugar::sh_legendre_polynomial (const uint32 l, const uint32 m, const float x, const float y) |
template<typename OutputIterator > | |
CUGAR_HOST_DEVICE void | cugar::sh_legendre_integrals (const uint32 n, const float x, OutputIterator r) |
CUGAR_HOST_DEVICE float | cugar::sh_polar_integral (const int32 m, const float phi) |
CUGAR_HOST_DEVICE void cugar::rotate_ZH | ( | const int32 | L, |
const ZHVector & | zh_coeff, | ||
const Vector3 & | d, | ||
SHVector & | sh_coeff | ||
) |
rotate a zonal harmonics to an arbitrary direction vector
L | number of bands |
zh_coeff | input Zonal Harmonics coefficients |
d | input vector |
sh_coeff | output Spherical Harmonics coefficients |
CUGAR_HOST_DEVICE void cugar::rotate_ZH | ( | const ZHVector & | zh_coeff, |
const Vector3 & | d, | ||
SHVector & | sh_coeff | ||
) |
rotate a zonal harmonics to an arbitrary direction vector, with the number of bands specified at compile-time.
zh_coeff | input Zonal Harmonics coefficients |
d | input vector |
sh_coeff | output Spherical Harmonics coefficients |
CUGAR_HOST_DEVICE float cugar::rotate_ZH | ( | const float | zh_l, |
const Vector3 & | d | ||
) |
return the (l,m) spherical harmonics coefficient of a zonal harmonics function rotated to match a given axis.
zh_l | l-band zonal harmonics coefficient |
d | input vector |
CUGAR_HOST_DEVICE float cugar::sh | ( | const int32 | l, |
const int32 | m, | ||
const Vector3 & | v | ||
) |
evaluate the (l,m)-th basis function on a given vector
l | band index |
m | subband index |
v | input vector |
CUGAR_HOST_DEVICE float cugar::sh | ( | const int32 | m, |
const Vector3 & | v | ||
) |
evaluate the (l,m)-th basis function on a given vector, where l is determined at compile-time.
m | subband index |
v | input vector |
CUGAR_HOST_DEVICE float cugar::sh | ( | const Vector3 & | v | ) |
evaluate the (l,m)-th basis function on a given vector, where l and m are determined at compile-time.
v | input vector |
CUGAR_HOST_DEVICE void cugar::sh_legendre_integrals | ( | const uint32 | n, |
const float | x, | ||
OutputIterator | r | ||
) |
evaluate the associated Legendre integrals for a basis of order n see Algorithm 1 in:
Importance Sampling Spherical Harmonics, W.Jarosz, N.Carr, H.W.Jensen
n | SH order |
x | cos(theta), the point of evaluation of the associated (indefinite) Legendre integrals |
r | a pointer to the output evaluations for all (l,m) with (0 <= l < n), (0 <= m <= l) |
CUGAR_FORCEINLINE CUGAR_HOST_DEVICE float cugar::sh_legendre_polynomial | ( | const uint32 | l, |
const uint32 | m, | ||
const float | x, | ||
const float | y | ||
) |
evaluate the associated Legendre polynomial P_l^m on x = cos(theta), y = sin(theta) = sqrt(1 - x*x)
CUGAR_HOST_DEVICE float cugar::sh_polar_integral | ( | const int32 | m, |
const float | phi | ||
) |
evaluate the integral of the polar angle function Phi^m(phi) see equation 14 in:
Importance Sampling Spherical Harmonics, W.Jarosz, N.Carr, H.W.Jensen
m | required order |
phi | the point of evaluation, in angular coordinates |