|
| constexpr bool | operator== (const Vector3< T > &a, const Vector3< T > &b) |
| |
| constexpr bool | operator!= (const Vector3< T > &a, const Vector3< T > &b) |
| |
| constexpr const Vector3< T > & | operator+ (const Vector3< T > &a) |
| | NOTE: We use std::declval() in the operators below because libclang 18 in our binding generator is bugged and chokes on decltyping a.x and such. TODO fix this when we update libclang.
|
| |
| constexpr auto | operator- (const Vector3< T > &a) -> Vector3< decltype(-std::declval< T >())> |
| |
| constexpr auto | operator+ (const Vector3< T > &a, const Vector3< T > &b) -> Vector3< decltype(std::declval< T >()+std::declval< T >())> |
| |
| constexpr auto | operator- (const Vector3< T > &a, const Vector3< T > &b) -> Vector3< decltype(std::declval< T >() - std::declval< T >())> |
| |
| constexpr auto | operator* (T a, const Vector3< T > &b) -> Vector3< decltype(std::declval< T >() *std::declval< T >())> |
| |
| constexpr auto | operator* (const Vector3< T > &b, T a) -> Vector3< decltype(std::declval< T >() *std::declval< T >())> |
| |
| constexpr auto | operator/ (Vector3< T > b, T a) -> Vector3< decltype(std::declval< T >()/std::declval< T >())> |
| |
| constexpr Vector3< T > & | operator+= (Vector3< T > &a, const Vector3< T > &b) |
| |
| constexpr Vector3< T > & | operator-= (Vector3< T > &a, const Vector3< T > &b) |
| |
| constexpr Vector3< T > & | operator*= (Vector3< T > &a, T b) |
| |
| constexpr Vector3< T > & | operator/= (Vector3< T > &a, T b) |
| |
| std::ostream & | operator<< (std::ostream &s, const Vector3 &vec) |
| |
| std::istream & | operator>> (std::istream &s, Vector3 &vec) |
| |
|
(Note that these are not member symbols.)
|
|
| template<typename T > |
| T | distanceSq (const Vector3< T > &a, const Vector3< T > &b) |
| | squared distance between two points, which is faster to compute than just distance
|
| |
| template<typename T > |
| T | distance (const Vector3< T > &a, const Vector3< T > &b) |
| | distance between two points, better use distanceSq for higher performance
|
| |
| template<typename T > |
| Vector3< T > | cross (const Vector3< T > &a, const Vector3< T > &b) |
| | cross product
|
| |
| template<typename T > |
| auto | dot (const Vector3< T > &a, const Vector3< T > &b) -> decltype(a.x *b.x) |
| | dot product
|
| |
| template<typename T > |
| T | sqr (const Vector3< T > &a) |
| | squared length
|
| |
| template<typename T > |
| T | mixed (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c) |
| | mixed product
|
| |
| template<typename T > |
| Vector3< T > | mult (const Vector3< T > &a, const Vector3< T > &b) |
| | per component multiplication
|
| |
| template<typename T > |
| Vector3< T > | div (const Vector3< T > &a, const Vector3< T > &b) |
| | per component division
|
| |
| template<typename T > |
| T | angle (const Vector3< T > &a, const Vector3< T > &b) |
| |
| template<typename T > |
| Vector3< T > | unitVector3 (T azimuth, T altitude) |
| | returns a point on unit sphere given two angles
|
| |
| template<typename T > |
| MR_BIND_IGNORE_PY auto | begin (const Vector3< T > &v) |
| | We don't need to bind those functions in Python, because this doesn't prevent __iter__ from being generated for the type.
|
| |
template<typename T>
struct MR::Vector3< T >
three-dimensional vector