mirror of
https://github.com/BlackMATov/vmath.hpp.git
synced 2025-12-16 22:19:51 +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);
|
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) {
|
void sincos(const vec<T, Size>& xs, vec<T, Size>* ss, vec<T, Size>* cs) {
|
||||||
*ss = map_join([](T x){ return sin(x); }, xs);
|
*ss = sin(xs);
|
||||||
*cs = map_join([](T x){ return cos(x); }, xs);
|
*cs = cos(xs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -155,6 +155,9 @@ TEST_CASE("vmath/vec_fun") {
|
|||||||
sincos(float2(10.f,15.f), &out_ss, &out_cs);
|
sincos(float2(10.f,15.f), &out_ss, &out_cs);
|
||||||
REQUIRE(out_ss == uapprox2(sin(10.f), sin(15.f)));
|
REQUIRE(out_ss == uapprox2(sin(10.f), sin(15.f)));
|
||||||
REQUIRE(out_cs == uapprox2(cos(10.f), cos(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