void v4math_object::test<8>() { #if LL_DEBUG && LL_WINDOWS && _MSC_VER >= 1400 skip_fail("This fails on VS2005 debug builds!"); #else #if LL_WINDOWS && _MSC_VER < 1400 skip_fail("This fails on VS2003!"); #else F32 x = 10.f, y = -2.3f, z = -.023f, w = -2.0f; const F32 val[10] = {1.f,2.f,3.f,.34f,.1f,-.5f,2.f,1.23f,1.234f,.89f}; LLMatrix4 mat(val); LLVector4 vec4(x,y,z,w),vec4a; vec4.rotVec(mat); vec4a.setVec(x,y,z,w); vec4a.rotVec(mat); ensure_equals("1:rotVec: Fail " ,vec4a, vec4); F32 a = 2.32f, b = -23.2f, c = -34.1112f, d = 1.010112f; LLQuaternion q(a,b,c,d); LLVector4 vec4b(a,b,c,d),vec4c; vec4b.rotVec(q); vec4c.setVec(a, b, c, d); vec4c.rotVec(q); ensure_equals("2:rotVec: Fail " ,vec4b, vec4c); #endif #endif }
void v4math_object::test<18>() { F32 x = 1.f, y = 2.f, z = -1.1f; F32 angle1, angle2; LLVector4 vec4(x,y,z), vec4a(x,y,z); angle1 = angle_between(vec4, vec4a); vec4.normVec(); vec4a.normVec(); angle2 = acos(vec4 * vec4a); ensure_approximately_equals("1:angle_between: Fail " ,angle1,angle2,8); F32 x1 = 21.f, y1 = 2.23f, z1 = -1.1f; LLVector4 vec4b(x,y,z), vec4c(x1,y1,z1); angle1 = angle_between(vec4b, vec4c); vec4b.normVec(); vec4c.normVec(); angle2 = acos(vec4b * vec4c); ensure_approximately_equals("2:angle_between: Fail " ,angle1,angle2,8); }
void v4math_object::test<1>() { LLVector4 vec4; ensure("1:LLVector4:Fail to initialize " ,((0 == vec4.mV[VX]) && (0 == vec4.mV[VY]) && (0 == vec4.mV[VZ])&& (1.0f == vec4.mV[VW]))); F32 x = 10.f, y = -2.3f, z = -.023f, w = -2.0f; LLVector4 vec4a(x,y,z); ensure("2:LLVector4:Fail to initialize " ,((x == vec4a.mV[VX]) && (y == vec4a.mV[VY]) && (z == vec4a.mV[VZ])&& (1.0f == vec4a.mV[VW]))); LLVector4 vec4b(x,y,z,w); ensure("3:LLVector4:Fail to initialize " ,((x == vec4b.mV[VX]) && (y == vec4b.mV[VY]) && (z == vec4b.mV[VZ])&& (w == vec4b.mV[VW]))); const F32 vec[4] = {.112f ,23.2f, -4.2f, -.0001f}; LLVector4 vec4c(vec); ensure("4:LLVector4:Fail to initialize " ,((vec[0] == vec4c.mV[VX]) && (vec[1] == vec4c.mV[VY]) && (vec[2] == vec4c.mV[VZ])&& (vec[3] == vec4c.mV[VW]))); LLVector3 vec3(-2.23f,1.01f,42.3f); LLVector4 vec4d(vec3); ensure("5:LLVector4:Fail to initialize " ,((vec3.mV[VX] == vec4d.mV[VX]) && (vec3.mV[VY] == vec4d.mV[VY]) && (vec3.mV[VZ] == vec4d.mV[VZ])&& (1.f == vec4d.mV[VW]))); F32 w1 = -.234f; LLVector4 vec4e(vec3,w1); ensure("6:LLVector4:Fail to initialize " ,((vec3.mV[VX] == vec4e.mV[VX]) && (vec3.mV[VY] == vec4e.mV[VY]) && (vec3.mV[VZ] == vec4e.mV[VZ])&& (w1 == vec4e.mV[VW]))); }
void v4math_object::test<8>() { F32 x = 10.f, y = -2.3f, z = -.023f, w = -2.0f; const F32 val[16] = { 1.f, 2.f, 3.f, 0.f, .34f, .1f, -.5f, 0.f, 2.f, 1.23f, 1.234f, 0.f, .89f, 0.f, 0.f, 0.f }; LLMatrix4 mat(val); LLVector4 vec4(x,y,z,w),vec4a; vec4.rotVec(mat); vec4a.setVec(x,y,z,w); vec4a.rotVec(mat); ensure_equals("1:rotVec: Fail " ,vec4a, vec4); F32 a = 2.32f, b = -23.2f, c = -34.1112f, d = 1.010112f; LLQuaternion q(a,b,c,d); LLVector4 vec4b(a,b,c,d),vec4c; vec4b.rotVec(q); vec4c.setVec(a, b, c, d); vec4c.rotVec(q); ensure_equals("2:rotVec: Fail " ,vec4b, vec4c); }