12#include "detray/definitions/algebra.hpp"
13#include "detray/definitions/containers.hpp"
14#include "detray/definitions/detail/qualifiers.hpp"
21template <concepts::vector3D vector3_t>
32 const vector3_t& dir) {
33 vector3_t unit_u{0.f, 0.f, 0.f};
42 if (
const auto scale = vector::norm(unit_u); scale < 1e-6f) {
46 unit_u = unit_u * (1.f / scale);
69 const vector3_t& dir) {
72 uv[1] = vector::normalize(vector::cross(dir, uv[0]));
Detray include(s).
Definition array_operators.hpp:18
std::array< value_t, kDIM > darray
Fixed-size array container.
Definition containers.hpp:30
Build the curvilinear unit basis perpendicular to a three-dimensional direction.
Definition unit_vectors.hpp:22
darray< vector3_t, 2 > make_curvilinear_unit_vectors(const vector3_t &dir)
Construct the curvilinear unit vectors U and V for the given direction.
Definition unit_vectors.hpp:68
vector3_t make_curvilinear_unit_u(const vector3_t &dir)
Construct the first curvilinear unit vector U for the given direction.
Definition unit_vectors.hpp:31