added Matx<4,4>*Scalar operator (ticket #1830)
This commit is contained in:
@@ -676,14 +676,23 @@ Matx<_Tp, 4, 1> operator * (const Matx<_Tp, 4, 4>& a, const Point3_<_Tp>& b)
|
|||||||
return a*Matx<_Tp, 4, 1>(b.x, b.y, b.z, 1);
|
return a*Matx<_Tp, 4, 1>(b.x, b.y, b.z, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename _Tp> static inline
|
template<typename _Tp> static inline
|
||||||
Scalar operator * (const Matx<_Tp, 4, 4>& a, const Scalar& b)
|
Scalar operator * (const Matx<_Tp, 4, 4>& a, const Scalar& b)
|
||||||
{
|
{
|
||||||
return Scalar(a*Matx<_Tp, 4, 1>(b[0],b[1],b[2],b[3]));
|
Matx<double, 4, 1> c(Matx<double, 4, 4>(a), b, Matx_MatMulOp());
|
||||||
}
|
return reinterpret_cast<const Scalar&>(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static inline
|
||||||
|
Scalar operator * (const Matx<double, 4, 4>& a, const Scalar& b)
|
||||||
|
{
|
||||||
|
Matx<double, 4, 1> c(a, b, Matx_MatMulOp());
|
||||||
|
return reinterpret_cast<const Scalar&>(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename _Tp, int m, int n> inline
|
template<typename _Tp, int m, int n> inline
|
||||||
Matx<_Tp, m, n> Matx<_Tp, m, n>::mul(const Matx<_Tp, m, n>& a) const
|
Matx<_Tp, m, n> Matx<_Tp, m, n>::mul(const Matx<_Tp, m, n>& a) const
|
||||||
{
|
{
|
||||||
|
@@ -808,6 +808,22 @@ bool CV_OperationsTest::TestMatxMultiplication()
|
|||||||
if(res2[0] != 14.0) throw test_excep();
|
if(res2[0] != 14.0) throw test_excep();
|
||||||
if(res2[1] != 6.0) throw test_excep();
|
if(res2[1] != 6.0) throw test_excep();
|
||||||
if(res2[2] != 1.0) throw test_excep();
|
if(res2[2] != 1.0) throw test_excep();
|
||||||
|
|
||||||
|
Matx44f mat44f(1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1);
|
||||||
|
Matx44d mat44d(1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1);
|
||||||
|
Scalar s(4, 3, 2, 1);
|
||||||
|
Scalar sf = mat44f*s;
|
||||||
|
Scalar sd = mat44d*s;
|
||||||
|
|
||||||
|
if(sf[0] != 10.0) throw test_excep();
|
||||||
|
if(sf[1] != 6.0) throw test_excep();
|
||||||
|
if(sf[2] != 3.0) throw test_excep();
|
||||||
|
if(sf[3] != 1.0) throw test_excep();
|
||||||
|
|
||||||
|
if(sd[0] != 10.0) throw test_excep();
|
||||||
|
if(sd[1] != 6.0) throw test_excep();
|
||||||
|
if(sd[2] != 3.0) throw test_excep();
|
||||||
|
if(sd[3] != 1.0) throw test_excep();
|
||||||
}
|
}
|
||||||
catch(const test_excep&)
|
catch(const test_excep&)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user