Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2022-04-15 17:54:15 +0300
committerHans Goudey <h.goudey@me.com>2022-04-15 17:54:45 +0300
commit47d961a4b1c14b0cee2817de226ee356e711e146 (patch)
tree4c057b00b7eb82144e4acf12196b9bf33481e9a5 /source/blender/blenlib/tests/BLI_math_rotation_test.cc
parente96a809a68ef40225d5eddfd790644538e171a8d (diff)
Fix: Apply tilt in curves data-block normals calculation
The ported normal calculation from ceed37fc5cbb466a0 neglected to use the tilt attribute to rotate the normals around the tangents. This commit adds that behavior back, adding a new math header file to avoid duplicating the rotation function for normalized axes. Differential Revision: https://developer.blender.org/D14655
Diffstat (limited to 'source/blender/blenlib/tests/BLI_math_rotation_test.cc')
-rw-r--r--source/blender/blenlib/tests/BLI_math_rotation_test.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/blenlib/tests/BLI_math_rotation_test.cc b/source/blender/blenlib/tests/BLI_math_rotation_test.cc
index a10e441cfbe..a283118bea2 100644
--- a/source/blender/blenlib/tests/BLI_math_rotation_test.cc
+++ b/source/blender/blenlib/tests/BLI_math_rotation_test.cc
@@ -4,6 +4,8 @@
#include "BLI_math_base.h"
#include "BLI_math_rotation.h"
+#include "BLI_math_rotation.hh"
+#include "BLI_math_vector.hh"
#include <cmath>
@@ -147,3 +149,23 @@ TEST(math_rotation, quat_split_swing_and_twist_negative)
EXPECT_V4_NEAR(swing, expected_swing, FLT_EPSILON);
EXPECT_V4_NEAR(twist, expected_twist, FLT_EPSILON);
}
+
+namespace blender::math::tests {
+
+TEST(math_rotation, RotateDirectionAroundAxis)
+{
+ const float3 a = rotate_direction_around_axis({1, 0, 0}, {0, 0, 1}, M_PI_2);
+ EXPECT_NEAR(a.x, 0.0f, FLT_EPSILON);
+ EXPECT_NEAR(a.y, 1.0f, FLT_EPSILON);
+ EXPECT_NEAR(a.z, 0.0f, FLT_EPSILON);
+ const float3 b = rotate_direction_around_axis({1, 0, 0}, {0, 0, 1}, M_PI);
+ EXPECT_NEAR(b.x, -1.0f, FLT_EPSILON);
+ EXPECT_NEAR(b.y, 0.0f, FLT_EPSILON);
+ EXPECT_NEAR(b.z, 0.0f, FLT_EPSILON);
+ const float3 c = rotate_direction_around_axis({0, 0, 1}, {0, 0, 1}, 0.0f);
+ EXPECT_NEAR(c.x, 0.0f, FLT_EPSILON);
+ EXPECT_NEAR(c.y, 0.0f, FLT_EPSILON);
+ EXPECT_NEAR(c.z, 1.0f, FLT_EPSILON);
+}
+
+} // namespace blender::math::tests