Mitsuba Renderer  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mitsuba::VonMisesFisherDistr Struct Reference

Von Mises-Fisher distribution on the 2-sphere. More...

#include <mitsuba/core/vmf.h>

Public Member Functions

 VonMisesFisherDistr (Float kappa=0)
 Create a new von Mises-Fisher distribution with the given concentration parameter. More...
 
void setKappa (Float kappa)
 Return the concentration parameter kappa. More...
 
Float getKappa () const
 Return the concentration parameter kappa. More...
 
Float getMeanCosine () const
 Return the mean cosine of the distribution. More...
 
Float eval (Float cosTheta) const
 Evaluate the distribution for a given value of cos(theta) More...
 
Vector sample (const Point2 &sample) const
 Generate a sample from this distribution. More...
 
std::string toString () const
 Return a string representation. More...
 

Static Public Member Functions

static Float forPeakValue (Float x)
 Compute an appropriate concentration parameter so that the associated vMF distribution takes on the value x at its peak. More...
 
static Float forMeanLength (Float length)
 Estimate the vMF concentration parameter based on the length of the mean vector that is produced by simply averaging a set of sampled directions. More...
 
static Float forMeanCosine (Float g)
 Compute an appropriate concentration parameter so that the associated vMF distribution has the mean cosine g. More...
 
static Float convolve (Float kappa1, Float kappa2)
 Compute an concentration parameter that approximately corresponds to the spherical convolution of two vMF distributions. More...
 

Detailed Description

Von Mises-Fisher distribution on the 2-sphere.

This is a basic implementation, which assumes that the distribution is centered around the Z-axis. All provided functions are implemented in such a way that they avoid issues with numerical overflow.

Author
Wenzel Jakob

Constructor & Destructor Documentation

mitsuba::VonMisesFisherDistr::VonMisesFisherDistr ( Float  kappa = 0)
inlineexplicit

Create a new von Mises-Fisher distribution with the given concentration parameter.

Member Function Documentation

static Float mitsuba::VonMisesFisherDistr::convolve ( Float  kappa1,
Float  kappa2 
)
static

Compute an concentration parameter that approximately corresponds to the spherical convolution of two vMF distributions.

For details, see "Directional Statistics" by Mardia and Jupp, p.44

Float mitsuba::VonMisesFisherDistr::eval ( Float  cosTheta) const

Evaluate the distribution for a given value of cos(theta)

static Float mitsuba::VonMisesFisherDistr::forMeanCosine ( Float  g)
static

Compute an appropriate concentration parameter so that the associated vMF distribution has the mean cosine g.

static Float mitsuba::VonMisesFisherDistr::forMeanLength ( Float  length)
static

Estimate the vMF concentration parameter based on the length of the mean vector that is produced by simply averaging a set of sampled directions.

This is an unbiased estimator [Banerjee et al. 05]

static Float mitsuba::VonMisesFisherDistr::forPeakValue ( Float  x)
static

Compute an appropriate concentration parameter so that the associated vMF distribution takes on the value x at its peak.

Float mitsuba::VonMisesFisherDistr::getKappa ( ) const
inline

Return the concentration parameter kappa.

Float mitsuba::VonMisesFisherDistr::getMeanCosine ( ) const

Return the mean cosine of the distribution.

Vector mitsuba::VonMisesFisherDistr::sample ( const Point2 sample) const

Generate a sample from this distribution.

Parameters
sampleA uniformly distributed point on [0,1]^2
void mitsuba::VonMisesFisherDistr::setKappa ( Float  kappa)
inline

Return the concentration parameter kappa.

std::string mitsuba::VonMisesFisherDistr::toString ( ) const

Return a string representation.


The documentation for this struct was generated from the following file: