X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fmath%2FSGVec4.hxx;h=6330949535320bb99787f3dde0d873a8eae78af7;hb=006f90997a8eef6704de2511e38fcc786672308d;hp=f854274dd37bbae282d665665f8062897112ab48;hpb=f7c6a5bfa2140c1d5ef54f3212067cd286e525f1;p=simgear.git diff --git a/simgear/math/SGVec4.hxx b/simgear/math/SGVec4.hxx index f854274d..63309495 100644 --- a/simgear/math/SGVec4.hxx +++ b/simgear/math/SGVec4.hxx @@ -92,6 +92,9 @@ public: /// make sure it has at least 3 elements explicit SGVec4(const T* d) { data()[0] = d[0]; data()[1] = d[1]; data()[2] = d[2]; data()[3] = d[3]; } + template + explicit SGVec4(const SGVec4& d) + { data()[0] = d[0]; data()[1] = d[1]; data()[2] = d[2]; data()[3] = d[3]; } explicit SGVec4(const osg::Vec4f& d) { data()[0] = d[0]; data()[1] = d[1]; data()[2] = d[2]; data()[3] = d[3]; } explicit SGVec4(const osg::Vec4d& d) @@ -223,6 +226,15 @@ SGVec4 operator*(const SGVec4& v, S s) { return SGVec4(s*v(0), s*v(1), s*v(2), s*v(3)); } +/// multiplication as a multiplicator, that is assume that the first vector +/// represents a 4x4 diagonal matrix with the diagonal elements in the vector. +/// Then the result is the product of that matrix times the second vector. +template +inline +SGVec4 +mult(const SGVec4& v1, const SGVec4& v2) +{ return SGVec4(v1(0)*v2(0), v1(1)*v2(1), v1(2)*v2(2), v1(3)*v2(3)); } + /// component wise min template inline