My Project
Functions
so3_sampling.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "so3_error.h"
#include "so3_types.h"

Go to the source code of this file.

Functions

int so3_sampling_nalpha (const so3_parameters_t *)
 
int so3_sampling_nbeta (const so3_parameters_t *)
 
int so3_sampling_ngamma (const so3_parameters_t *)
 
complex double so3_sampling_weight (const so3_parameters_t *parameters, int p)
 
int so3_sampling_f_size (const so3_parameters_t *parameters)
 
int so3_sampling_n (const so3_parameters_t *parameters)
 
double so3_sampling_a2alpha (int a, const so3_parameters_t *parameters)
 
double so3_sampling_b2beta (int b, const so3_parameters_t *parameters)
 
double so3_sampling_g2gamma (int g, const so3_parameters_t *parameters)
 
int so3_sampling_flmn_size (const so3_parameters_t *parameters)
 
void so3_sampling_elmn2ind (int *ind, int el, int m, int n, const so3_parameters_t *parameters)
 
void so3_sampling_ind2elmn (int *el, int *m, int *n, int ind, const so3_parameters_t *parameters)
 
void so3_sampling_elmn2ind_real (int *ind, int el, int m, int n, const so3_parameters_t *parameters)
 
void so3_sampling_ind2elmn_real (int *el, int *m, int *n, int ind, const so3_parameters_t *parameters)
 

Function Documentation

◆ so3_sampling_a2alpha()

double so3_sampling_a2alpha ( int  a,
const so3_parameters_t *  parameters 
)

Convert alpha index to angle for a given sampling scheme.

Note
  • a ranges from [0 .. 2*L-2] => 2*L-1 points in [0,2*pi).
Parameters
[in]aAlpha index.
[in]parametersA parameters object with (at least) the following fields: L, sampling_scheme
Return values
alphaAlpha angle.
Author
Martin Büttner
Jason McEwen

Definition at line 222 of file so3_sampling.c.

◆ so3_sampling_b2beta()

double so3_sampling_b2beta ( int  b,
const so3_parameters_t *  parameters 
)

Convert beta index to angle for a given sampling scheme.

Note
  • b ranges from [0 .. 2*L-2] => 2*L-1 points in (0,2*pi).
Parameters
[in]bBeta index.
[in]parametersA parameters object with (at least) the following fields: L, sampling_scheme
Return values
betaBeta angle.
Author
Martin Büttner
Jason McEwen

Definition at line 254 of file so3_sampling.c.

◆ so3_sampling_elmn2ind()

void so3_sampling_elmn2ind ( int *  ind,
int  el,
int  m,
int  n,
const so3_parameters_t *  parameters 
)

Convert (el,m,n) harmonic indices to 1D index used to access flmn array.

Note
Index ranges are as follows:
  • el ranges from [0 .. L-1].
  • m ranges from [-el .. el].
  • n ranges from [-el' .. el'], where el' = min{el, N}
  • ind ranges from [0 .. (2*N)(L**2-N(N-1)/3)-1] for compact storage methods and from [0 .. (2*N-1)*L**2-1] for 0-padded storage methods.
Parameters
[out]ind1D index to access flmn array.
[in]elHarmonic index.
[in]mAzimuthal harmonic index.
[in]nOrientational harmonic index.
[in]parametersA parameters object with (at least) the following fields: L, N, storage, n_order
The reality flag is ignored. Use instead. none Martin Büttner
Author
Jason McEwen

Definition at line 367 of file so3_sampling.c.

Referenced by so3_adjoint_forward_direct(), so3_adjoint_inverse_direct(), so3_core_forward_direct(), so3_core_forward_via_ssht(), so3_core_inverse_direct(), so3_core_inverse_via_ssht(), so3_sampling_elmn2ind_real(), so3_sampling_ind2elmn_real(), and so3_test_gen_flmn_complex().

◆ so3_sampling_elmn2ind_real()

void so3_sampling_elmn2ind_real ( int *  ind,
int  el,
int  m,
int  n,
const so3_parameters_t *  parameters 
)

Convert (el,m,n) harmonic indices to 1D index used to access flmn array for a real signal.

Note
Index ranges are as follows:
  • el ranges from [0 .. L-1].
  • m ranges from [-el .. el].
  • n ranges from [0 .. el'], where el' = min{el, N}
  • ind ranges from [0 .. N*(L*L-(N-1)*(2*N-1)/6)-1] for compact storage methods and from [0 .. N*L*L-1] for 0-padded storage methods.
Parameters
[out]ind1D index to access flmn array.
[in]elHarmonic index
[in]mAzimuthal harmonic index.
[in]nOrientational harmonic index.
[in]parametersA parameters object with (at least) the following fields: L, N, storage
The reality flag is ignored. Use so3_sampling_elmn2ind instead.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 569 of file so3_sampling.c.

References so3_sampling_elmn2ind().

Referenced by so3_adjoint_forward_direct_real(), so3_adjoint_inverse_direct_real(), so3_core_forward_direct_real(), so3_core_forward_via_ssht_real(), so3_core_inverse_direct_real(), so3_core_inverse_via_ssht_real(), and so3_test_gen_flmn_real().

◆ so3_sampling_f_size()

int so3_sampling_f_size ( const so3_parameters_t *  parameters)

Compute size of the signal buffer f to be passed to the forward and returned from the inverse transform function for a given sampling scheme.

Note
Computes number of samples on rotation group, not over extended domain.
This includes degenerate samples on the poles which are the same for each value of phi. To get the logical number of samples (i.e. ignoring without degeneracy) use so3_sampling_n, instead.
Parameters
[in]parametersA parameters object with (at least) the following fields: L, N, sampling_scheme
Return values
nNumber of samples stored in the signal buffers.
Author
Martin Büttner
Jason McEwen

Definition at line 78 of file so3_sampling.c.

References so3_sampling_nalpha(), so3_sampling_nbeta(), and so3_sampling_ngamma().

◆ so3_sampling_flmn_size()

int so3_sampling_flmn_size ( const so3_parameters_t *  parameters)

Get storage size of flmn array for different storage methods.

Parameters
[in]parametersA parameters object with (at least) the following fields: L, N, storage, reality
Return values
Numberof coefficients to be stored.
Author
Martin Büttner
Jason McEwen

Definition at line 314 of file so3_sampling.c.

Referenced by main().

◆ so3_sampling_g2gamma()

double so3_sampling_g2gamma ( int  g,
const so3_parameters_t *  parameters 
)

Convert gamma index to angle for a given sampling scheme.

Note
  • g ranges from [0 .. 2*L-2] => 2*L-1 points in [0,2*pi).
Parameters
[in]gGamma index.
[in]parametersA parameters object with (at least) the following fields: N, sampling_scheme
Return values
gammaGamma angle.
Author
Martin Büttner
Jason McEwen

Definition at line 286 of file so3_sampling.c.

◆ so3_sampling_ind2elmn()

void so3_sampling_ind2elmn ( int *  el,
int *  m,
int *  n,
int  ind,
const so3_parameters_t *  parameters 
)

Convert 1D index used to access flmn array to (el,m,n) harmonic indices.

Note
Index ranges are as follows:
  • el ranges from [0 .. L-1].
  • m ranges from [-el .. el].
  • n ranges from [-el' .. el'], where el' = min{el, N}
  • ind ranges from [0 .. (2*N)(L**2-N(N-1)/3)-1] for compact storage methods and from [0 .. (2*N-1)*L**2-1] for 0-padded storage methods.
Parameters
[out]elHarmonic index.
[out]mAzimuthal harmonic index.
[out]nOrientational harmonic index.
[in]ind1D index to access flm array.
[in]parametersA parameters object with (at least) the following fields: L, N, storage
The reality flag is ignored. Use so3_sampling_ind2elmn_real instead.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 453 of file so3_sampling.c.

Referenced by so3_sampling_ind2elmn_real().

◆ so3_sampling_ind2elmn_real()

void so3_sampling_ind2elmn_real ( int *  el,
int *  m,
int *  n,
int  ind,
const so3_parameters_t *  parameters 
)

Convert 1D index used to access flmn array to (el,m,n) harmonic indices for a real signal.

Note
Index ranges are as follows:
  • el ranges from [0 .. L-1].
  • m ranges from [-el .. el].
  • n ranges from [0 .. el'], where el' = min{el, N}
  • ind ranges from [0 .. N*(L*L-(N-1)*(2*N-1)/6)-1] for compact storage methods and from [0 .. N*L*L-1] for 0-padded storage methods.
Parameters
[out]elHarmonic index.
[out]mAzimuthal harmonic index.
[out]nOrientational harmonic index.
[in]ind1D index to access flm array.
[in]parametersA parameters object with (at least) the following fields: L, N, storage
The reality flag is ignored. Use so3_sampling_ind2elmn instead.
Return values
none
Author
Martin Büttner
Jason McEwen

Definition at line 624 of file so3_sampling.c.

References so3_sampling_elmn2ind(), and so3_sampling_ind2elmn().

◆ so3_sampling_n()

int so3_sampling_n ( const so3_parameters_t *  parameters)

Compute total number of samples for a given sampling scheme.

Note
Computes number of samples on rotation group, not over extended domain.
This returns the logical number of samples (without degeneracy), and not the size of the signal buffer used in the transform functions. Use so3_sampling_f_size to get the actual size of the signal buffer.
Parameters
[in]parametersA parameters object with (at least) the following fields: L, N, sampling_scheme
Return values
nNumber of samples.
Author
Martin Büttner
Jason McEwen

Definition at line 110 of file so3_sampling.c.

References so3_sampling_ngamma().

◆ so3_sampling_nalpha()

int so3_sampling_nalpha ( const so3_parameters_t *  parameters)

Compute number of alpha samples for a given sampling scheme.

Parameters
[in]parametersA parameters object with (at least) the following fields: L, sampling_scheme
Return values
nalphaNumber of alpha samples.
Author
Martin Büttner
Jason McEwen

Definition at line 140 of file so3_sampling.c.

Referenced by so3_sampling_f_size().

◆ so3_sampling_nbeta()

int so3_sampling_nbeta ( const so3_parameters_t *  parameters)

Compute number of beta samples for a given sampling scheme.

Note
Computes number of samples in (0,pi], not over extended domain.
Parameters
[in]parametersA parameters object with (at least) the following fields: L, sampling_scheme
Return values
nbetaNumber of beta samples.
Author
Martin Büttner
Jason McEwen

Definition at line 171 of file so3_sampling.c.

Referenced by so3_sampling_f_size().

◆ so3_sampling_ngamma()

int so3_sampling_ngamma ( const so3_parameters_t *  parameters)

Compute number of gamma samples for a given sampling scheme.

Parameters
[in]parametersA parameters object with (at least) the following fields: B, sampling_scheme
Return values
ngammaNumber of gamma samples.
Author
Martin Büttner
Jason McEwen

Definition at line 195 of file so3_sampling.c.

Referenced by so3_sampling_f_size(), and so3_sampling_n().

◆ so3_sampling_weight()

complex double so3_sampling_weight ( const so3_parameters_t *  parameters,
int  p 
)

Compute conjugate weights for toroidal extension.

Parameters
[in]parametersA parameters object with (at least) sampling_scheme
[in]pInteger index to compute weight for.
Return values
Correspondingconjugate weight.
Author
Jason McEwen

Definition at line 30 of file so3_sampling.c.

Referenced by so3_adjoint_forward_direct(), so3_adjoint_forward_direct_real(), so3_core_forward_direct(), and so3_core_forward_direct_real().