Blender  V3.3
util_transform_test.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright 2011-2022 Blender Foundation */
3 
4 #include "testing/testing.h"
5 
6 #include "util/transform.h"
7 #include "util/vector.h"
8 
10 
12 {
13  // Simple case: single degenerated matrix.
14  {
15  vector<Transform> motion = {transform_scale(0.0f, 0.0f, 0.0f)};
16  vector<DecomposedTransform> decomp(motion.size());
17  transform_motion_decompose(decomp.data(), motion.data(), motion.size());
18  EXPECT_TRUE(transform_decomposed_isfinite_safe(&decomp[0]));
19  }
20 
21  // Copy from previous to current.
22  {
24  transform_scale(0.0f, 0.0f, 0.0f)};
25  vector<DecomposedTransform> decomp(motion.size());
26  transform_motion_decompose(decomp.data(), motion.data(), motion.size());
27  EXPECT_NEAR(len(decomp[1].x - decomp[0].x), 0.0f, 1e-6f);
28  }
29 
30  // Copy from next to current.
31  {
32  vector<Transform> motion = {transform_scale(0.0f, 0.0f, 0.0f),
34  vector<DecomposedTransform> decomp(motion.size());
35  transform_motion_decompose(decomp.data(), motion.data(), motion.size());
36  EXPECT_NEAR(len(decomp[0].x - decomp[1].x), 0.0f, 1e-6f);
37  }
38 }
39 
#define CCL_NAMESPACE_END
Definition: cuda/compat.h:9
int len
Definition: draw_manager.c:108
ccl_device_inline Transform transform_rotate(float angle, float3 axis)
ccl_device_inline bool transform_decomposed_isfinite_safe(ccl_private DecomposedTransform *decomp)
ccl_device_inline Transform transform_scale(float3 s)
ccl_device_inline float3 one_float3()
Definition: math_float3.h:89
void transform_motion_decompose(DecomposedTransform *decomp, const Transform *motion, size_t size)
Definition: transform.cpp:246
#define M_PI_4_F
Definition: util/math.h:40
CCL_NAMESPACE_BEGIN TEST(transform_motion_decompose, Degenerated)