32#ifndef FENNEC_MATH_GEOMETRIC_H
33#define FENNEC_MATH_GEOMETRIC_H
132template<
typename genType,
size_t...i>
134 return ((x[i] *
y[i]) + ...);
150template<
typename genType,
size_t...i>
168template<
typename genType,
size_t...i>
188template<
typename genType,
size_t...i>
210template<
typename genType,
size_t...i>
requires(
sizeof...(i) == 3)
212 return vector<genType, i...>(x[1]*
y[2]-
y[1]*x[2], x[2]*
y[0]-
y[2]*x[0], x[0]*
y[1]-
y[0]*x[1]);
228template<
typename genType,
size_t...i>
244template<
typename genType,
size_t...i>
261template<
typename genType,
size_t...i>
280template<
typename genType,
size_t...i>
283 genType k = genType(1.0) - eta * eta * (genType(1.0) - ndi * ndi);
284 if (k < 0)
return vector<genType, i...>(0);
constexpr genType inversesqrt(genType x)
Returns .
Definition exponential.h:192
constexpr genType sqrt(genType x)
Returns .
Definition exponential.h:178
constexpr vector< genType, i... > faceforward(const vector< genType, i... > &N, const vector< genType, i... > &I, const vector< genType, i... > &Nref)
If return , otherwise return .
Definition geometric.h:245
constexpr genType distance(const vector< genType, i... > &p0, const vector< genType, i... > &p1)
Returns the length of vector , i.e., .
Definition geometric.h:189
constexpr genType dot(const vector< genType, i... > &x, const vector< genType, i... > &y)
Returns the dot product of and , i.e., .
Definition geometric.h:133
constexpr genType length2(const vector< genType, i... > &x)
Returns the squared length of vector , i.e., .
Definition geometric.h:151
constexpr vector< genType, i... > cross(const vector< genType, i... > &x, const vector< genType, i... > &y)
Returns the cross product of and , i.e., .
Definition geometric.h:211
constexpr vector< genType, i... > reflect(const vector< genType, i... > &I, const vector< genType, i... > &N)
For the incident vector and surface orientation , returns the reflection direction.
Definition geometric.h:262
constexpr vector< genType, i... > refract(const vector< genType, i... > &I, const vector< genType, i... > &N, genType eta)
For the incident vector and surface normal , and the ratio of indices of refraction ,...
Definition geometric.h:281
constexpr genType length(const vector< genType, i... > &x)
Returns the length of vector , i.e., .
Definition geometric.h:169
constexpr vector< genType, i... > normalize(const vector< genType, i... > &x)
Returns a vector in the same direction as , but with a length of , i.e.
Definition geometric.h:229
constexpr genType sign(genType x)
Returns if , if , or if .
Definition common.h:306
constexpr genType y()
Definition constants.h:672
Math Vector Type.
Definition vector.h:183