forked from bartvdbraak/blender
BLI_assert() when math functions that require are normalize vector are called without one.
This commit is contained in:
parent
b7dbf83d19
commit
276c842096
@ -208,6 +208,13 @@ float angle_signed_v2v2(const float v1[2], const float v2[2])
|
|||||||
|
|
||||||
float angle_normalized_v3v3(const float v1[3], const float v2[3])
|
float angle_normalized_v3v3(const float v1[3], const float v2[3])
|
||||||
{
|
{
|
||||||
|
/* double check they are normalized */
|
||||||
|
#ifdef DEBUG
|
||||||
|
float test;
|
||||||
|
BLI_assert(fabsf((test = len_squared_v3(v1)) - 1.0f) < 0.0001f || fabsf(test) < 0.0001f);
|
||||||
|
BLI_assert(fabsf((test = len_squared_v3(v2)) - 1.0f) < 0.0001f || fabsf(test) < 0.0001f);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* this is the same as acos(dot_v3v3(v1, v2)), but more accurate */
|
/* this is the same as acos(dot_v3v3(v1, v2)), but more accurate */
|
||||||
if (dot_v3v3(v1, v2) < 0.0f) {
|
if (dot_v3v3(v1, v2) < 0.0f) {
|
||||||
float vec[3];
|
float vec[3];
|
||||||
@ -224,6 +231,13 @@ float angle_normalized_v3v3(const float v1[3], const float v2[3])
|
|||||||
|
|
||||||
float angle_normalized_v2v2(const float v1[2], const float v2[2])
|
float angle_normalized_v2v2(const float v1[2], const float v2[2])
|
||||||
{
|
{
|
||||||
|
/* double check they are normalized */
|
||||||
|
#ifdef DEBUG
|
||||||
|
float test;
|
||||||
|
BLI_assert(fabsf((test = len_squared_v2(v1)) - 1.0f) < 0.0001f || fabsf(test) < 0.0001f);
|
||||||
|
BLI_assert(fabsf((test = len_squared_v2(v2)) - 1.0f) < 0.0001f || fabsf(test) < 0.0001f);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* this is the same as acos(dot_v3v3(v1, v2)), but more accurate */
|
/* this is the same as acos(dot_v3v3(v1, v2)), but more accurate */
|
||||||
if (dot_v2v2(v1, v2) < 0.0f) {
|
if (dot_v2v2(v1, v2) < 0.0f) {
|
||||||
float vec[2];
|
float vec[2];
|
||||||
@ -408,6 +422,12 @@ void rotate_normalized_v3_v3v3fl(float r[3], const float p[3], const float axis[
|
|||||||
const float costheta = cos(angle);
|
const float costheta = cos(angle);
|
||||||
const float sintheta = sin(angle);
|
const float sintheta = sin(angle);
|
||||||
|
|
||||||
|
/* double check they are normalized */
|
||||||
|
#ifdef DEBUG
|
||||||
|
float test;
|
||||||
|
BLI_assert(fabsf((test = len_squared_v3(axis)) - 1.0f) < 0.0001f || fabsf(test) < 0.0001f);
|
||||||
|
#endif
|
||||||
|
|
||||||
r[0] = ((costheta + (1 - costheta) * axis[0] * axis[0]) * p[0]) +
|
r[0] = ((costheta + (1 - costheta) * axis[0] * axis[0]) * p[0]) +
|
||||||
(((1 - costheta) * axis[0] * axis[1] - axis[2] * sintheta) * p[1]) +
|
(((1 - costheta) * axis[0] * axis[1] - axis[2] * sintheta) * p[1]) +
|
||||||
(((1 - costheta) * axis[0] * axis[2] + axis[1] * sintheta) * p[2]);
|
(((1 - costheta) * axis[0] * axis[2] + axis[1] * sintheta) * p[2]);
|
||||||
|
Loading…
Reference in New Issue
Block a user