20 template<
typename T>
inline constexpr decltype(
auto)
x(bbm::vec3d<T>&
v) {
return v[0]; }
21 template<
typename T>
inline constexpr decltype(
auto)
x(
const bbm::vec3d<T>&
v) {
return v[0]; }
23 template<
typename T>
inline constexpr decltype(
auto)
y(bbm::vec3d<T>&
v) {
return v[1]; }
24 template<
typename T>
inline constexpr decltype(
auto)
y(
const bbm::vec3d<T>&
v) {
return v[1]; }
26 template<
typename T>
inline constexpr decltype(
auto)
z(bbm::vec3d<T>&
v) {
return v[2]; }
27 template<
typename T>
inline constexpr decltype(
auto)
z(
const bbm::vec3d<T>&
v) {
return v[2]; }
31 template<
typename T>
inline constexpr decltype(
auto)
x(bbm::vec2d<T>&
v) {
return v[0]; }
32 template<
typename T>
inline constexpr decltype(
auto)
x(
const bbm::vec2d<T>&
v) {
return v[0]; }
34 template<
typename T>
inline constexpr decltype(
auto)
y(bbm::vec2d<T>&
v) {
return v[1]; }
35 template<
typename T>
inline constexpr decltype(
auto)
y(
const bbm::vec2d<T>&
v) {
return v[1]; }
37 template<
typename T>
inline constexpr decltype(
auto)
u(bbm::vec2d<T>&
v) {
return v[0]; }
38 template<
typename T>
inline constexpr decltype(
auto)
u(
const bbm::vec2d<T>&
v) {
return v[0]; }
40 template<
typename T>
inline constexpr decltype(
auto)
v(bbm::vec2d<T>&
v) {
return v[1]; }
41 template<
typename T>
inline constexpr decltype(
auto)
v(
const bbm::vec2d<T>&
v) {
return v[1]; }
47 template<
typename T>
inline constexpr const vec2d<T>
xy(
const vec3d<T>&
v) {
return {
v[0],
v[1]}; }
48 template<
typename T>
inline constexpr const vec2d<T>
xz(
const vec3d<T>&
v) {
return {
v[0],
v[2]}; }
49 template<
typename T>
inline constexpr const vec2d<T>
yz(
const vec3d<T>&
v) {
return {
v[1],
v[2]}; }
55 template<
typename T,
typename V>
inline constexpr const vec3d<T>
expand(
const vec2d<T>&
v, V&& a) {
return vec3d<T>(
v[0],
v[1], a); }
56 template<
typename T>
inline constexpr const vec3d<T>
expand(
const vec2d<T>&
v) {
return vec3d<T>(
v[0],
v[1], T(bbm::safe_sqrt(1 - bbm::squared_norm(
v)))); }
57 template<
typename T>
inline constexpr const vec2d<T>
expand(T&& c) {
return vec2d<T>(c, bbm::safe_sqrt(1 - c*c)); }
constexpr const vec2d< T > yz(const vec3d< T > &v)
Definition: vec.h:49
constexpr decltype(auto) u(bbm::vec2d< T > &v)
Definition: vec.h:37
constexpr const vec3d< T > expand(const vec2d< T > &v, V &&a)
Definition: vec.h:55
constexpr decltype(auto) y(bbm::vec3d< T > &v)
Definition: vec.h:23
constexpr decltype(auto) z(bbm::vec3d< T > &v)
Definition: vec.h:26
constexpr decltype(auto) v(bbm::vec2d< T > &v)
Definition: vec.h:40
constexpr decltype(auto) x(bbm::vec3d< T > &v)
Definition: vec.h:20
constexpr const vec2d< T > xy(const vec3d< T > &v)
Definition: vec.h:47
constexpr const vec2d< T > xz(const vec3d< T > &v)
Definition: vec.h:48
Definition: aggregatebsdf.h:29
Assignable reference with wrapper support for rvalues.