mirror of
https://github.com/BlackMATov/vmath.hpp.git
synced 2025-12-15 12:39:47 +07:00
pair sincos for vectors
This commit is contained in:
@@ -576,10 +576,15 @@ namespace vmath_hpp
|
||||
return map_join([](T x) { return atanh(x); }, xs);
|
||||
}
|
||||
|
||||
template < typename T, size_t Size >
|
||||
template < typename T, std::size_t Size >
|
||||
std::pair<vec<T, Size>, vec<T, Size>> sincos(const vec<T, Size>& xs) {
|
||||
return { sin(xs), cos(xs) };
|
||||
}
|
||||
|
||||
template < typename T, std::size_t Size >
|
||||
void sincos(const vec<T, Size>& xs, vec<T, Size>* ss, vec<T, Size>* cs) {
|
||||
*ss = map_join([](T x){ return sin(x); }, xs);
|
||||
*cs = map_join([](T x){ return cos(x); }, xs);
|
||||
*ss = sin(xs);
|
||||
*cs = cos(xs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -155,6 +155,9 @@ TEST_CASE("vmath/vec_fun") {
|
||||
sincos(float2(10.f,15.f), &out_ss, &out_cs);
|
||||
REQUIRE(out_ss == uapprox2(sin(10.f), sin(15.f)));
|
||||
REQUIRE(out_cs == uapprox2(cos(10.f), cos(15.f)));
|
||||
const auto [out_ss2, out_cs2] = sincos(float2(10.f,15.f));
|
||||
REQUIRE(out_ss2 == uapprox2(sin(10.f), sin(15.f)));
|
||||
REQUIRE(out_cs2 == uapprox2(cos(10.f), cos(15.f)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user