mirror of
https://github.com/BlackMATov/vmath.hpp.git
synced 2025-12-14 20:31:25 +07:00
remove vec4 rotation by quaternion
This commit is contained in:
@@ -838,31 +838,6 @@ namespace vmath_hpp
|
|||||||
return v * qrotate(angle, axis);
|
return v * qrotate(angle, axis);
|
||||||
}
|
}
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
[[nodiscard]] vec<T, 4> rotate_x(const vec<T, 4>& v, T angle) {
|
|
||||||
return v * qrotate(angle, unit3_x<T>);
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
[[nodiscard]] vec<T, 4> rotate_y(const vec<T, 4>& v, T angle) {
|
|
||||||
return v * qrotate(angle, unit3_y<T>);
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
[[nodiscard]] vec<T, 4> rotate_z(const vec<T, 4>& v, T angle) {
|
|
||||||
return v * qrotate(angle, unit3_z<T>);
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
[[nodiscard]] vec<T, 4> rotate(const vec<T, 4>& v, const qua<T>& q) {
|
|
||||||
return v * q;
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
[[nodiscard]] vec<T, 4> rotate(const vec<T, 4>& v, T angle, const vec<T, 3>& axis) {
|
|
||||||
return v * qrotate(angle, axis);
|
|
||||||
}
|
|
||||||
|
|
||||||
// project
|
// project
|
||||||
|
|
||||||
template < typename T, std::size_t Size >
|
template < typename T, std::size_t Size >
|
||||||
|
|||||||
@@ -83,11 +83,6 @@ namespace vmath_hpp
|
|||||||
return xs + qv2 * ys.s + cross(ys.v, qv2);
|
return xs + qv2 * ys.s + cross(ys.v, qv2);
|
||||||
}
|
}
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
[[nodiscard]] constexpr vec<T, 4> operator*(const vec<T, 4>& xs, const qua<T>& ys) {
|
|
||||||
return {vec<T, 3>{xs} * ys, xs.w};
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename T >
|
template < typename T >
|
||||||
[[nodiscard]] constexpr qua<T> operator*(const qua<T>& xs, const qua<T>& ys) {
|
[[nodiscard]] constexpr qua<T> operator*(const qua<T>& xs, const qua<T>& ys) {
|
||||||
/// REFERENCE:
|
/// REFERENCE:
|
||||||
@@ -110,11 +105,6 @@ namespace vmath_hpp
|
|||||||
return (xs = (xs * ys));
|
return (xs = (xs * ys));
|
||||||
}
|
}
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
constexpr vec<T, 4>& operator*=(vec<T, 4>& xs, const qua<T>& ys) {
|
|
||||||
return (xs = (xs * ys));
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename T >
|
template < typename T >
|
||||||
constexpr qua<T>& operator*=(qua<T>& xs, const qua<T>& ys) {
|
constexpr qua<T>& operator*=(qua<T>& xs, const qua<T>& ys) {
|
||||||
return (xs = (xs * ys));
|
return (xs = (xs * ys));
|
||||||
|
|||||||
@@ -324,13 +324,6 @@ TEST_CASE("vmath/ext/vector_transform") {
|
|||||||
|
|
||||||
REQUIRE(rotate(float3(1.5f,0.f,0.f), qrotate_z(radians(90.f))) == uapprox3(0.f,1.5f,0.f));
|
REQUIRE(rotate(float3(1.5f,0.f,0.f), qrotate_z(radians(90.f))) == uapprox3(0.f,1.5f,0.f));
|
||||||
REQUIRE(rotate(float3(1.5f,0.f,0.f), radians(90.f), float3(0,0,1)) == uapprox3(0.f,1.5f,0.f));
|
REQUIRE(rotate(float3(1.5f,0.f,0.f), radians(90.f), float3(0,0,1)) == uapprox3(0.f,1.5f,0.f));
|
||||||
|
|
||||||
REQUIRE(rotate_x(float4(0.f,1.5f,0.f,2.f), radians(90.f)) == uapprox4(0.f,0.f,1.5f,2.f));
|
|
||||||
REQUIRE(rotate_y(float4(0.f,0.f,1.5f,2.f), radians(90.f)) == uapprox4(1.5f,0.f,0.f,2.f));
|
|
||||||
REQUIRE(rotate_z(float4(1.5f,0.f,0.f,2.f), radians(90.f)) == uapprox4(0.f,1.5f,0.f,2.f));
|
|
||||||
|
|
||||||
REQUIRE(rotate(float4(1.5f,0.f,0.f,2.f), qrotate_z(radians(90.f))) == uapprox4(0.f,1.5f,0.f,2.f));
|
|
||||||
REQUIRE(rotate(float4(1.5f,0.f,0.f,2.f), radians(90.f), float3(0,0,1)) == uapprox4(0.f,1.5f,0.f,2.f));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SUBCASE("project") {
|
SUBCASE("project") {
|
||||||
|
|||||||
@@ -58,17 +58,9 @@ TEST_CASE("vmath/qua_fun") {
|
|||||||
REQUIRE(v == uapprox3(0.f,1.f,0.f));
|
REQUIRE(v == uapprox3(0.f,1.f,0.f));
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
float4 v{1,0,0,2};
|
|
||||||
REQUIRE(&v == &(v *= fqua{0,0,0.7071067812f,0.7071067812f}));
|
|
||||||
REQUIRE(v == uapprox4(0.f,1.f,0.f,2.f));
|
|
||||||
}
|
|
||||||
|
|
||||||
STATIC_REQUIRE(fqua{} * fqua{} == fqua{});
|
STATIC_REQUIRE(fqua{} * fqua{} == fqua{});
|
||||||
STATIC_REQUIRE(float3{1,2,3} * fqua{} == uapprox3(1.f,2.f,3.f));
|
STATIC_REQUIRE(float3{1,2,3} * fqua{} == uapprox3(1.f,2.f,3.f));
|
||||||
STATIC_REQUIRE(float4{1,2,3,4} * fqua{} == uapprox4(1.f,2.f,3.f,4.f));
|
|
||||||
STATIC_REQUIRE(float3{1,0,0} * fqua{0,0,0.7071067812f,0.7071067812f} == uapprox3(0.f,1.f,0.f));
|
STATIC_REQUIRE(float3{1,0,0} * fqua{0,0,0.7071067812f,0.7071067812f} == uapprox3(0.f,1.f,0.f));
|
||||||
STATIC_REQUIRE(float4{1,0,0,2} * fqua{0,0,0.7071067812f,0.7071067812f} == uapprox4(0.f,1.f,0.f,2.f));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SUBCASE("Common Functions") {
|
SUBCASE("Common Functions") {
|
||||||
|
|||||||
Reference in New Issue
Block a user