PhysicsBasedAnimationToolkit 0.0.10
Cross-platform C++20 library of algorithms and data structures commonly used in computer graphics research on physically-based simulation.
Loading...
Searching...
No Matches
Concepts.h
Go to the documentation of this file.
1
10
11#ifndef PBAT_MATH_CONCEPTS_H
12#define PBAT_MATH_CONCEPTS_H
13
14#include <concepts>
15#include <pbat/Aliases.h>
17
18namespace pbat {
19namespace math {
20
26template <class Q>
27concept CQuadratureRule = requires(Q q)
28{
29 requires std::integral<decltype(Q::kDims)>;
30 requires common::CContiguousArithmeticRange<decltype(q.points)>;
31 requires common::CContiguousArithmeticRange<decltype(q.weights)>;
32 {
33 q.points.size()
34 } -> std::convertible_to<int>;
35 {
36 q.weights.size()
37 } -> std::convertible_to<int>;
38};
39
45template <class Q>
46concept CFixedPointQuadratureRule = requires(Q q)
47{
48 requires CQuadratureRule<Q>;
49 requires std::is_integral_v<decltype(Q::kPoints)>;
50 {q.points.size() / q.weights.size() == Q::kDims};
51 {q.weights.size() == Q::kPoints};
52};
53
59template <class Q>
60concept CPolynomialQuadratureRule = requires(Q q)
61{
62 requires CQuadratureRule<Q>;
63 requires std::is_integral_v<decltype(Q::kOrder)>;
64};
65
71template <class Q>
74
75} // namespace math
76} // namespace pbat
77
78#endif // PBAT_MATH_CONCEPTS_H
Concepts for common types.
Contiguous range of arithmetic types.
Definition Concepts.h:91
Definition Concepts.h:27
Math related functionality.
Definition Concepts.h:19
The main namespace of the library.
Definition Aliases.h:15