24template<
typename T,
size_t N>
28 for (
size_t i = 0; i <
N; ++i)
30 ret[i] = (std::min)(a[i], b[i]);
39template<
typename T,
size_t N>
43 for (
size_t i = 0; i <
N; ++i)
45 ret[i] = (std::max)(a[i], b[i]);
53template<IsInteger T,
size_t N>
56 for (
size_t i = 0; i <
N; ++i)
60 else if (a[i] >= max[i])
65template<IsInteger T,
size_t N>
78template<
typename T,
size_t N>
81 for (
size_t i = 0; i <
N; ++i)
94template<IsReal T,
size_t N>
98 for (
size_t i = 0; i <
N; ++i)
100 ret[i] = std::lerp(a[i], b[i], t);
112template<
typename T,
size_t N, IsReal R>
116 for (
size_t i = 0; i <
N; ++i)
118 ret[i] = (
T)func(std::lerp((
R)a[i], (
R)b[i], t));
126template<
typename T,
size_t N>
130 for (
size_t i = 0; i <
N; ++i)
132 ret[i] = std::fmod(a[i], b[i]);
143template<
typename C0,
typename C1,
typename F>
144bool Yes(
const C0& container0,
const C1& container1,
F func)
146 if (container0.size() != container1.size())
148 auto iter0 = container0.
begin();
149 auto iter1 = container1.begin();
150 while (iter0 != container0.end())
152 if (!func(*iter0, *iter1))
166template<
typename C0,
typename C1>
169 tar.resize(src.size());
170 auto iter0 = src.begin();
171 auto iter1 = tar.begin();
172 while (iter0 != src.end())
184template<
typename C0,
typename C1>
185void Copy(C1& tar,
const C0& src)
187 std::size_t num = (std::min)(tar.size(), src.size());
188 auto iter0 = src.begin();
189 auto iter1 = tar.begin();
类似std::array,增加xyzw、wh等成员访问
Array< T, N > FMod(const Array< T, N > &a, const Array< T, N > &b)
浮点数求模
Array< T, N > Min(const Array< T, N > &a, const Array< T, N > &b)
取两者最小值为新元素
Array< T, N > Max(const Array< T, N > &a, const Array< T, N > &b)
取两者最大值为新元素
constexpr bool Less(const Array< T, N > &a, const Array< T, N > &b)
每个元素都小于返回真
void Clone(C1 &tar, const C0 &src)
克隆容器到另一个
Array< T, N > Lerp(const Array< T, N > &a, const Array< T, N > &b, T t)
线性插值
void Limit(Array< T, N > &a, const Array< T, N > &min, const Array< T, N > &max)
限制元素到 前闭后开区间(过大自动减1)
void Copy(C1 &tar, const C0 &src)
复制容器
bool Yes(const C0 &container0, const C1 &container1, F func)
判断两个容器 每个元素都满足条件