Esempio n. 1
0
/**
 * @ingroup matrix4
 * @brief Compares every element of the matrix.  Uses HYP_EPSILON for precision.
 * returns 1 if equal, 0 if different
 */
HYPAPI int matrix4_equals(const matrix4 *self, const matrix4 *mT)
{
	unsigned char i;
	
	for(i = 0; i < 16; i++)
	{
		if(scalar_equalsf(self->m[i], mT->m[i]) == 0)
		{
			return 0;
		}
	}
	
	return 1;
}
Esempio n. 2
0
static char * test_quaternion_get_set_axis_anglev3()
{
	quaternion q;
	float angle, angle1;
	vector3 axis, axis1;
	
	vector3_set(&axis, HYP_VECTOR3_UNIT_X);
	angle = HYP_TAU / 4.0f;
	
	quaternion_set_from_axis_anglev3(&q, &axis, angle);
	quaternion_get_axis_anglev3(&q, &axis1, &angle1);

	test_assert(vector3_equals(&axis, &axis1));
	test_assert(scalar_equalsf(angle,angle1));
	
	return 0;
}
Esempio n. 3
0
static char *test_vector3_cross_product(void)
{
	struct vector3 a;
	struct vector3 b;
	struct vector3 r;

	vector3_setf3(&a, 3.0f, -3.0f, 1.0f);
	vector3_setf3(&b, 4.0f, 9.0f, 2.0f);

	vector3_cross_product(&r, &a, &b);

	test_assert(scalar_equalsf(r.x, -15.0f));
	test_assert(scalar_equalsf(r.y, -2.0f));
	test_assert(scalar_equalsf(r.z, 39.0f));

	/* tests lack of commutative property */
	vector3_cross_product(&r, &b, &a);

	test_assert(!scalar_equalsf(r.x, -15.0f));
	test_assert(!scalar_equalsf(r.y, -2.0f));
	test_assert(!scalar_equalsf(r.z, 39.0f));

	return 0;
}
Esempio n. 4
0
/** 
 * @ingroup quaternion
 * @brief if the scalar is 0.0 (w == 0.0), then the quaternion is said to be a *pure quaternion*
 */
HYPAPI short quaternion_is_pure(quaternion *self)
{
	return scalar_equalsf(self->w, 0.0f);
}
Esempio n. 5
0
/** 
 * @ingroup quaternion
 * @brief if the norm is 1.0, then the quaternion is said to be a *unit quaternion*
 */
HYPAPI short quaternion_is_unit(quaternion *self)
{
	return (scalar_equalsf(1.0f, quaternion_norm(self)));
}