summaryrefslogtreecommitdiff
path: root/indra/llmath
diff options
context:
space:
mode:
authorOz Linden <oz@lindenlab.com>2011-03-18 19:56:37 -0400
committerOz Linden <oz@lindenlab.com>2011-03-18 19:56:37 -0400
commit85ccab2d8178c508e585f987bb076951bf2e9ddb (patch)
tree5fbdf54372657c2c9353d274cd81f62b1e4fdf02 /indra/llmath
parent9f2a04f217d54344360edc554456d9804e17eeb7 (diff)
parent6ef593580239df7b967cca59d4cfa9fcd8db6aec (diff)
Automated merge with file:///Users/oz/Work/viewer-vs2010
Diffstat (limited to 'indra/llmath')
-rw-r--r--indra/llmath/tests/m3math_test.cpp5
-rw-r--r--indra/llmath/v3math.h13
2 files changed, 18 insertions, 0 deletions
diff --git a/indra/llmath/tests/m3math_test.cpp b/indra/llmath/tests/m3math_test.cpp
index 622ee28288..baff5a2d45 100644
--- a/indra/llmath/tests/m3math_test.cpp
+++ b/indra/llmath/tests/m3math_test.cpp
@@ -42,6 +42,11 @@
#pragma warning(disable: 4702)
#endif
+#if LL_WINDOWS
+// disable unreachable code warnings caused by usage of skip.
+#pragma warning(disable: 4702)
+#endif
+
namespace tut
{
struct m3math_test
diff --git a/indra/llmath/v3math.h b/indra/llmath/v3math.h
index dbd38c1c3f..ef002fe9f2 100644
--- a/indra/llmath/v3math.h
+++ b/indra/llmath/v3math.h
@@ -156,6 +156,8 @@ F32 dist_vec(const LLVector3 &a, const LLVector3 &b); // Returns distance betwe
F32 dist_vec_squared(const LLVector3 &a, const LLVector3 &b);// Returns distance squared between a and b
F32 dist_vec_squared2D(const LLVector3 &a, const LLVector3 &b);// Returns distance squared between a and b ignoring Z component
LLVector3 projected_vec(const LLVector3 &a, const LLVector3 &b); // Returns vector a projected on vector b
+LLVector3 parallel_component(const LLVector3 &a, const LLVector3 &b); // Returns vector a projected on vector b (same as projected_vec)
+LLVector3 orthogonal_component(const LLVector3 &a, const LLVector3 &b); // Returns component of vector a not parallel to vector b (same as projected_vec)
LLVector3 lerp(const LLVector3 &a, const LLVector3 &b, F32 u); // Returns a vector that is a linear interpolation between a and b
inline LLVector3::LLVector3(void)
@@ -490,6 +492,17 @@ inline LLVector3 projected_vec(const LLVector3 &a, const LLVector3 &b)
return project_axis * (a * project_axis);
}
+inline LLVector3 parallel_component(const LLVector3 &a, const LLVector3 &b)
+{
+ return projected_vec(a, b);
+}
+
+inline LLVector3 orthogonal_component(const LLVector3 &a, const LLVector3 &b)
+{
+ return a - projected_vec(a, b);
+}
+
+
inline LLVector3 lerp(const LLVector3 &a, const LLVector3 &b, F32 u)
{
return LLVector3(