# [−][src]Crate sphrs

A (work in progress) general purpose spherical/solid harmonics library in Rust.

Documentation: stable, master.

# Types of spherical/solid harmonics

This crate supports these types of real and complex functions via the enums `RealSHType`

and
`ComplexSHType`

:

# Usage

Add this to your `Cargo.toml`

:

```
[dependencies]
sphrs = "0.1.2"
```

# Examples

Compute the complex spherical harmonic function of degree 2 and order 1 at (spherical) position (r = 1.0, theta = PI/4, phi = PI/4):

use sphrs::{ComplexSHType, Coordinates, SHEval}; use std::f64::consts::PI; let sh = ComplexSHType::Spherical; let degree = 2; let order = 1; let p: Coordinates<f64> = Coordinates::spherical(1.0, PI/4.0, PI/8.0); println!("SH ({}, {}): {:?}", degree, order, sh.eval(degree, order, &p));

Compute all real SH up to 5th degree at (Cartesian) position (1, 0, 0):

use sphrs::{RealSHType, HarmonicsSet, Coordinates}; let degree = 5; let sh: HarmonicsSet<f64, _, _> = HarmonicsSet::new(degree, RealSHType::Spherical); let p = Coordinates::cartesian(1.0, 0.0, 0.0); println!("SH up to degree {}: {:?}", degree, sh.eval(&p));

# Acknowledgements

This crate is heavily inspired by Google's spherical-harmonics library and follows the design documented here.

# References

- Robin Green, "Spherical Harmonic Lighting: The Gritty Details"
- Spherical harmonics (Wikipedia)
- Solid harmonics (Wikipedia)

# License

Licensed under either of

- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

## Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

## Re-exports

`pub use crate::coords::*;` |

`pub use crate::sh::*;` |

## Modules

coords | Coordinates |

sh | Spherical/solid harmonics |

## Structs

HarmonicsSet | A set of spherical/solid harmonics up to a given degree |

## Enums

ComplexSHType | Available types of complex spherical harmonics and solid harmonics |

RealSHType | Available types of real spherical harmonics and solid harmonics |

## Traits

SHEval | SH eval trait (TODO) |

SphrsFloat | Trait alias to simplify common trait bounds |