|
| template<typename Tag, typename T> |
| constexpr auto | apply_tag (T &&value) |
| | Helper function to attach a tag to a type.
|
| template<typename Arg> |
| void | do_not_optimize_away (Arg &&arg) |
| | Makes sure none of the given arguments are optimized away by the compiler.
|
| template<typename T, typename... Args> |
| host_ptr< T > | make_host_ptr (Args &&... args) |
| | Construct a host_ptr<T> owning a fresh T, forwarding args to its constructor. Mirrors make_shared.
|
| template<typename T> |
| void | swap (host_ptr< T > &lhs, host_ptr< T > &rhs) noexcept |
| | Non-member swap.
|
| template<class T> |
| | reference_wrapper (T &) -> reference_wrapper< T > |
| template<class T> |
| constexpr auto | ref (T &&t) noexcept -> reference_wrapper< std::remove_reference_t< T > > |
| | Make a mutable reference wrapper.
|
| template<class T> |
| constexpr reference_wrapper< T > | ref (reference_wrapper< T > t) noexcept |
| template<class T> |
| constexpr auto | cref (T &&t) noexcept -> reference_wrapper< const std::remove_reference_t< T > > |
| | Make a const reference wrapper.
|
| template<class T> |
| constexpr reference_wrapper< const T > | cref (reference_wrapper< T > t) noexcept |
| template<class T> |
| constexpr reference_wrapper< const T > | cref (reference_wrapper< const T > t) noexcept |
| openrand::Philox | make_philox (size_t seed, size_t counter) |
| template<class T> |
| | storage (T &&) -> storage< T > |
| template<class T> |
| constexpr auto | store (T &&value) noexcept(noexcept(storage< impl::store_input_type_t< T > >(std::forward< T >(value)))) -> storage< impl::store_input_type_t< T > > |
| | Create a storage object from a forwarding reference.
|
| template<size_t N> |
| constexpr bool | operator== (const StringLiteral< N > &lhs, const StringLiteral< N > &rhs) |
| | Non-member equality operator for comparing two StringLiterals.
|
| template<size_t N> |
| std::ostream & | operator<< (std::ostream &os, const StringLiteral< N > &str) |
| | Non-member << operator for printing a StringLiteral.
|
| template<size_t N> |
| constexpr StringLiteral< N > | make_string_literal (const char(&str)[N]) |
| | Helper function for creating a StringLiteral.
|
| constexpr SinkStart | sink () |
| | Start a new sink pipeline.
|
| template<impl::RuntimeSinkChunk T> |
| constexpr auto | operator<< (SinkStart, T &&rhs) |
| template<size_t N> |
| constexpr auto | operator<< (SinkStart, const char(&rhs)[N]) |
| template<size_t N> |
| constexpr auto | operator<< (SinkStart, const StringLiteral< N > &rhs) |
| template<size_t N> |
| std::ostream & | operator<< (std::ostream &os, const StringLiteralSink< N > &sink_to_print) |
| template<typename... Chunks> |
| std::ostream & | operator<< (std::ostream &os, const StringSink< Chunks... > &sink_to_print) |
| template<size_t AssertionStringSize, size_t FileStringSize, size_t LineStringSize> |
| std::string | get_throw_require_host_string (const StringLiteral< AssertionStringSize > &assertion_string, const std::string &message_to_print, const StringLiteral< FileStringSize > &file_string=make_string_literal("/home/runner/work/MuNDy/MuNDy/mundy/core/utils/src/mundy_utils/throw_assert.hpp"), const StringLiteral< LineStringSize > &line_string=make_string_literal(MUNDY_LINE_STRING)) |
| template<size_t AssertionStringSize, size_t MessageStringSize, size_t FileStringSize, size_t LineStringSize> |
| std::string | get_throw_require_host_string (const StringLiteral< AssertionStringSize > &assertion_string, const char(&message_to_print)[MessageStringSize], const StringLiteral< FileStringSize > &file_string=make_string_literal("/home/runner/work/MuNDy/MuNDy/mundy/core/utils/src/mundy_utils/throw_assert.hpp"), const StringLiteral< LineStringSize > &line_string=make_string_literal(MUNDY_LINE_STRING)) |
| template<size_t AssertionStringSize, size_t MessageStringSize, size_t FileStringSize, size_t LineStringSize> |
| std::string | get_throw_require_host_string (const StringLiteral< AssertionStringSize > &assertion_string, const StringLiteral< MessageStringSize > &message_to_print, const StringLiteral< FileStringSize > &file_string=make_string_literal("/home/runner/work/MuNDy/MuNDy/mundy/core/utils/src/mundy_utils/throw_assert.hpp"), const StringLiteral< LineStringSize > &line_string=make_string_literal(MUNDY_LINE_STRING)) |
| template<size_t AssertionStringSize, AnyStringSink MessageStringType, size_t FileStringSize, size_t LineStringSize> |
| std::string | get_throw_require_host_string (const StringLiteral< AssertionStringSize > &assertion_string, const MessageStringType &message_to_print, const StringLiteral< FileStringSize > &file_string=make_string_literal("/home/runner/work/MuNDy/MuNDy/mundy/core/utils/src/mundy_utils/throw_assert.hpp"), const StringLiteral< LineStringSize > &line_string=make_string_literal(MUNDY_LINE_STRING)) |
| template<size_t AssertionStringSize, size_t MessageStringSize, size_t FileStringSize, size_t LineStringSize> |
| constexpr auto | get_throw_require_device_string (const StringLiteral< AssertionStringSize > &assertion_string, const char(&message_to_print)[MessageStringSize], const StringLiteral< FileStringSize > &file_string=make_string_literal("/home/runner/work/MuNDy/MuNDy/mundy/core/utils/src/mundy_utils/throw_assert.hpp"), const StringLiteral< LineStringSize > &line_string=make_string_literal(MUNDY_LINE_STRING)) |
| template<size_t AssertionStringSize, size_t MessageStringSize, size_t FileStringSize, size_t LineStringSize> |
| constexpr auto | get_throw_require_device_string (const StringLiteral< AssertionStringSize > &assertion_string, const StringLiteral< MessageStringSize > &message_to_print, const StringLiteral< FileStringSize > &file_string=make_string_literal("/home/runner/work/MuNDy/MuNDy/mundy/core/utils/src/mundy_utils/throw_assert.hpp"), const StringLiteral< LineStringSize > &line_string=make_string_literal(MUNDY_LINE_STRING)) |
| template<size_t AssertionStringSize, CompileTimeStringSink MessageStringType, size_t FileStringSize, size_t LineStringSize> |
| constexpr auto | get_throw_require_device_string (const StringLiteral< AssertionStringSize > &assertion_string, const MessageStringType &message_to_print, const StringLiteral< FileStringSize > &file_string=make_string_literal("/home/runner/work/MuNDy/MuNDy/mundy/core/utils/src/mundy_utils/throw_assert.hpp"), const StringLiteral< LineStringSize > &line_string=make_string_literal(MUNDY_LINE_STRING)) |
| template<typename ExceptionType, typename MessageStringType, size_t AssertionStringSize, size_t FileStringSize, size_t LineStringSize> |
| constexpr void | throw_require (const bool assertion_value, const StringLiteral< AssertionStringSize > &assertion_string, const MessageStringType &message_to_print, const StringLiteral< FileStringSize > &file_string=make_string_literal("/home/runner/work/MuNDy/MuNDy/mundy/core/utils/src/mundy_utils/throw_assert.hpp"), const StringLiteral< LineStringSize > &line_string=make_string_literal(MUNDY_LINE_STRING)) |
| template<typename MessageStringType, size_t AssertionStringSize, size_t FileStringSize, size_t LineStringSize> |
| constexpr void | abort_require (const bool assertion_value, const StringLiteral< AssertionStringSize > &assertion_string, const MessageStringType &message_to_print, const StringLiteral< FileStringSize > &file_string=make_string_literal("/home/runner/work/MuNDy/MuNDy/mundy/core/utils/src/mundy_utils/throw_assert.hpp"), const StringLiteral< LineStringSize > &line_string=make_string_literal(MUNDY_LINE_STRING)) |
| template<size_t Idx, class... Args> |
| constexpr auto & | get (tuple< Args... > &vals) |
| | Get the I'th element of a tuple.
|
| template<size_t Idx, class... Args> |
| constexpr const auto & | get (const tuple< Args... > &vals) |
| template<class T, class... Args> |
| constexpr auto & | get (tuple< Args... > &vals) |
| | Get the element of a tuple with the given type T (errors if T is not unique).
|
| template<class T, class... Args> |
| constexpr const auto & | get (const tuple< Args... > &vals) |
| template<class... FirstElements, class... SecondElements> |
| constexpr auto | tuple_cat (const tuple< FirstElements... > &first, const tuple< SecondElements... > &second) |
| | Concatenate two tuples into a single tuple containing all elements of both.
|
| template<class... Elements> |
| constexpr auto | make_tuple (Elements... vals) |
| | Make a tuple from a list of values.
|
| template<typename Func, typename T, size_t N> |
| constexpr auto | apply (Func &&func, const Array< T, N > &array) |
| | Apply a function to each element of an array.
|
| template<typename T, size_t N> |
| std::ostream & | operator<< (std::ostream &os, const Array< T, N > &a) |
| | Write the array to an output stream.
|
| template<typename Backend, class LinearOpDT, class LinearOpM, class LinearOpD> |
| auto | make_quadratic_form (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D) |
| template<typename Backend, typename LinearOp, typename QVector, convex::space::ValidConvexSpace ConvexSpace> |
| auto | make_cqpp (LinearOp &&A, QVector &&q, ConvexSpace &&space) |
| template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, convex::space::ValidConvexSpace ConvexSpace> |
| auto | make_cqpp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q, ConvexSpace &&space) |
| template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, convex::space::ValidConvexSpace ConvexSpace, typename FVector, typename UVector> |
| auto | make_cqpp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q, FVector &&f, UVector &&u, ConvexSpace &&space) |
| template<typename Backend, typename LinearOp, typename QVector, convex::space::ValidConvexSpace ConvexSpace, typename Workspace> |
| auto | make_cqpp (LinearOp &&A, QVector &&q, ConvexSpace &&space, Workspace &&workspace) |
| template<typename Backend, typename LinearOp, typename QVector> |
| auto | make_lcp (LinearOp &&A, QVector &&q) |
| template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector> |
| auto | make_lcp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q) |
| template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, typename FVector, typename UVector> |
| auto | make_lcp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q, FVector &&f, UVector &&u) |
| template<typename Backend, typename LinearOp, typename QVector, typename Workspace> |
| auto | make_lcp (LinearOp &&A, QVector &&q, Workspace &&workspace) |
| template<typename Backend, typename LinearOpA, typename QVector, typename LinearOpL, typename FVector, convex::space::ValidConvexSpace ConvexSpace> |
| auto | make_mixed_cqpp (LinearOpA &&A, QVector &&q, LinearOpL &&L, FVector &&f_b, ConvexSpace &&space) |
| template<typename Backend, typename LinearOpA, typename QVector, typename LinearOpL, typename FVector, convex::space::ValidConvexSpace ConvexSpace, typename AWorkspace, typename LWorkspace> |
| auto | make_mixed_cqpp (LinearOpA &&A, QVector &&q, LinearOpL &&L, FVector &&f_b, ConvexSpace &&space, AWorkspace &&a_workspace, LWorkspace &&l_workspace) |
| template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, typename LinearOpL, typename FVector, convex::space::ValidConvexSpace ConvexSpace> |
| auto | make_mixed_cqpp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q, LinearOpL &&L, FVector &&f_b, ConvexSpace &&space) |
| template<typename Backend, typename LinearOpDT, typename LinearOpM, typename LinearOpD, typename QVector, typename LinearOpB, typename LinearOpS, typename LinearOpBT, typename BVector, convex::space::ValidConvexSpace ConvexSpace> |
| auto | make_mixed_cqpp (LinearOpDT &&DT, LinearOpM &&M, LinearOpD &&D, QVector &&q, LinearOpB &&B, LinearOpS &&S, LinearOpBT &&BT, BVector &&b, ConvexSpace &&space) |
| template<class StepPolicy, class ResidualPolicy, class Scalar> |
| auto | make_pgd_solution_strategy (StepPolicy &&step_policy, ResidualPolicy &&residual_policy, const convex::PGDConfig< Scalar > &cfg={}) |
| template<class Scalar> |
| auto | make_pgd_solution_strategy (const convex::PGDConfig< Scalar > &cfg={}) |
| template<class XVector, class GradVector, class XTmpVector, class GradTmpVector> |
| auto | make_pgd_state (XVector &&x, GradVector &&grad, XTmpVector &&x_tmp, GradTmpVector &&grad_tmp) |
| template<class Problem, class Strategy, class State> |
| auto | solve_cqpp (const Problem &prob, const Strategy &strat, State &state) |
| | Solve a constrained quadratic programming problem (CQPP).
|
| template<class Problem, class Strategy> |
| auto | solve_mixed_cqpp (const Problem &prob, const Strategy &strat, typename Strategy::state_t &state) -> typename Strategy::result_t |
| | Solve a mixed constrained convex quadratic programming problem (MCQPP).
|
| template<class Problem, class Strategy, class State> |
| auto | solve_lcp (const Problem &prob, const Strategy &strat, State &state) |
| | Solve a linear complementarity problem (LCP) using a constrained quadratic programming solver.
|
| template<typename Scalar = double> |
| size_t | hilbert_3d (size_t s, size_t i, std::vector< mundy::Vector3< Scalar > > &position_array, mundy::Vector3< Scalar > current_position, mundy::Vector3< Scalar > dr1, mundy::Vector3< Scalar > dr2, mundy::Vector3< Scalar > dr3) |
| | Functions for generating and using 3D Hilbert space-filling curves.
|
| template<typename Scalar = double> |
| std::tuple< std::vector< mundy::Vector3< Scalar > >, std::vector< mundy::Vector3< Scalar > > > | create_hilbert_positions_and_directors (size_t num_points, mundy::Vector3< Scalar > orientation=mundy::Vector3< Scalar >(1.0, 0.0, 0.0), Scalar side_length=1.0) |
| | Create a 3D Hilbert curve with a given number of links.
|
| template<typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| auto | cholesky (const AMatrix3< T, Accessor > &A) -> Matrix3< OutputType > |
| | Get the lower triangular matrix of the Cholesky decomposition of a symmetric positive definite matrix.
|
| template<typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| auto | cholesky_f (const AMatrix3< T, Accessor > &A) -> Matrix3< OutputType > |
| template<size_t max_size, size_t N, typename CostFunctionType> |
| double | find_min_using_approximate_derivatives (const CostFunctionType &cost_func, Vector< double, N > &x, const double min_alowable_cost=-Kokkos::Experimental::infinity_v< double >, const double min_objective_delta=1e-7, const double derivative_eps=1e-7) |
| template<size_t max_size, size_t N, typename FDFType> |
| double | find_min_with_fdf (const FDFType &fdf, Vector< double, N > &x, const double min_alowable_cost=-Kokkos::Experimental::infinity_v< double >, const double min_objective_delta=1e-7) |
| | L-BFGS minimization using a caller-supplied analytical gradient.
|
| template<size_t max_size, size_t N, typename CostFunctionType, typename DerivativeFunctionType> |
| double | find_min_with_derivatives (const CostFunctionType &cost_func, const DerivativeFunctionType &der_func, Vector< double, N > &x, const double min_alowable_cost=-Kokkos::Experimental::infinity_v< double >, const double min_objective_delta=1e-7) |
| template<typename T> |
| constexpr T | get_zero_tolerance () |
| | Function to get the zero tolerance for a type. That is, the smallest value that we will consider non-zero. We use approximately 10 * std::numeric_limits<T>::epsilon() as the default tolerance for floats and doubles and 0 for integer types. To make this code GPU-compatable, we'll directly evaluate the epsilon instead of using std::numeric_limits.
|
| template<typename T> |
| constexpr T | get_relaxed_zero_tolerance () |
| | Function to get the relaxed zero tolerance for a type. That is, the smallest value that we will consider non-zero. Our choice of relaxed tolerance is based on personal preference, not on a hard standard and is mostly used during testing. To make this code GPU-compatable, we'll directly evaluate the epsilon instead of using std::numeric_limits.
|
| template<typename T1, typename T2> |
| constexpr auto | get_comparison_tolerance () |
| | A helper function for getting the tolerance to use when comparing two different types.
|
| template<typename T1, typename T2> |
| constexpr auto | get_comparison_tolerance_promote_ints () |
| | A helper function for getting the tolerance to use when comparing two different types. int - int -> double float - int -> float double - int -> double.
|
| template<typename T1, typename T2> |
| constexpr auto | get_relaxed_comparison_tolerance () |
| | A helper function for getting the relaxed tolerance to use when comparing two different types. This class chooses the tolerance based on the smaller of the two types.
|
| template<typename T1, typename T2> |
| constexpr auto | get_relaxed_comparison_tolerance_promote_ints () |
| | A helper function for getting the relaxed tolerance to use when comparing two different types.
|
| template<ValidVector3Type Vector3Type1, ValidVector3Type Vector3Type2> |
| bool | zmorton_less (const Vector3Type1 &p, const Vector3Type2 &q) |
| template<ValidPointType PointType> |
| AABB< typename PointType::value_type > | compute_aabb (const PointType &point) |
| | AABB of a point: a degenerate box with equal min and max corners.
|
| template<ValidPointType PointType, typename Metric> |
| AABB< typename PointType::value_type > | compute_aabb (const PointType &point, const Metric &) |
| template<ValidLineSegmentType LineSegmentType> |
| AABB< typename LineSegmentType::value_type > | compute_aabb (const LineSegmentType &line_segment) |
| | AABB of a line segment: component-wise min/max of the two endpoints.
|
| template<ValidLineSegmentType LineSegmentType, typename Metric> |
| AABB< typename LineSegmentType::value_type > | compute_aabb (const LineSegmentType &line_segment, const Metric &metric) |
| template<ValidSphereType SphereType> |
| AABB< typename SphereType::value_type > | compute_aabb (const SphereType &sphere) |
| | AABB of a sphere: center padded by radius in every coordinate direction.
|
| template<ValidSphereType SphereType, typename Metric> |
| AABB< typename SphereType::value_type > | compute_aabb (const SphereType &sphere, const Metric &) |
| template<ValidEllipsoidType EllipsoidType> |
| AABB< typename EllipsoidType::value_type > | compute_aabb (const EllipsoidType &ellipsoid) |
| | AABB of an ellipsoid.
|
| template<ValidEllipsoidType EllipsoidType, typename Metric> |
| AABB< typename EllipsoidType::value_type > | compute_aabb (const EllipsoidType &ellipsoid, const Metric &) |
| template<ValidSpherocylinderType SpherocylinderType> |
| AABB< typename SpherocylinderType::value_type > | compute_aabb (const SpherocylinderType &spherocylinder) |
| | AABB of a spherocylinder (capsule).
|
| template<ValidSpherocylinderType SpherocylinderType, typename Metric> |
| AABB< typename SpherocylinderType::value_type > | compute_aabb (const SpherocylinderType &spherocylinder, const Metric &) |
| template<ValidSpherocylinderSegmentType SegmentType> |
| AABB< typename SegmentType::value_type > | compute_aabb (const SegmentType &segment) |
| | AABB of a spherocylinder segment: endpoint AABB padded by radius.
|
| template<ValidSpherocylinderSegmentType SegmentType, typename Metric> |
| AABB< typename SegmentType::value_type > | compute_aabb (const SegmentType &segment, const Metric &metric) |
| template<ValidPointType PointType> |
| PointType::value_type | compute_bounding_radius (const PointType &point) |
| | Bounding radius of a point: zero.
|
| template<ValidPointType PointType, typename Metric> |
| PointType::value_type | compute_bounding_radius (const PointType &point, const Metric &) |
| template<ValidLineSegmentType LineSegmentType> |
| LineSegmentType::value_type | compute_bounding_radius (const LineSegmentType &line_segment) |
| | Bounding radius of a line segment: half the segment length.
|
| template<ValidLineSegmentType LineSegmentType, typename Metric> |
| LineSegmentType::value_type | compute_bounding_radius (const LineSegmentType &line_segment, const Metric &metric) |
| template<ValidSphereType SphereType> |
| SphereType::value_type | compute_bounding_radius (const SphereType &sphere) |
| | Bounding radius of a sphere: its radius.
|
| template<ValidSphereType SphereType, typename Metric> |
| SphereType::value_type | compute_bounding_radius (const SphereType &sphere, const Metric &) |
| template<ValidEllipsoidType EllipsoidType> |
| EllipsoidType::value_type | compute_bounding_radius (const EllipsoidType &ellipsoid) |
| | Bounding radius of an ellipsoid: the largest of the three semi-axis radii.
|
| template<ValidEllipsoidType EllipsoidType, typename Metric> |
| EllipsoidType::value_type | compute_bounding_radius (const EllipsoidType &ellipsoid, const Metric &) |
| template<ValidSpherocylinderType SpherocylinderType> |
| SpherocylinderType::value_type | compute_bounding_radius (const SpherocylinderType &spherocylinder) |
| | Bounding radius of a spherocylinder (capsule): half the centerline length plus radius.
|
| template<ValidSpherocylinderType SpherocylinderType, typename Metric> |
| SpherocylinderType::value_type | compute_bounding_radius (const SpherocylinderType &spherocylinder, const Metric &) |
| template<ValidSpherocylinderSegmentType SegmentType> |
| SegmentType::value_type | compute_bounding_radius (const SegmentType &segment) |
| | Bounding radius of a spherocylinder segment: half the segment length plus radius.
|
| template<ValidSpherocylinderSegmentType SegmentType, typename Metric> |
| SegmentType::value_type | compute_bounding_radius (const SegmentType &segment, const Metric &metric) |
| template<ValidPointType PointType> |
| OBB< typename PointType::value_type > | compute_obb (const PointType &point) |
| | OBB of a point: identity orientation, zero half-extents.
|
| template<ValidPointType PointType, typename Metric> |
| OBB< typename PointType::value_type > | compute_obb (const PointType &point, const Metric &) |
| template<ValidSphereType SphereType> |
| OBB< typename SphereType::value_type > | compute_obb (const SphereType &sphere) |
| | OBB of a sphere: identity orientation, uniform half-extents equal to the radius.
|
| template<ValidSphereType SphereType, typename Metric> |
| OBB< typename SphereType::value_type > | compute_obb (const SphereType &sphere, const Metric &) |
| template<ValidAABBType AABBType> |
| OBB< typename AABBType::value_type > | compute_obb (const AABBType &aabb) |
| | OBB of an AABB: identity orientation, half-extents = (max - min) / 2.
|
| template<ValidAABBType AABBType, typename Metric> |
| OBB< typename AABBType::value_type > | compute_obb (const AABBType &aabb, const Metric &) |
| template<ValidEllipsoidType EllipsoidType> |
| OBB< typename EllipsoidType::value_type > | compute_obb (const EllipsoidType &ellipsoid) |
| | OBB of an ellipsoid: orientation from the stored quaternion, half-extents from the radii.
|
| template<ValidEllipsoidType EllipsoidType, typename Metric> |
| OBB< typename EllipsoidType::value_type > | compute_obb (const EllipsoidType &ellipsoid, const Metric &) |
| template<ValidSpherocylinderType SpherocylinderType> |
| OBB< typename SpherocylinderType::value_type > | compute_obb (const SpherocylinderType &sc) |
| | OBB of a spherocylinder (capsule).
|
| template<ValidSpherocylinderType SpherocylinderType, typename Metric> |
| OBB< typename SpherocylinderType::value_type > | compute_obb (const SpherocylinderType &sc, const Metric &) |
| template<ValidSpherocylinderSegmentType SegmentType> |
| OBB< typename SegmentType::value_type > | compute_obb (const SegmentType &seg) |
| | OBB of a spherocylinder segment.
|
| template<ValidSpherocylinderSegmentType SegmentType, typename Metric> |
| OBB< typename SegmentType::value_type > | compute_obb (const SegmentType &seg, const Metric &metric) |
| template<ValidLineSegmentType LineSegmentType> |
| OBB< typename LineSegmentType::value_type > | compute_obb (const LineSegmentType &ls) |
| | OBB of a line segment (zero radius): oriented along the segment with zero radial extents.
|
| template<ValidLineSegmentType LineSegmentType, typename Metric> |
| OBB< typename LineSegmentType::value_type > | compute_obb (const LineSegmentType &ls, const Metric &metric) |
| template<typename Scalar, typename RNG> |
| Point< Scalar > | generate_random_point (const AABB< Scalar > &box, RNG &rng) |
| | Generate a random point within a given bounding box.
|
| template<typename Scalar, typename RNG> |
| Point< Scalar > | generate_random_unit_vector (RNG &rng) |
| | Generate a random unit vector (uniformly distributed on the unit sphere).
|
| template<typename Scalar, typename RNG> |
| Quaternion< Scalar > | generate_random_unit_quaternion (RNG &rng) |
| | Generate a random unit quaternion mapping the z-axis to a random unit vector via parallel transport.
|
| template<typename Scalar, typename RNG> |
| Line< Scalar > | generate_random_line (const AABB< Scalar > &box, RNG &rng) |
| | Generate a random line with a center point within a given bounding box and a random direction.
|
| template<typename Scalar, typename RNG> |
| LineSegment< Scalar > | generate_random_line_segment (const AABB< Scalar > &box, RNG &rng) |
| | Generate a random line segment with endpoints within a given bounding box.
|
| template<typename Scalar, typename RNG> |
| LineSegment< Scalar > | generate_random_line_segment (const AABB< Scalar > &box, Scalar min_length, Scalar max_length, RNG &rng) |
| | Generate a random line segment with center in the given bounding box, random length within the given bounds, and random orientation.
|
| template<typename Scalar, typename RNG> |
| VSegment< Scalar > | generate_random_vsegment (const AABB< Scalar > &box, RNG &rng) |
| | Generate a random v-segment with endpoints and middle point within a given bounding box.
|
| template<typename Scalar, typename RNG> |
| VSegment< Scalar > | generate_random_vsegment (const AABB< Scalar > &box, Scalar min_length, Scalar max_length, RNG &rng) |
| | Generate a random v-segment with center in the given bounding box, random edge lengths within the given bounds, and random edge orientations.
|
| template<typename Scalar, typename RNG> |
| Circle3D< Scalar > | generate_random_circle3D (const AABB< Scalar > &box, Scalar min_radius, Scalar max_radius, RNG &rng) |
| | Generate a random circle3D with center point within a given bounding box, random radius, and random orientation.
|
| template<typename Scalar, typename RNG> |
| AABB< Scalar > | generate_random_aabb (const AABB< Scalar > &box, RNG &rng) |
| | Generate a random AABB within a given bounding box with both points inside the box.
|
| template<typename Scalar, typename RNG> |
| AABB< Scalar > | generate_random_aabb (const AABB< Scalar > &box, const Vector3< Scalar > &min_sizes, const Vector3< Scalar > &max_sizes, RNG &rng) |
| | Generate a random AABB with random size and center point inside the box.
|
| template<typename Scalar, typename RNG> |
| Sphere< Scalar > | generate_random_sphere (const AABB< Scalar > &box, Scalar min_radius, Scalar max_radius, RNG &rng) |
| | Generate a random sphere with center point within a given bounding box and random radius.
|
| template<typename Scalar, typename RNG> |
| Spherocylinder< Scalar > | generate_random_spherocylinder (const AABB< Scalar > &box, Scalar min_radius, Scalar max_radius, RNG &rng) |
| | Generate a random spherocylinder with endpoints within a given bounding box and random radius.
|
| template<typename Scalar, typename RNG> |
| Spherocylinder< Scalar > | generate_random_spherocylinder (const AABB< Scalar > &box, Scalar min_radius, Scalar max_radius, Scalar min_length, Scalar max_length, RNG &rng) |
| | Generate a random spherocylinder with center point within a given bounding box, random radius, random length, and random orientation.
|
| template<typename Scalar, typename RNG> |
| SpherocylinderSegment< Scalar > | generate_random_spherocylinder_segment (const AABB< Scalar > &box, Scalar min_radius, Scalar max_radius, RNG &rng) |
| | Generate a random spherocylinder segment with endpoints within a given bounding box and random radius.
|
| template<typename Scalar, typename RNG> |
| SpherocylinderSegment< Scalar > | generate_random_spherocylinder_segment (const AABB< Scalar > &box, Scalar min_radius, Scalar max_radius, Scalar min_length, Scalar max_length, RNG &rng) |
| | Generate a random spherocylinder segment with center point within a given bounding box, random radius, random length, and random orientation.
|
| template<typename Scalar, typename RNG> |
| Ring< Scalar > | generate_random_ring (const AABB< Scalar > &box, Scalar min_major_radius, Scalar max_major_radius, Scalar min_minor_radius, Scalar max_minor_radius, RNG &rng) |
| | Generate a random ring with center point within a given bounding box, random major and minor radii, and random orientation.
|
| template<typename Scalar, typename RNG> |
| Ellipsoid< Scalar > | generate_random_ellipsoid (const AABB< Scalar > &box, const Vector3< Scalar > &min_radii, const Vector3< Scalar > &max_radii, RNG &rng) |
| | Generate a random ellipsoid with center point within a given bounding box, random semi-axis radii, and random orientation.
|
| template<typename U, typename T> |
| host_ptr< U > | static_pointer_cast (const host_ptr< T > &ptr) noexcept |
| template<typename U, typename T> |
| host_ptr< U > | dynamic_pointer_cast (const host_ptr< T > &ptr) noexcept |
| template<typename U, typename T> |
| host_ptr< U > | const_pointer_cast (const host_ptr< T > &ptr) noexcept |
| template<typename U, typename T> |
| host_ptr< U > | reinterpret_pointer_cast (const host_ptr< T > &ptr) noexcept |
| template<typename T> |
| bool | operator== (const host_ptr< T > &lhs, const host_ptr< T > &rhs) noexcept |
| template<typename T> |
| std::strong_ordering | operator<=> (const host_ptr< T > &lhs, const host_ptr< T > &rhs) noexcept |
| template<typename T> |
| bool | operator== (const host_ptr< T > &ptr, std::nullptr_t) noexcept |
| template<typename T> |
| std::strong_ordering | operator<=> (const host_ptr< T > &ptr, std::nullptr_t) noexcept |
| template<typename T, size_t N, Kokkos::Array< bool, N > mask, ValidAccessor< T > Accessor> |
| constexpr auto | get_masked_view (Accessor &&accessor) |
| | A helper function to create a MaskedView<T, N, Accessor> based on a given accessor.
|
| template<typename T, size_t N, Kokkos::Array< bool, N > mask, ValidAccessor< T > Accessor> |
| constexpr auto | get_owning_masked_accessor (Accessor &&accessor) |
| template<typename T, size_t N, size_t M, ValidAccessor< T > Accessor> |
| std::ostream & | operator<< (std::ostream &os, const AMatrix< T, N, M, Accessor > &mat) |
| | Write the matrix to an output stream.
|
| template<typename T, ValidAccessor< T > Accessor> |
| std::ostream & | operator<< (std::ostream &os, const AQuaternion< T, Accessor > &quat) |
| | Write the quaternion to an output stream.
|
| template<typename T, size_t N, ValidAccessor< T > Accessor> |
| std::ostream & | operator<< (std::ostream &os, const AVector< T, N, Accessor > &vec) |
| | Write the vector to an output stream.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | is_close (const AMatrix< U, N, M, Accessor1 > &mat1, const AMatrix< T, N, M, Accessor2 > &mat2, const decltype(get_comparison_tolerance< T, U >())&tol=get_comparison_tolerance< T, U >()) |
| | AMatrix-matrix equality (element-wise within a tolerance).
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | is_approx_close (const AMatrix< U, N, M, Accessor1 > &mat1, const AMatrix< T, N, M, Accessor2 > &mat2, const decltype(get_relaxed_comparison_tolerance< T, U >())&tol=get_relaxed_comparison_tolerance< T, U >()) |
| | AMatrix-matrix equality (element-wise within a relaxed tolerance).
|
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | is_close (const AQuaternion< U, Accessor1 > &quat1, const AQuaternion< T, Accessor2 > &quat2, const decltype(get_comparison_tolerance< T, U >())&tol=get_comparison_tolerance< T, U >()) |
| | AQuaternion-quaternion equality (element-wise within a tolerance).
|
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | is_approx_close (const AQuaternion< U, Accessor1 > &quat1, const AQuaternion< T, Accessor2 > &quat2, const decltype(get_relaxed_comparison_tolerance< T, U >())&tol=get_relaxed_comparison_tolerance< T, U >()) |
| | AQuaternion-quaternion equality (element-wise within a relaxed tolerance).
|
| template<typename U, typename T> |
| constexpr bool | is_close (const U &scalar1, const T &scalar2, const decltype(get_comparison_tolerance< T, U >())&tol=get_comparison_tolerance< T, U >()) |
| | Scalar-scalar equality (within a tolerance).
|
| template<typename U, typename T> |
| constexpr bool | is_approx_close (const U &scalar1, const T &scalar2, const decltype(get_relaxed_comparison_tolerance< T, U >())&tol=get_relaxed_comparison_tolerance< T, U >()) |
| | Scalar-scalar equality (within a relaxed tolerance).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | is_close (const AVector< U, N, Accessor1 > &vec1, const AVector< T, N, Accessor2 > &vec2, const decltype(get_comparison_tolerance< T, U >())&tol=get_comparison_tolerance< T, U >()) |
| | AVector-vector equality (element-wise within a tolerance).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | is_approx_close (const AVector< U, N, Accessor1 > &vec1, const AVector< T, N, Accessor2 > &vec2, const decltype(get_relaxed_comparison_tolerance< T, U >())&tol=get_relaxed_comparison_tolerance< T, U >()) |
| | AVector-vector equality (element-wise within a relaxed tolerance).
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator+ (const U &scalar, const AMatrix< T, N, M, Accessor > &mat) -> AMatrix< std::common_type_t< T, U >, N, M > |
| | Scalar-matrix addition.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator- (const U &scalar, const AMatrix< T, N, M, Accessor > &mat) -> AMatrix< std::common_type_t< T, U >, N, M > |
| | Scalar-matrix subtraction.
|
| template<size_t N, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator+ (const U &scalar, const AVector< T, N, Accessor > &vec) -> AVector< std::common_type_t< T, U >, N > |
| | Scalar-vector addition.
|
| template<size_t N, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator- (const U &scalar, const AVector< T, N, Accessor > &vec) -> AVector< std::common_type_t< T, U >, N > |
| | Scalar-vector subtraction.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator* (const U &scalar, const AMatrix< T, N, M, Accessor > &mat) -> AMatrix< std::common_type_t< T, U >, N, M > |
| | Scalar-matrix multiplication.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< T > Accessor1, ValidAccessor< U > Accessor2> |
| constexpr auto | operator* (const AVector< U, N, Accessor1 > &vec, const AMatrix< T, N, M, Accessor2 > &mat) -> Vector< std::common_type_t< T, U >, M > |
| | Vector matrix multiplication (v^T M).
|
| template<typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator* (const U &scalar, const AQuaternion< T, Accessor > &quat) -> AQuaternion< std::common_type_t< T, U > > |
| | Scalar-quaternion multiplication.
|
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | operator* (const AVector3< U, Accessor1 > &vec, const AQuaternion< T, Accessor2 > &quat) -> Vector3< std::common_type_t< T, U > > |
| | Vector-quaternion multiplication (same as v^T * R = transpose(R^T * v)).
|
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | operator* (const AMatrix3< U, Accessor1 > &mat, const AQuaternion< T, Accessor2 > &quat) |
| | Matrix-quaternion multiplication (same as R * M).
|
| template<size_t N, typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator* (const U &scalar, const AVector< T, N, Accessor > &vec) -> AVector< std::common_type_t< T, U >, N > |
| | Scalar-vector multiplication.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | determinant (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix determinant.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | trace (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix trace.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | sum (const AMatrix< T, N, M, Accessor > &mat) |
| | Sum of all elements.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | product (const AMatrix< T, N, M, Accessor > &mat) |
| | Product of all elements.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | min (const AMatrix< T, N, M, Accessor > &mat) |
| | Minimum element of the matrix.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | max (const AMatrix< T, N, M, Accessor > &mat) |
| | Maximum element of the matrix.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | mean (const AMatrix< T, N, M, Accessor > &mat) |
| | Mean of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | mean_f (const AMatrix< T, N, M, Accessor > &mat) |
| | Mean of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | variance (const AMatrix< T, N, M, Accessor > &mat) |
| | Variance of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | variance_f (const AMatrix< T, N, M, Accessor > &mat) |
| | Variance of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | stddev (const AMatrix< T, N, M, Accessor > &mat) |
| | Standard deviation of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | stddev_f (const AMatrix< T, N, M, Accessor > &mat) |
| | Standard deviation of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | sum (const AVector< T, N, Accessor > &vec) |
| | Sum of all elements.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | product (const AVector< T, N, Accessor > &vec) |
| | Product of all elements.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | min (const AVector< T, N, Accessor > &vec) |
| | Minimum element.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | max (const AVector< T, N, Accessor > &vec) |
| | Maximum element.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | mean (const AVector< T, N, Accessor > &vec) |
| | Mean of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | mean_f (const AVector< T, N, Accessor > &vec) |
| | Mean of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | variance (const AVector< T, N, Accessor > &vec) |
| | Variance of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | variance_f (const AVector< T, N, Accessor > &vec) |
| | Variance of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | stddev (const AVector< T, N, Accessor > &vec) |
| | Standard deviation of all elements (returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | stddev_f (const AVector< T, N, Accessor > &vec) |
| | Standard deviation of all elements (returns a float if T is an integral type, otherwise returns T).
|
| template<ValidMatrixType MatrixType> |
| constexpr auto | copy (const MatrixType &m) |
| | Get a deep copy of the given matrix.
|
| template<typename U, ValidMatrixType MatrixType> |
| constexpr auto | cast (const MatrixType &m) |
| | Cast a matrix to a different arithmetic type.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr AMatrix< T, M, N > | transpose (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix transpose.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| AMatrix< T, N, N > constexpr | cofactors (const AMatrix< T, N, N, Accessor > &mat) |
| | AMatrix cofactors.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| AMatrix< T, N, N > constexpr | adjugate (const AMatrix< T, N, N, Accessor > &mat) |
| | AMatrix adjugate.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| AMatrix< OutputType, N, N > constexpr | inverse (const AMatrix< T, N, N, Accessor > &mat) |
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputElementType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr auto | inverse_f (const AMatrix< T, N, N, Accessor > &mat) |
| | AMatrix inverse (returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | frobenius_inner_product (const AMatrix< U, N, M, Accessor1 > &a, const AMatrix< T, N, M, Accessor2 > &b) |
| | AMatrix Frobenius inner product.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | elementwise_mul (const AMatrix< U, N, M, Accessor1 > &a, const AMatrix< T, N, M, Accessor2 > &b) |
| | Element-wise product.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | elementwise_div (const AMatrix< U, N, M, Accessor1 > &a, const AMatrix< T, N, M, Accessor2 > &b) |
| | Element-wise product.
|
| template<typename Func, size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | apply (Func &&func, const AMatrix< T, N, M, Accessor > &mat) |
| | Apply a function to each element of the matrix.
|
| template<typename Func, size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | apply_row (Func &&func, const AMatrix< T, N, M, Accessor > &mat) |
| | Apply a function to each row of the matrix.
|
| template<typename Func, size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | apply_column (Func &&func, const AMatrix< T, N, M, Accessor > &mat) |
| | Apply a function to each column of the matrix.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | outer_product (const AVector< U, N, Accessor1 > &a, const AVector< T, M, Accessor2 > &b) |
| | Outer product of two vectors.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | frobenius_norm (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix Frobenius norm.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | inf_norm (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix infinity norm.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | one_norm (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix 1-norm (maximum absolute column sum).
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | two_norm (const AMatrix< T, N, M, Accessor > &mat) |
| | AMatrix 2-norm.
|
| template<size_t N, size_t M, typename T, ValidAccessor< T > A> |
| AMatrix< T, N, M > | atomic_load (AMatrix< T, N, M, A > *const m) |
| | Atomic m_copy = m.
|
| template<size_t N, size_t M, typename T1, ValidAccessor< T1 > A, typename T2> |
| void | atomic_store (AMatrix< T1, N, M, A > *const m, const T2 &s) |
| | Atomic m[i, j] = s.
|
| template<size_t N, size_t M, typename T1, ValidAccessor< T1 > A1, typename T2, ValidAccessor< T2 > A2> |
| void | atomic_store (AMatrix< T1, N, M, A1 > *const m1, const AMatrix< T2, N, M, A2 > &m2) |
| | Atomic m1[i, j] = m2[i, j].
|
| template<size_t N, typename T, ValidAccessor< T > A> |
| AVector< T, N > | atomic_load (AVector< T, N, A > *const v) |
| | Atomic v_copy = v.
|
| template<size_t N, typename T1, ValidAccessor< T1 > A, typename T2> |
| void | atomic_store (AVector< T1, N, A > *const v, const T2 &s) |
| | Atomic v[i] = s.
|
| template<size_t N, typename T1, ValidAccessor< T1 > A1, typename T2, ValidAccessor< T2 > A2> |
| void | atomic_store (AVector< T1, N, A1 > *const v1, const AVector< T2, N, A2 > &v2) |
| | Atomic v1[i] = v2[i].
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr auto | get_matrix3_view (Accessor &&data) |
| | A helper function to create a AMatrix3<T, Accessor> based on a given (valid) accessor.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr auto | get_owning_matrix3 (Accessor &&data) |
| template<ValidQuaternionType QuaternionType> |
| constexpr auto | copy (const QuaternionType &q) |
| | Get a deep copy of the given quaternion.
|
| template<typename U, ValidQuaternionType QuaternionType> |
| constexpr auto | cast (const QuaternionType &q) |
| | Cast a quaternion to a different arithmetic type.
|
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | dot (const AQuaternion< U, Accessor1 > &q1, const AQuaternion< T, Accessor2 > &q2) |
| | Get the dot product of two quaternions.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr AQuaternion< std::remove_const_t< T > > | conjugate (const AQuaternion< T, Accessor > &quat) |
| | Get the conjugate of a quaternion.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr AQuaternion< std::remove_const_t< T > > | inverse (const AQuaternion< T, Accessor > &quat) |
| | Get the inverse of a quaternion.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr auto | norm_squared (const AQuaternion< T, Accessor > &quat) |
| | Get the squared norm of a quaternion.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr AQuaternion< std::remove_const_t< T > > | normalize (const AQuaternion< T, Accessor > &quat) |
| | Get the normalized quaternion.
|
| template<typename U, typename T, typename V, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | slerp (const AQuaternion< U, Accessor1 > &q1, const AQuaternion< T, Accessor2 > &q2, const V t) -> AQuaternion< std::common_type_t< U, T, V > > |
| | Perform spherical linear interpolation between two quaternions.
|
| template<ValidQuaternionType QuaternionType, ValidVectorType VectorType> |
| constexpr void | rotate_quaternion (QuaternionType &quat, const VectorType &omega, const typename QuaternionType::value_type &dt) |
| | Rotate a quaternion by an angular velocity omega dt.
|
| template<typename T, typename U, ValidAccessor< T > Accessor> |
| constexpr auto | axis_angle_to_quaternion (const AVector3< T, Accessor > &axis, const U &angle) -> AQuaternion< std::common_type_t< T, U > > |
| | Get the quaternion from an axis-angle representation.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr AQuaternion< T > | rotation_matrix_to_quaternion (const AMatrix3< T, Accessor > &rot_mat) |
| | Get the quaternion from a rotation matrix.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr Matrix3< std::remove_const_t< T > > | quaternion_to_rotation_matrix (const AQuaternion< T, Accessor > &quat) |
| | Get the rotation matrix from a quaternion.
|
| template<typename T> |
| constexpr AQuaternion< std::remove_const_t< T > > | euler_to_quat (const T roll, const T pitch, const T yaw) |
| | Get the quaternion from Euler angles https://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions#Euler_angles_%E2%86%94_quaternion.
|
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | quat_from_parallel_transport (const AVector3< U, Accessor1 > &v_from, const AVector3< T, Accessor2 > &v_to) -> AQuaternion< decltype(U() *T())> |
| | Get the quaternion that perform parallel transport from vector v1 to vector v2.
|
| template<typename T, typename Accessor> |
| constexpr auto | get_quaternion_view (Accessor &&data) |
| | A helper function to create a AQuaternion<T, Accessor> based on a given accessor.
|
| template<typename T, typename Accessor> |
| constexpr auto | get_owning_quaternion (Accessor &&data) |
| template<typename T, ValidAccessor< T > Accessor> |
| std::ostream & | operator<< (std::ostream &os, const AScalar< T, Accessor > &s) |
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | is_close (const AScalar< U, Accessor1 > &a, const AScalar< T, Accessor2 > &b, const decltype(get_comparison_tolerance< T, U >())&tol=get_comparison_tolerance< T, U >()) |
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr bool | is_approx_close (const AScalar< U, Accessor1 > &a, const AScalar< T, Accessor2 > &b, const decltype(get_relaxed_comparison_tolerance< T, U >())&tol=get_relaxed_comparison_tolerance< T, U >()) |
| template<typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator+ (const U &scalar, const AScalar< T, Accessor > &s) |
| template<typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator- (const U &scalar, const AScalar< T, Accessor > &s) |
| template<typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator* (const U &scalar, const AScalar< T, Accessor > &s) |
| template<typename U, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | operator/ (const U &scalar, const AScalar< T, Accessor > &s) |
| | arithmetic / AScalar — promotes integral/integral to double
|
| template<size_t N, typename T, typename U, ValidAccessor< T > Accessor1, ValidAccessor< U > Accessor2> |
| constexpr auto | operator* (const AVector< T, N, Accessor1 > &vec, const AScalar< U, Accessor2 > &s) -> AVector< std::common_type_t< T, U >, N > |
| | AVector * AScalar.
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | operator* (const AScalar< U, Accessor1 > &s, const AVector< T, N, Accessor2 > &vec) -> AVector< std::common_type_t< T, U >, N > |
| | AScalar * AVector (commutative).
|
| template<size_t N, typename T, typename U, ValidAccessor< T > Accessor1, ValidAccessor< U > Accessor2> |
| constexpr auto | operator/ (const AVector< T, N, Accessor1 > &vec, const AScalar< U, Accessor2 > &s) |
| | AVector / AScalar — delegates to AVector::operator/, preserving its integer-promotion behaviour.
|
| template<size_t N, size_t M, typename T, typename U, ValidAccessor< T > Accessor1, ValidAccessor< U > Accessor2> |
| constexpr auto | operator* (const AMatrix< T, N, M, Accessor1 > &mat, const AScalar< U, Accessor2 > &s) -> AMatrix< std::common_type_t< T, U >, N, M > |
| | AMatrix * AScalar.
|
| template<size_t N, size_t M, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | operator* (const AScalar< U, Accessor1 > &s, const AMatrix< T, N, M, Accessor2 > &mat) -> AMatrix< std::common_type_t< T, U >, N, M > |
| | AScalar * AMatrix (commutative).
|
| template<size_t N, size_t M, typename T, typename U, ValidAccessor< T > Accessor1, ValidAccessor< U > Accessor2> |
| constexpr auto | operator/ (const AMatrix< T, N, M, Accessor1 > &mat, const AScalar< U, Accessor2 > &s) |
| | AMatrix / AScalar — delegates to AMatrix::operator/, preserving its integer-promotion behaviour.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr auto | abs (const AScalar< T, Accessor > &s) |
| | Absolute value of a scalar.
|
| template<ValidScalarType ScalarType> |
| constexpr auto | copy (const ScalarType &s) |
| | Deep copy (mirrors the AVector free function).
|
| template<typename U, ValidScalarType ScalarType> |
| constexpr auto | cast (const ScalarType &s) |
| | Cast a scalar to a different arithmetic type.
|
| template<typename T> |
| T | atomic_load (T *const s) |
| | Atomic load: s_copy = *s.
|
| template<typename T, typename U> |
| void | atomic_store (T *const s, const U &value) |
| | Atomic store: *s = value.
|
| template<typename T, typename U> |
| void | atomic_add (T *const s, const U &value) |
| | Atomic *s += value.
|
| template<typename T, typename Acc, typename U> |
| void | atomic_add (AScalar< T, Acc > *const s, const U &value) |
| | Atomic *s += value — AScalar overload: operates on the underlying scalar, bypassing AScalar's operator+ (which returns a different storage type incompatible with CAS loops).
|
| template<typename T, typename U> |
| void | atomic_sub (T *const s, const U &value) |
| | Atomic *s -= value.
|
| template<typename T, typename Acc, typename U> |
| void | atomic_sub (AScalar< T, Acc > *const s, const U &value) |
| | Atomic *s -= value — AScalar overload.
|
| template<typename T, typename U> |
| void | atomic_mul (T *const s, const U &value) |
| | Atomic *s *= value.
|
| template<typename T, typename Acc, typename U> |
| void | atomic_mul (AScalar< T, Acc > *const s, const U &value) |
| | Atomic *s *= value — AScalar overload.
|
| template<typename T, typename U> |
| void | atomic_div (T *const s, const U &value) |
| | Atomic *s /= value.
|
| template<typename T, typename Acc, typename U> |
| void | atomic_div (AScalar< T, Acc > *const s, const U &value) |
| | Atomic *s /= value — AScalar overload.
|
| template<typename T, typename U> |
| T | atomic_fetch_add (T *const s, const U &value) |
| | Atomic *s += value; returns old *s.
|
| template<typename T, typename U> |
| T | atomic_fetch_sub (T *const s, const U &value) |
| | Atomic *s -= value; returns old *s.
|
| template<typename T, typename U> |
| T | atomic_fetch_mul (T *const s, const U &value) |
| | Atomic *s *= value; returns old *s.
|
| template<typename T, typename U> |
| T | atomic_fetch_div (T *const s, const U &value) |
| | Atomic *s /= value; returns old *s.
|
| template<typename T, typename U> |
| T | atomic_add_fetch (T *const s, const U &value) |
| | Atomic *s += value; returns new *s.
|
| template<typename T, typename U> |
| T | atomic_sub_fetch (T *const s, const U &value) |
| | Atomic *s -= value; returns new *s.
|
| template<typename T, typename U> |
| T | atomic_mul_fetch (T *const s, const U &value) |
| | Atomic *s *= value; returns new *s.
|
| template<typename T, typename U> |
| T | atomic_div_fetch (T *const s, const U &value) |
| | Atomic *s /= value; returns new *s.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr auto | get_scalar_view (Accessor &&data) |
| | Create a non-owning AScalar view over an existing accessor.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr auto | get_owning_scalar (Accessor &&data) |
| | Create an owning AScalar by moving the accessor.
|
| template<typename T, size_t shift, ValidAccessor< T > Accessor> |
| constexpr auto | get_shifted_view (Accessor &&data) |
| | A helper function to create a ShiftedView<T, N, Accessor> based on a given accessor.
|
| template<typename T, size_t shift, ValidAccessor< T > Accessor> |
| constexpr auto | get_owning_shifted_accessor (Accessor &&data) |
| template<typename T, size_t stride, ValidAccessor< T > Accessor> |
| constexpr auto | get_strided_view (Accessor &&data) |
| | A helper function to create a StridedView<T, stride, Accessor> based on a given accessor.
|
| template<typename T, size_t stride, ValidAccessor< T > Accessor> |
| constexpr auto | get_owning_strided_accessor (Accessor &&data) |
| template<typename T, size_t N, size_t M, ValidAccessor< T > Accessor> |
| constexpr auto | get_transposed_view (Accessor &&data) |
| | A helper function to create a TransposedView<T, N, Accessor> based on a given accessor.
|
| template<typename T, size_t N, size_t M, ValidAccessor< T > Accessor> |
| constexpr auto | get_owning_transposed_accessor (Accessor &&data) |
| template<ValidVectorType VectorType> |
| constexpr auto | copy (const VectorType &v) |
| | Get a deep copy of the given vector.
|
| template<typename U, ValidVectorType VectorType> |
| constexpr auto | cast (const VectorType &v) |
| | Cast a vector to a different arithmetic type.
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | dot (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) -> std::common_type_t< T, U > |
| | Dot product of two vectors.
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | elementwise_mul (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Element-wise product.
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | elementwise_div (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Element-wise division.
|
| template<typename Func, size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | apply (Func &&func, const AVector< T, N, Accessor > &vec) |
| | Apply a function to each element of the vector.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | abs (const AVector< T, N, Accessor > &vec) |
| | AVector component-wise absolute value.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | inf_norm (const AVector< T, N, Accessor > &vec) |
| | AVector infinity norm.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | one_norm (const AVector< T, N, Accessor > &vec) |
| | AVector 1-norm.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | two_norm (const AVector< T, N, Accessor > &vec) |
| | AVector 2-norm (Returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | two_norm_f (const AVector< T, N, Accessor > &vec) |
| | AVector 2-norm (Returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | two_norm_squared (const AVector< T, N, Accessor > &vec) |
| | AVector squared 2-norm.
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, double, T>> |
| constexpr OutputType | norm (const AVector< T, N, Accessor > &vec) |
| | Default vector norm (2-norm, returns a double if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor, typename OutputType = std::conditional_t<std::is_integral_v<T>, float, T>> |
| constexpr OutputType | norm_f (const AVector< T, N, Accessor > &vec) |
| | Default vector norm (2-norm, returns a float if T is an integral type, otherwise returns T).
|
| template<size_t N, typename T, ValidAccessor< T > Accessor> |
| constexpr auto | norm_squared (const AVector< T, N, Accessor > &vec) |
| | Default vector norm squared (2-norm).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2, typename OutputType = std::conditional_t<std::is_integral_v<std::common_type_t<U, T>>, double, std::common_type_t<U, T>>> |
| constexpr OutputType | minor_angle (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Minor angle between two vectors (returns a double if common_type_t<U, T> is integral, otherwise common_type_t<U, T>).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2, typename OutputType = std::conditional_t<std::is_integral_v<std::common_type_t<U, T>>, float, std::common_type_t<U, T>>> |
| constexpr OutputType | minor_angle_f (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Minor angle between two vectors (returns a float if common_type_t<U, T> is integral, otherwise common_type_t<U, T>).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2, typename OutputType = std::conditional_t<std::is_integral_v<std::common_type_t<U, T>>, double, std::common_type_t<U, T>>> |
| constexpr OutputType | major_angle (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Major angle between two vectors (returns a double if common_type_t<U, T> is integral, otherwise common_type_t<U, T>).
|
| template<size_t N, typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2, typename OutputType = std::conditional_t<std::is_integral_v<std::common_type_t<U, T>>, float, std::common_type_t<U, T>>> |
| constexpr OutputType | major_angle_f (const AVector< U, N, Accessor1 > &a, const AVector< T, N, Accessor2 > &b) |
| | Major angle between two vectors (returns a float if common_type_t<U, T> is integral, otherwise common_type_t<U, T>).
|
| size_t ValidAccessor< T > Accessor constexpr auto | get_vector_view (Accessor &&data) |
| template<typename T, size_t N, ValidAccessor< T > Accessor> |
| constexpr auto | get_owning_vector (Accessor &&data) |
| template<typename U, typename T, ValidAccessor< U > Accessor1, ValidAccessor< T > Accessor2> |
| constexpr auto | cross (const AVector3< U, Accessor1 > &a, const AVector3< T, Accessor2 > &b) -> AVector3< std::common_type_t< T, U > > |
| | Cross product.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr auto | get_vector3_view (Accessor &&data) |
| | A helper function to create a AVector3<T, Accessor> based on a given accessor.
|
| template<typename T, ValidAccessor< T > Accessor> |
| constexpr auto | get_owning_vector3 (Accessor &&data) |
| template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2> |
| Circle3DType1::value_type | distance (const Circle3DType1 &circle3d1, const Circle3DType2 &circle3d2) |
| template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2> |
| Circle3DType1::value_type | distance (const Euclidean distance_type, const Circle3DType1 &circle3d1, const Circle3DType2 &circle3d2) |
| template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2> |
| Circle3DType1::value_type | distance (const Euclidean distance_type, const Circle3DType1 &circle3d1, const Circle3DType2 &circle3d2, Point< typename Circle3DType1::value_type > &closest_point1, Point< typename Circle3DType1::value_type > &closest_point2, mundy::Vector3< typename Circle3DType1::value_type > &shared_normal1, mundy::Vector3< typename Circle3DType1::value_type > &shared_normal2) |
| template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2> |
| EllipsoidType1::value_type | distance (const EllipsoidType1 &ellipsoid1, const EllipsoidType2 &ellipsoid2) |
| | Ellipsoid–ellipsoid shared-normal signed separation distance.
|
| template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2> |
| EllipsoidType1::value_type | distance (const SharedNormalSigned tag, const EllipsoidType1 &ellipsoid1, const EllipsoidType2 &ellipsoid2) |
| | 2-arg overload — convenience wrapper for the 6-arg FDF implementation.
|
| template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2> |
| EllipsoidType1::value_type | distance (const SharedNormalSigned, const EllipsoidType1 &ellipsoid1, const EllipsoidType2 &ellipsoid2, Point< typename EllipsoidType1::value_type > &closest_point1, Point< typename EllipsoidType1::value_type > &closest_point2, mundy::Vector3< typename EllipsoidType1::value_type > &shared_normal1, mundy::Vector3< typename EllipsoidType1::value_type > &shared_normal2) |
| | Full 6-arg distance using the combined FDF L-BFGS minimiser.
|
| template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2> |
| EllipsoidType1::value_type | distance (const SharedNormalSignedFiniteDiff tag, const EllipsoidType1 &ellipsoid1, const EllipsoidType2 &ellipsoid2) |
| | Finite-difference-gradient variant — retained for benchmarking only.
|
| template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2> |
| EllipsoidType1::value_type | distance (const SharedNormalSignedFiniteDiff, const EllipsoidType1 &ellipsoid1, const EllipsoidType2 &ellipsoid2, Point< typename EllipsoidType1::value_type > &closest_point1, Point< typename EllipsoidType1::value_type > &closest_point2, mundy::Vector3< typename EllipsoidType1::value_type > &shared_normal1, mundy::Vector3< typename EllipsoidType1::value_type > &shared_normal2) |
| template<ValidLineType LineType1, ValidLineType LineType2> |
| LineType1::value_type | distance (const LineType1 &line1, const LineType2 &line2) |
| | Compute the distance between two lines (defaults to SharedNormalSigned distance).
|
| template<ValidLineType LineType1, ValidLineType LineType2> |
| LineType1::value_type | distance (const SharedNormalSigned distance_type, const LineType1 &line1, const LineType2 &line2) |
| | Compute the distance between two lines.
|
| template<ValidLineType LineType1, ValidLineType LineType2> |
| LineType1::value_type | distance (const Euclidean distance_type, const LineType1 &line1, const LineType2 &line2) |
| | Compute the distance between two lines.
|
| template<ValidLineType LineType1, ValidLineType LineType2> |
| LineType1::value_type | distance (const LineType1 &line1, const LineType2 &line2, Point< typename LineType1::value_type > &closest_point1, Point< typename LineType1::value_type > &closest_point2, typename LineType1::value_type &arch_length1, typename LineType1::value_type &arch_length2, mundy::Vector3< typename LineType1::value_type > &sep) |
| | Compute the distance between two lines (defaults to SharedNormalSigned distance).
|
| template<ValidLineType LineType1, ValidLineType LineType2> |
| LineType1::value_type | distance (const SharedNormalSigned distance_type, const LineType1 &line1, const LineType2 &line2, Point< typename LineType1::value_type > &closest_point1, Point< typename LineType1::value_type > &closest_point2, typename LineType1::value_type &arch_length1, typename LineType1::value_type &arch_length2, mundy::Vector3< typename LineType1::value_type > &sep) |
| | Compute the distance between two lines.
|
| template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2> |
| LineSegmentType1::value_type | distance (const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2) |
| | Compute the distance between two line segments.
|
| template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2> |
| LineSegmentType1::value_type | distance (const Euclidean distance_type, const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2) |
| | Compute the euclidean separation distance between two line segments.
|
| template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2> |
| LineSegmentType1::value_type | distance (const SharedNormalSigned distance_type, const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2) |
| | Compute the euclidean separation distance between two line segments.
|
| template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2> |
| LineSegmentType1::value_type | distance (const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2, Point< typename LineSegmentType1::value_type > &closest_point1, Point< typename LineSegmentType1::value_type > &closest_point2, typename LineSegmentType1::value_type &arch_length1, typename LineSegmentType1::value_type &arch_length2, mundy::Vector3< typename LineSegmentType1::value_type > &sep) |
| | Compute the distance between two line segments.
|
| template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2> |
| LineSegmentType1::value_type | distance (const SharedNormalSigned distance_type, const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2, Point< typename LineSegmentType1::value_type > &closest_point1, Point< typename LineSegmentType1::value_type > &closest_point2, typename LineSegmentType1::value_type &arch_length1, typename LineSegmentType1::value_type &arch_length2, mundy::Vector3< typename LineSegmentType1::value_type > &sep) |
| | Compute the shared normal signed separation distance between two line segments.
|
| template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2> |
| LineSegmentType1::value_type | distance (const Euclidean distance_type, const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2, Point< typename LineSegmentType1::value_type > &closest_point1, Point< typename LineSegmentType1::value_type > &closest_point2, typename LineSegmentType1::value_type &arch_length1, typename LineSegmentType1::value_type &arch_length2, mundy::Vector3< typename LineSegmentType1::value_type > &sep) |
| | Compute the euclidean distance between two line segments.
|
| template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType> |
| LineSegmentType::value_type | distance (const LineSegmentType &line_segment, const SphereType &sphere) |
| | Compute the distance between a line segment and a sphere.
|
| template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType> |
| LineSegmentType::value_type | distance (const SharedNormalSigned distance_type, const LineSegmentType &line_segment, const SphereType &sphere) |
| | Compute the shared normal signed separation distance between a line segment and a sphere.
|
| template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType> |
| LineSegmentType::value_type | distance (const LineSegmentType &line_segment, const SphereType &sphere, Point< typename LineSegmentType::value_type > &closest_point, typename LineSegmentType::value_type &arch_length, mundy::Vector3< typename LineSegmentType::value_type > &sep) |
| | Compute the distance between a line segment and a sphere.
|
| template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType> |
| LineSegmentType::value_type | distance (const SharedNormalSigned distance_type, const LineSegmentType &line_segment, const SphereType &sphere, Point< typename LineSegmentType::value_type > &closest_point, typename LineSegmentType::value_type &arch_length, mundy::Vector3< typename LineSegmentType::value_type > &sep) |
| | Compute the shared normal signed separation distance between a line segment and a sphere.
|
| template<ValidLineType LineType, ValidSphereType SphereType> |
| LineType::value_type | distance (const LineType &line, const SphereType &sphere) |
| | Compute the distance between a line and a sphere.
|
| template<ValidLineType LineType, ValidSphereType SphereType> |
| LineType::value_type | distance (const SharedNormalSigned distance_type, const LineType &line, const SphereType &sphere) |
| | Compute the shared normal signed separation distance between a line and a sphere.
|
| template<ValidLineType LineType, ValidSphereType SphereType> |
| LineType::value_type | distance (const LineType &line, const SphereType &sphere, Point< typename LineType::value_type > &closest_point, typename LineType::value_type &arch_length, mundy::Vector3< typename LineType::value_type > &sep) |
| | Compute the distance between a line and a sphere.
|
| template<ValidLineType LineType, ValidSphereType SphereType> |
| LineType::value_type | distance (const SharedNormalSigned distance_type, const LineType &line, const SphereType &sphere, Point< typename LineType::value_type > &closest_point, typename LineType::value_type &arch_length, mundy::Vector3< typename LineType::value_type > &sep) |
| | Compute the shared normal signed separation distance between a line and a sphere.
|
| template<ValidPointType PointType, ValidEllipsoidType EllipsoidType> |
| PointType::value_type | distance (const PointType &point, const EllipsoidType &ellipsoid) |
| template<ValidPointType PointType, ValidEllipsoidType EllipsoidType> |
| PointType::value_type | distance (const SharedNormalSigned distance_type, const PointType &point, const EllipsoidType &ellipsoid) |
| template<ValidPointType PointType, ValidEllipsoidType EllipsoidType> |
| PointType::value_type | distance (const SharedNormalSigned distance_type, const PointType &point, const EllipsoidType &ellipsoid, Point< typename PointType::value_type > &closest_point, mundy::Vector3< typename PointType::value_type > &ellipsoid_normal) |
| template<ValidPointType PointType, ValidLineType LineType> |
| PointType::value_type | distance (const PointType &point, const LineType &line) |
| | Compute the shared normal signed separation distance between a point and a line.
|
| template<ValidPointType PointType, ValidLineType LineType> |
| PointType::value_type | distance (const SharedNormalSigned distance_type, const PointType &point, const LineType &line) |
| | Compute the shared normal signed separation distance between a point and a line.
|
| template<ValidPointType PointType, ValidLineType LineType> |
| PointType::value_type | distance (const PointType &point, const LineType &line, Point< typename PointType::value_type > &closest_point, typename PointType::value_type &arch_length, mundy::Vector3< typename PointType::value_type > &sep) |
| | Compute the euclidean distance between a point and a line.
|
| template<ValidPointType PointType, ValidLineType LineType> |
| PointType::value_type | distance (const SharedNormalSigned distance_type, const PointType &point, const LineType &line, Point< typename PointType::value_type > &closest_point, typename PointType::value_type &arch_length, mundy::Vector3< typename PointType::value_type > &sep) |
| | Compute the shared normal signed separation distance between a point and a line.
|
| template<ValidPointType PointType, ValidLineSegmentType LineSegmentType> |
| PointType::value_type | distance (const PointType &point, const LineSegmentType &line_segment) |
| | Compute the shared normal signed separation distance between a point and a line segment.
|
| template<ValidPointType PointType, ValidLineSegmentType LineSegmentType> |
| PointType::value_type | distance (const SharedNormalSigned distance_type, const PointType &point, const LineSegmentType &line_segment) |
| | Compute the shared normal signed separation distance between a point and a line segment.
|
| template<ValidPointType PointType, ValidLineSegmentType LineSegmentType> |
| PointType::value_type | distance (const PointType &point, const LineSegmentType &line_segment, Point< typename PointType::value_type > &closest_point, typename PointType::value_type &arch_length, mundy::Vector3< typename PointType::value_type > &sep) |
| | Compute the euclidean distance between a point and a line segment.
|
| template<ValidPointType PointType, ValidLineSegmentType LineSegmentType> |
| PointType::value_type | distance (const SharedNormalSigned distance_type, const PointType &point, const LineSegmentType &line_segment, Point< typename PointType::value_type > &closest_point, typename PointType::value_type &arch_length, mundy::Vector3< typename PointType::value_type > &sep) |
| | Compute the shared normal signed separation distance between a point and a line segment.
|
| template<ValidPointType PointType1, ValidPointType PointType2> |
| PointType1::value_type | distance (const SharedNormalSigned distance_type, const PointType1 &point1, const PointType2 &point2) |
| | Compute the shared normal signed separation distance between two points.
|
| template<ValidPointType PointType1, ValidPointType PointType2> |
| PointType1::value_type | distance (const SharedNormalSigned distance_type, const PointType1 &point1, const PointType2 &point2, mundy::Vector3< typename PointType1::value_type > &sep) |
| | Compute the shared normal signed separation distance between two points.
|
| template<ValidPointType PointType1, ValidPointType PointType2> |
| PointType1::value_type | distance (const Euclidean distance_type, const PointType1 &point1, const PointType2 &point2) |
| | Compute the euclidean distance between two points.
|
| template<ValidPointType PointType1, ValidPointType PointType2> |
| PointType1::value_type | distance (const Euclidean distance_type, const PointType1 &point1, const PointType2 &point2, mundy::Vector3< typename PointType1::value_type > &sep) |
| | Compute the euclidean distance between two points.
|
| template<ValidPointType PointType1, ValidPointType PointType2> |
| PointType1::value_type | distance (const PointType1 &point1, const PointType2 &point2) |
| | Compute the shared normal signed separation distance between two points.
|
| template<ValidPointType PointType1, ValidPointType PointType2> |
| PointType1::value_type | distance (const PointType1 &point1, const PointType2 &point2, mundy::Vector3< typename PointType1::value_type > &sep) |
| | Compute the euclidean distance between two points.
|
| template<ValidPointType PointType, ValidSphereType SphereType> |
| PointType::value_type | distance (const PointType &point, const SphereType &sphere) |
| | Compute the shared normal signed separation distance between a point and a sphere.
|
| template<ValidPointType PointType, ValidSphereType SphereType> |
| PointType::value_type | distance (const SharedNormalSigned distance_type, const PointType &point, const SphereType &sphere) |
| | Compute the shared normal signed separation distance between a point and a sphere.
|
| template<ValidPointType PointType, ValidSphereType SphereType> |
| PointType::value_type | distance (const PointType &point, const SphereType &sphere, mundy::Vector3< typename PointType::value_type > &sep) |
| | Compute the distance between a point and a sphere.
|
| template<ValidSphereType SphereType1, ValidSphereType SphereType2> |
| SphereType1::value_type | distance (const SphereType1 &sphere1, const SphereType2 &sphere2) |
| | Compute the shared normal signed separation distance between two spheres.
|
| template<ValidSphereType SphereType1, ValidSphereType SphereType2> |
| SphereType1::value_type | distance (const SharedNormalSigned distance_type, const SphereType1 &sphere1, const SphereType2 &sphere2) |
| | Compute the shared normal signed separation distance between two spheres.
|
| template<ValidSphereType SphereType1, ValidSphereType SphereType2> |
| SphereType1::value_type | distance (const SphereType1 &sphere1, const SphereType2 &sphere2, mundy::Vector3< typename SphereType1::value_type > &sep) |
| | Compute the distance between two spheres.
|
| template<unsigned PeriodicAxes = AXIS_XYZ, typename Scalar> |
| constexpr OrthorhombicMetric< PeriodicAxes, Scalar > | make_orthorhombic_metric (const Vector3< Scalar > &cell_widths) |
| | Orthorhombic metric from axis-aligned cell widths.
|
| template<unsigned PeriodicAxes = AXIS_XYZ, typename Scalar> |
| constexpr OrthorhombicMetric< PeriodicAxes, Scalar > | make_orthorhombic_metric (const Vector3< Scalar > &domain_min, const Vector3< Scalar > &domain_max) |
| | Orthorhombic metric from domain corners.
|
| template<unsigned PeriodicAxes = AXIS_XYZ, typename Scalar> |
| constexpr TriclinicMetric< PeriodicAxes, Scalar > | make_triclinic_metric (const Matrix3< Scalar > &h) |
| | Triclinic metric from a cell matrix.
|
| template<unsigned PeriodicAxes = AXIS_XYZ, typename Scalar> |
| constexpr TriclinicMetric< PeriodicAxes, Scalar > | make_triclinic_metric (const Vector3< Scalar > &cell_widths) |
| | Triclinic metric from axis-aligned cell widths (diagonal h).
|
| template<typename Object> |
| auto | reference_point (const Object &obj) |
| | Returns the canonical reference point for an object.
|
| template<typename Integer, typename Object, typename Metric> |
| auto | shift_image (const Object &obj, const Vector3< Integer > &lattice_vector, const Metric &metric) |
| | Translate an object by an integer number of lattice images.
|
| template<typename Object, typename Metric> |
| auto | wrap_rigid (const Object &obj, const Metric &metric) |
| | Translate an object so its reference point lies in the primary cell.
|
| template<typename Object, typename Metric> |
| void | wrap_rigid_inplace (Object &obj, const Metric &metric) |
| | In-place variant of wrap_rigid.
|
| template<FinitePrimitive Object, typename Metric> |
| auto | wrap_points (const Object &obj, const Metric &metric) |
| | Wrap each geometric point of an object independently into the primary cell.
|
| template<FinitePrimitive Object, typename Metric> |
| void | wrap_points_inplace (Object &obj, const Metric &metric) |
| | In-place variant of wrap_points.
|
| template<FinitePrimitive Object, ValidPointType PointT, typename Metric> |
| auto | unwrap_points_to_ref (const Object &obj, const Metric &metric, const PointT &ref_point) |
| | Move each point to the periodic image closest to ref_point.
|
| template<FinitePrimitive Object, ValidPointType PointT, typename Metric> |
| void | unwrap_points_to_ref_inplace (Object &obj, const Metric &metric, const PointT &ref_point) |
| | In-place variant of unwrap_points_to_ref.
|
| template<ValidPointType PointT, typename Metric> |
| Vector3< int > | image_index (const PointT &p, const Metric &metric) |
| | The integer periodic image of a point: the lattice cell k such that the point lies in cell k.
|
| template<typename Integer, typename Metric> |
| Vector3< typename Metric::value_type > | lattice_displacement (const Vector3< Integer > &n, const Metric &metric) |
| | The Cartesian displacement of an integer lattice combination n, i.e. Σ nᵢ·aᵢ over the lattice vectors.
|
| template<ValidAABBType T1, ValidAABBType T2> |
| constexpr bool | is_close (const T1 &a1, const T2 &a2, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a tolerance).
|
| template<ValidAABBType T1, ValidAABBType T2> |
| constexpr bool | is_approx_close (const T1 &a1, const T2 &a2, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a relaxed tolerance).
|
| template<ValidAABBType AABBType> |
| std::ostream & | operator<< (std::ostream &os, const AABBType &aabb) |
| template<ValidAABBType AABBType1, ValidAABBType AABBType2> |
| constexpr bool | intersects (const AABBType1 &aabb1, const AABBType2 &aabb2) |
| | Check if two AABBs intersect.
|
| template<ValidAABBType T, typename Functor> |
| void | for_each_point (const T &aabb, Functor &&f) |
| | Visit each geometric point of an AABB (min_corner, max_corner).
|
| template<ValidAABBType T, typename Functor> |
| void | for_each_point_mutable (T &aabb, Functor &&f) |
| | Visit and mutate each geometric point of an AABB.
|
| template<ValidCircle3DType T, typename Functor> |
| void | for_each_point (const T &c, Functor &&f) |
| | Visit the geometric point of a Circle3D (its center).
|
| template<ValidCircle3DType T, typename Functor> |
| void | for_each_point_mutable (T &c, Functor &&f) |
| | Visit and mutate the geometric point of a Circle3D.
|
| template<ValidEllipsoidType T, typename Functor> |
| void | for_each_point (const T &e, Functor &&f) |
| | Visit the geometric point of an Ellipsoid (its center).
|
| template<ValidEllipsoidType T, typename Functor> |
| void | for_each_point_mutable (T &e, Functor &&f) |
| | Visit and mutate the geometric point of an Ellipsoid.
|
| template<ValidLineType T, typename Functor> |
| void | for_each_point (const T &l, Functor &&f) |
| | Visit the geometric anchor point of a Line (its center). The direction is a vector, not a position, and is not visited.
|
| template<ValidLineType T, typename Functor> |
| void | for_each_point_mutable (T &l, Functor &&f) |
| | Visit and mutate the geometric anchor point of a Line. The direction is a vector, not a position, and is not mutated.
|
| template<ValidLineSegmentType T, typename Functor> |
| void | for_each_point (const T &ls, Functor &&f) |
| | Visit each geometric point of a LineSegment (start, end).
|
| template<ValidLineSegmentType T, typename Functor> |
| void | for_each_point_mutable (T &ls, Functor &&f) |
| | Visit and mutate each geometric point of a LineSegment.
|
| template<ValidOBBType T, typename Functor> |
| void | for_each_point (const T &obb, Functor &&f) |
| template<ValidOBBType T, typename Functor> |
| void | for_each_point_mutable (T &obb, Functor &&f) |
| template<ValidPointType PointT, typename Functor> |
| void | for_each_point (const PointT &pt, Functor &&f) |
| | Visit each geometric point of a Point (the point itself).
|
| template<ValidPointType PointT, typename Functor> |
| void | for_each_point_mutable (PointT &pt, Functor &&f) |
| | Visit and mutate each geometric point of a Point.
|
| template<ValidRingType T, typename Functor> |
| void | for_each_point (const T &r, Functor &&f) |
| | Visit the geometric point of a Ring (its center).
|
| template<ValidRingType T, typename Functor> |
| void | for_each_point_mutable (T &r, Functor &&f) |
| | Visit and mutate the geometric point of a Ring.
|
| template<ValidSphereType T, typename Functor> |
| void | for_each_point (const T &s, Functor &&f) |
| | Visit the geometric point of a Sphere (its center).
|
| template<ValidSphereType T, typename Functor> |
| void | for_each_point_mutable (T &s, Functor &&f) |
| | Visit and mutate the geometric point of a Sphere.
|
| template<ValidSpherocylinderType T, typename Functor> |
| void | for_each_point (const T &sc, Functor &&f) |
| | Visit the geometric point of a Spherocylinder (its center).
|
| template<ValidSpherocylinderType T, typename Functor> |
| void | for_each_point_mutable (T &sc, Functor &&f) |
| | Visit and mutate the geometric point of a Spherocylinder.
|
| template<ValidSpherocylinderSegmentType T, typename Functor> |
| void | for_each_point (const T &scs, Functor &&f) |
| | Visit each geometric point of a SpherocylinderSegment (start, end).
|
| template<ValidSpherocylinderSegmentType T, typename Functor> |
| void | for_each_point_mutable (T &scs, Functor &&f) |
| | Visit and mutate each geometric point of a SpherocylinderSegment.
|
| template<ValidVSegmentType T, typename Functor> |
| void | for_each_point (const T &vs, Functor &&f) |
| | Visit each geometric point of a VSegment (start, middle, end).
|
| template<ValidVSegmentType T, typename Functor> |
| void | for_each_point_mutable (T &vs, Functor &&f) |
| | Visit and mutate each geometric point of a VSegment.
|
| template<ValidCircle3DType T1, ValidCircle3DType T2> |
| constexpr bool | is_close (const T1 &c1, const T2 &c2, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a tolerance).
|
| template<ValidCircle3DType T1, ValidCircle3DType T2> |
| constexpr bool | is_approx_close (const T1 &c1, const T2 &c2, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a relaxed tolerance).
|
| template<ValidCircle3DType Circle3DType> |
| std::ostream & | operator<< (std::ostream &os, const Circle3DType &circle3d) |
| | OStream operator.
|
| template<ValidEllipsoidType T1, ValidEllipsoidType T2> |
| constexpr bool | is_close (const T1 &e1, const T2 &e2, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a tolerance).
|
| template<ValidEllipsoidType T1, ValidEllipsoidType T2> |
| constexpr bool | is_approx_close (const T1 &e1, const T2 &e2, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a relaxed tolerance).
|
| template<ValidEllipsoidType EllipsoidType> |
| std::ostream & | operator<< (std::ostream &os, const EllipsoidType &ellipsoid) |
| | OStream operator.
|
| template<ValidEllipsoidType EllipsoidType> |
| constexpr Point< typename EllipsoidType::value_type > | map_body_frame_normal_to_ellipsoid (const Vector3< typename EllipsoidType::value_type > &body_frame_nhat, const EllipsoidType &ellipsoid) |
| template<typename Scalar, ValidAccessor< Scalar > Accessor1, ValidEllipsoidType EllipsoidType> |
| constexpr Vector3< Scalar > | map_surface_normal_to_foot_point_on_ellipsoid (const AVector3< Scalar, Accessor1 > &lab_frame_ellipsoid_nhat, const EllipsoidType &ellipsoid) |
| template<ValidSphereType T1, ValidSphereType T2> |
| constexpr bool | is_close (const T1 &s1, const T2 &s2, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a tolerance).
|
| template<ValidSphereType T1, ValidSphereType T2> |
| constexpr bool | is_approx_close (const T1 &s1, const T2 &s2, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a relaxed tolerance).
|
| template<ValidSphereType SphereType> |
| std::ostream & | operator<< (std::ostream &os, const SphereType &sphere) |
| | OStream operator.
|
| template<ValidLineType T1, ValidLineType T2> |
| constexpr bool | is_close (const T1 &l1, const T2 &l2, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a tolerance).
|
| template<ValidLineType T1, ValidLineType T2> |
| constexpr bool | is_approx_close (const T1 &l1, const T2 &l2, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a relaxed tolerance).
|
| template<ValidLineType LineType> |
| std::ostream & | operator<< (std::ostream &os, const LineType &line) |
| | Output stream operator.
|
| template<ValidLineSegmentType T1, ValidLineSegmentType T2> |
| constexpr bool | is_close (const T1 &ls1, const T2 &ls2, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a tolerance).
|
| template<ValidLineSegmentType T1, ValidLineSegmentType T2> |
| constexpr bool | is_approx_close (const T1 &ls1, const T2 &ls2, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a relaxed tolerance).
|
| template<ValidLineSegmentType LineSegmentType> |
| std::ostream & | operator<< (std::ostream &os, const LineSegmentType &line_segment) |
| | OStream operator.
|
| template<ValidOBBType T1, ValidOBBType T2> |
| constexpr bool | is_close (const T1 &a, const T2 &b, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| template<ValidOBBType T1, ValidOBBType T2> |
| constexpr bool | is_approx_close (const T1 &a, const T2 &b, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| template<ValidOBBType OBBType1, ValidOBBType OBBType2> |
| constexpr bool | intersects (const OBBType1 &a, const OBBType2 &b) |
| | Test whether two OBBs overlap using the Separating Axis Theorem (SAT).
|
| template<ValidOBBType T> |
| std::ostream & | operator<< (std::ostream &os, const T &obb) |
| template<ValidRingType T1, ValidRingType T2> |
| constexpr bool | is_close (const T1 &r1, const T2 &r2, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a tolerance).
|
| template<ValidRingType T1, ValidRingType T2> |
| constexpr bool | is_approx_close (const T1 &r1, const T2 &r2, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a relaxed tolerance).
|
| template<ValidRingType RingType> |
| std::ostream & | operator<< (std::ostream &os, const RingType &ring) |
| | OStream operator.
|
| template<ValidSpherocylinderType T1, ValidSpherocylinderType T2> |
| constexpr bool | is_close (const T1 &sc1, const T2 &sc2, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a tolerance).
|
| template<ValidSpherocylinderType T1, ValidSpherocylinderType T2> |
| constexpr bool | is_approx_close (const T1 &sc1, const T2 &sc2, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a relaxed tolerance).
|
| template<ValidSpherocylinderType SpherocylinderType> |
| std::ostream & | operator<< (std::ostream &os, const SpherocylinderType &spherocylinder) |
| | OStream operator.
|
| template<ValidSpherocylinderSegmentType T1, ValidSpherocylinderSegmentType T2> |
| constexpr bool | is_close (const T1 &scs1, const T2 &scs2, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a tolerance).
|
| template<ValidSpherocylinderSegmentType T1, ValidSpherocylinderSegmentType T2> |
| constexpr bool | is_approx_close (const T1 &scs1, const T2 &scs2, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a relaxed tolerance).
|
| template<ValidSpherocylinderSegmentType SpherocylinderSegmentType> |
| std::ostream & | operator<< (std::ostream &os, const SpherocylinderSegmentType &spherocylinder_segment) |
| | OStream operator.
|
| template<ValidVSegmentType T1, ValidVSegmentType T2> |
| constexpr bool | is_close (const T1 &vs1, const T2 &vs2, typename T1::value_type tol=get_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a tolerance).
|
| template<ValidVSegmentType T1, ValidVSegmentType T2> |
| constexpr bool | is_approx_close (const T1 &vs1, const T2 &vs2, typename T1::value_type tol=get_relaxed_comparison_tolerance< typename T1::value_type, typename T2::value_type >()) |
| | Element-wise approximate equality (within a relaxed tolerance).
|
| template<ValidVSegmentType VSegmentType> |
| std::ostream & | operator<< (std::ostream &os, const VSegmentType &v_segment) |
| | OStream operator.
|
| template<ValidPointType PointT, ValidVector3Type Vector3T> |
| auto | translate (const PointT &point, const Vector3T &disp) |
| | Translate a point by a given displacement vector.
|
| template<ValidPointType PointT, ValidVector3Type Vector3T> |
| void | translate_inplace (PointT &point, const Vector3T &disp) |
| | Translate a point by a given displacement vector (inplace).
|
| template<ValidLineType LineT, ValidVector3Type Vector3T> |
| auto | translate (const LineT &line, const Vector3T &disp) |
| | Translate a line by a given displacement vector.
|
| template<ValidLineType LineT, ValidVector3Type Vector3T> |
| void | translate_inplace (LineT &line, const Vector3T &disp) |
| | Translate a line by a given displacement vector (inplace).
|
| template<ValidLineSegmentType LineSegmentT, ValidVector3Type Vector3T> |
| auto | translate (const LineSegmentT &line_segment, const Vector3T &disp) |
| | Translate a line segment by a given displacement vector.
|
| template<ValidLineSegmentType LineSegmentT, ValidVector3Type Vector3T> |
| void | translate_inplace (LineSegmentT &line_segment, const Vector3T &disp) |
| | Translate a line segment by a given displacement vector (inplace).
|
| template<ValidVSegmentType VSegmentT, ValidVector3Type Vector3T> |
| auto | translate (const VSegmentT &v_segment, const Vector3T &disp) |
| | Translate a v-segment by a given displacement vector.
|
| template<ValidVSegmentType VSegmentT, ValidVector3Type Vector3T> |
| void | translate_inplace (VSegmentT &v_segment, const Vector3T &disp) |
| | Translate a v-segment by a given displacement vector (inplace).
|
| template<ValidCircle3DType Circle3DT, ValidVector3Type Vector3T> |
| auto | translate (const Circle3DT &circle, const Vector3T &disp) |
| | Translate a circle3D by a given displacement vector.
|
| template<ValidCircle3DType Circle3DT, ValidVector3Type Vector3T> |
| void | translate_inplace (Circle3DT &circle, const Vector3T &disp) |
| | Translate a circle3D by a given displacement vector (inplace).
|
| template<ValidAABBType AABBT, ValidVector3Type Vector3T> |
| auto | translate (const AABBT &aabb, const Vector3T &disp) |
| | Translate an AABB by a given displacement vector.
|
| template<ValidAABBType AABBT, ValidVector3Type Vector3T> |
| void | translate_inplace (AABBT &aabb, const Vector3T &disp) |
| | Translate an AABB by a given displacement vector (inplace).
|
| template<ValidSphereType SphereT, ValidVector3Type Vector3T> |
| auto | translate (const SphereT &sphere, const Vector3T &disp) |
| | Translate a sphere by a given displacement vector.
|
| template<ValidSphereType SphereT, ValidVector3Type Vector3T> |
| void | translate_inplace (SphereT &sphere, const Vector3T &disp) |
| | Translate a sphere by a given displacement vector (inplace).
|
| template<ValidSpherocylinderType SpherocylinderT, ValidVector3Type Vector3T> |
| auto | translate (const SpherocylinderT &spherocylinder, const Vector3T &disp) |
| | Translate a spherocylinder by a given displacement vector.
|
| template<ValidSpherocylinderType SpherocylinderT, ValidVector3Type Vector3T> |
| void | translate_inplace (SpherocylinderT &spherocylinder, const Vector3T &disp) |
| | Translate a spherocylinder by a given displacement vector (inplace).
|
| template<ValidSpherocylinderSegmentType SpherocylinderSegmentT, ValidVector3Type Vector3T> |
| auto | translate (const SpherocylinderSegmentT &spherocylinder_segment, const Vector3T &disp) |
| | Translate a spherocylinder segment by a given displacement vector.
|
| template<ValidSpherocylinderSegmentType SpherocylinderSegmentT, ValidVector3Type Vector3T> |
| void | translate_inplace (SpherocylinderSegmentT &spherocylinder_segment, const Vector3T &disp) |
| | Translate a spherocylinder segment by a given displacement vector (inplace).
|
| template<ValidRingType RingT, ValidVector3Type Vector3T> |
| auto | translate (const RingT &ring, const Vector3T &disp) |
| | Translate a ring by a given displacement vector.
|
| template<ValidRingType RingT, ValidVector3Type Vector3T> |
| void | translate_inplace (RingT &ring, const Vector3T &disp) |
| | Translate a ring by a given displacement vector (inplace).
|
| template<ValidEllipsoidType EllipsoidT, ValidVector3Type Vector3T> |
| auto | translate (const EllipsoidT &ellipsoid, const Vector3T &disp) |
| | Translate an ellipsoid by a given displacement vector.
|
| template<ValidEllipsoidType EllipsoidT, ValidVector3Type Vector3T> |
| void | translate_inplace (EllipsoidT &ellipsoid, const Vector3T &disp) |
| | Translate an ellipsoid by a given displacement vector (inplace).
|
| template<ValidPointType PointT, ValidQuaternionType QuaternionT> |
| Point< typename QuaternionT::value_type > | rotate (const PointT &point, const QuaternionT &q) |
| | Rotate a point about the origin by a given quaternion.
|
| template<ValidPointType PointT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (PointT &point, const QuaternionT &q) |
| | Rotate a point about the origin by a given quaternion (inplace).
|
| template<ValidLineType LineT, ValidQuaternionType QuaternionT> |
| Line< typename QuaternionT::value_type > | rotate (const LineT &line, const QuaternionT &q) |
| | Rotate a line about the origin by a given quaternion.
|
| template<ValidLineType LineT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (LineT &line, const QuaternionT &q) |
| | Rotate a line about the origin by a given quaternion (inplace).
|
| template<ValidLineSegmentType LineSegmentT, ValidQuaternionType QuaternionT> |
| LineSegment< typename QuaternionT::value_type > | rotate (const LineSegmentT &line_segment, const QuaternionT &q) |
| | Rotate a line segment about the origin by a given quaternion.
|
| template<ValidLineSegmentType LineSegmentT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (LineSegmentT &line_segment, const QuaternionT &q) |
| | Rotate a line segment about the origin by a given quaternion (inplace).
|
| template<ValidVSegmentType VSegmentT, ValidQuaternionType QuaternionT> |
| VSegment< typename QuaternionT::value_type > | rotate (const VSegmentT &v_segment, const QuaternionT &q) |
| | Rotate a v-segment about the origin by a given quaternion.
|
| template<ValidVSegmentType VSegmentT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (VSegmentT &v_segment, const QuaternionT &q) |
| | Rotate a v-segment about the origin by a given quaternion (inplace).
|
| template<ValidCircle3DType Circle3DT, ValidQuaternionType QuaternionT> |
| Circle3D< typename QuaternionT::value_type > | rotate (const Circle3DT &circle, const QuaternionT &q) |
| | Rotate a circle3D about the origin by a given quaternion.
|
| template<ValidCircle3DType Circle3DT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (Circle3DT &circle, const QuaternionT &q) |
| | Rotate a circle3D about the origin by a given quaternion (inplace).
|
| template<ValidAABBType AABBT, ValidQuaternionType QuaternionT> |
| AABB< typename QuaternionT::value_type > | rotate (const AABBT &aabb, const QuaternionT &q) |
| | Rotate an AABB about the origin by a given quaternion.
|
| template<ValidAABBType AABBT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (AABBT &aabb, const QuaternionT &q) |
| | Rotate an AABB about the origin by a given quaternion (inplace).
|
| template<ValidSphereType SphereT, ValidQuaternionType QuaternionT> |
| Sphere< typename QuaternionT::value_type > | rotate (const SphereT &sphere, const QuaternionT &q) |
| | Rotate a sphere about the origin by a given quaternion.
|
| template<ValidSphereType SphereT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (SphereT &sphere, const QuaternionT &q) |
| | Rotate a sphere about the origin by a given quaternion (inplace).
|
| template<ValidSpherocylinderType SpherocylinderT, ValidQuaternionType QuaternionT> |
| Spherocylinder< typename QuaternionT::value_type > | rotate (const SpherocylinderT &spherocylinder, const QuaternionT &q) |
| | Rotate a spherocylinder about the origin by a given quaternion.
|
| template<ValidSpherocylinderType SpherocylinderT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (SpherocylinderT &spherocylinder, const QuaternionT &q) |
| | Rotate a spherocylinder about the origin by a given quaternion (inplace).
|
| template<ValidSpherocylinderSegmentType SpherocylinderSegmentT, ValidQuaternionType QuaternionT> |
| SpherocylinderSegment< typename QuaternionT::value_type > | rotate (const SpherocylinderSegmentT &spherocylinder_segment, const QuaternionT &q) |
| | Rotate a spherocylinder segment about the origin by a given quaternion.
|
| template<ValidSpherocylinderSegmentType SpherocylinderSegmentT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (SpherocylinderSegmentT &spherocylinder_segment, const QuaternionT &q) |
| | Rotate a spherocylinder segment about the origin by a given quaternion (inplace).
|
| template<ValidRingType RingT, ValidQuaternionType QuaternionT> |
| Ring< typename QuaternionT::value_type > | rotate (const RingT &ring, const QuaternionT &q) |
| | Rotate a ring about the origin by a given quaternion.
|
| template<ValidRingType RingT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (RingT &ring, const QuaternionT &q) |
| | Rotate a ring about the origin by a given quaternion (inplace).
|
| template<ValidEllipsoidType EllipsoidT, ValidQuaternionType QuaternionT> |
| Ellipsoid< typename QuaternionT::value_type > | rotate (const EllipsoidT &ellipsoid, const QuaternionT &q) |
| | Rotate an ellipsoid about the origin by a given quaternion.
|
| template<ValidEllipsoidType EllipsoidT, ValidQuaternionType QuaternionT> |
| void | rotate_inplace (EllipsoidT &ellipsoid, const QuaternionT &q) |
| | Rotate an ellipsoid about the origin by a given quaternion (inplace).
|