Commit 109259db authored by CGoGN GIT Supervisor's avatar CGoGN GIT Supervisor

Merge branch 'master' of /home/vanhoey/CGoGN

parents 09bf6799 9fa126d1
...@@ -161,11 +161,15 @@ class Matrix ...@@ -161,11 +161,15 @@ class Matrix
// Vector / Matrix multiplication // Vector / Matrix multiplication
template <unsigned int M, unsigned int N, typename T> template <unsigned int M, unsigned int N, typename T>
Vector<M,T> operator*(const Vector<N,T>& v, const Matrix<M,N,T>& m); Vector<M,T> operator*(const Vector<N,T>& v, const Matrix<M,N,T>& m) ;
// Scalar / Matrix multiplication // Scalar / Matrix multiplication
template <unsigned int M, unsigned int N, typename T> template <unsigned int M, unsigned int N, typename T>
Matrix<M,N,T> operator*(T s, const Matrix<M,N,T>& m); Matrix<M,N,T> operator*(T s, const Matrix<M,N,T>& m) ;
// Vector / Transposed vector multiplication
template <unsigned int M, unsigned int N, typename T>
Matrix<M,N,T> transposed_vectors_mult(const Vector<M,T>& v1, const Vector<N,T>& v2) ;
/**********************************************/ /**********************************************/
......
...@@ -405,9 +405,11 @@ bool Matrix<M,N,T>::operator==(const Matrix<M,N,T>& m) const { ...@@ -405,9 +405,11 @@ bool Matrix<M,N,T>::operator==(const Matrix<M,N,T>& m) const {
template <unsigned int M, unsigned int N, typename T> template <unsigned int M, unsigned int N, typename T>
std::ostream& operator<<(std::ostream& out, const Matrix<M,N,T>& m) std::ostream& operator<<(std::ostream& out, const Matrix<M,N,T>& m)
{ {
for(unsigned int i = 0; i < M; ++i) for(unsigned int i = 0; i < M; ++i) {
for(unsigned int j = 0; j < N; ++j) for(unsigned int j = 0; j < N; ++j)
out << m(i,j) << " " ; out << m(i,j) << " " ;
std::cout << std::endl ;
}
return out ; return out ;
} }
...@@ -446,6 +448,15 @@ Matrix<M,N,T> operator*(T s, const Matrix<M,N,T>& m) ...@@ -446,6 +448,15 @@ Matrix<M,N,T> operator*(T s, const Matrix<M,N,T>& m)
return res ; return res ;
} }
template <unsigned int M, unsigned int N, typename T>
Matrix<M,N,T> transposed_vectors_mult(const Vector<M,T>& v1, const Vector<N,T>& v2) {
Matrix<M,N,T> res ;
for(unsigned int i = 0; i < M; ++i)
for(unsigned int j = 0; j < N; ++j)
res(i,j) = v1[i] * v2[j] ;
return res ;
}
} // namespace Geom } // namespace Geom
} // namespace CGoGN } // namespace CGoGN
...@@ -71,6 +71,16 @@ public: // methods ...@@ -71,6 +71,16 @@ public: // methods
*/ */
~ColourConverter() {} ; ~ColourConverter() {} ;
/**
* getR
* @return original value (in its original space)
*/
VEC3 getOriginal() ;
/**
* getR
* @return enc value of provided colour
*/
VEC3 getColour(enum ColourEncoding enc) ;
/** /**
* getR * getR
* @return RGB value of provided colour * @return RGB value of provided colour
......
...@@ -65,6 +65,36 @@ ColourConverter<REAL>::ColourConverter(VEC3 col, enum ColourEncoding enc) : ...@@ -65,6 +65,36 @@ ColourConverter<REAL>::ColourConverter(VEC3 col, enum ColourEncoding enc) :
} }
} }
template<typename REAL>
Geom::Vector<3,REAL> ColourConverter<REAL>::getColour(enum ColourEncoding enc) {
switch (enc) {
case (C_RGB) :
return getRGB() ;
break ;
case (C_XYZ) :
return getXYZ() ;
break ;
case (C_Luv) :
return getLuv() ;
break ;
case (C_Lab) :
return getLab() ;
break ;
default :
assert(!"Should never arrive here : ColourConverter::getColour default case") ;
return getOriginal() ;
}
}
template<typename REAL>
Geom::Vector<3,REAL> ColourConverter<REAL>::getOriginal() {
return getColour(this->originalEnc) ;
}
template<typename REAL> template<typename REAL>
Geom::Vector<3,REAL> ColourConverter<REAL>::getRGB() { Geom::Vector<3,REAL> ColourConverter<REAL>::getRGB() {
if (RGB == NULL) if (RGB == NULL)
...@@ -150,7 +180,7 @@ void ColourConverter<REAL>::convertXYZtoLuv() { ...@@ -150,7 +180,7 @@ void ColourConverter<REAL>::convertXYZtoLuv() {
REAL Ydiv = Y/Yn ; REAL Ydiv = Y/Yn ;
if (Ydiv > 0.008856) if (Ydiv > 0.008856)
L = 116.0 * pow(Ydiv,1.0f/3.0) - 16.0 ; L = 116.0 * pow(Ydiv,1.0/3.0) - 16.0 ;
else // near black else // near black
L = 903.3 * Ydiv ; L = 903.3 * Ydiv ;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment