X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Fkernel%2FPlanesOperations.cxx;h=c974baebe834c8a89037b8bbaea9d1cc72c7dea7;hb=4c1ed57894760ef69158b3916e9ba82428b2081f;hp=7ea40d138993d1891bd89e6a6075fcd1b96914ad;hpb=062ae799e283a7de038b13d78eaf7d8495086378;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/kernel/PlanesOperations.cxx b/lib/maracasVisuLib/src/kernel/PlanesOperations.cxx index 7ea40d1..c974bae 100644 --- a/lib/maracasVisuLib/src/kernel/PlanesOperations.cxx +++ b/lib/maracasVisuLib/src/kernel/PlanesOperations.cxx @@ -1,3 +1,28 @@ +/*# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Sant�) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ */ + #include "PlanesOperations.h" @@ -5,6 +30,8 @@ ** Start of data viewmanagerData *********************************************************************************************/ +using namespace std; + PlanesOperations::PlanesOperations() { } @@ -35,7 +62,7 @@ double PlanesOperations::getMagnitud(double* vect) mag = sqrt(pow(vect[0],2) + pow(vect[1],2) + pow(vect[2],2)); - std::cout<<"mag "< PlanesOperations::getCrossProduct(vector vect0,vector vect1){ + + vector vectCross; + + for(unsigned i = 0; i < vect0.size(); i++){ + + unsigned ii = (i + 1 == vect0.size())? 0: i + 1; + unsigned iii = (ii + 1 == vect0.size())? 0: ii + 1; + + vectCross.push_back( vect0[ii]*vect1[iii]- vect0[iii]*vect1[ii] ); + + } + return vectCross; + +} +double PlanesOperations::getDotProduct(vector vect0,vector vect1){ + + double sum = 0; + + for(unsigned i = 0; i < vect0.size(); i++) sum += vect0[i]*vect1[i]; + + return sum; +} +vector PlanesOperations::getNormal(vector vect){ + vector vectnorm; + double mag = getMagnitud(vect); + + for(unsigned i = 0; i < vect.size(); i++){ + + if(mag != 0){ + vectnorm.push_back(vect[i]/mag); + }else{ + vectnorm.push_back(0); + } + } + return vectnorm; +} +double PlanesOperations::getMagnitud(vector vect){ + double mag = 0; + + for(unsigned i = 0; i < vect.size(); i++) mag += pow(vect[i], 2); + + mag = sqrt(mag); + + //std::cout<<"mag "< PlanesOperations::makeVector(vector podouble0, vector podouble1){ + + vector vector; + + for(unsigned i = 0; i < podouble0.size(); i++){ + vector.push_back(podouble1[i] - podouble0[i]); + } + return vector; +} + +/** +* Adds to vectors, the result is in vectres; +*@param double* vect0, the first vector +*@param double* vect1, the second vector +*@param double* vectres, the resulting vector +*/ +vector PlanesOperations::addVectors(vector vect0, vector vect1){ + vector vectres; + for(unsigned i = 0; i < vect0.size(); i++){ + vectres.push_back(vect0[i] + vect1[i]); + } + return vectres; +} + +/** +* multiply a vector with a given scalar +*@param double* vect0, the vector +*@param double scalar, the scalar value +*@param double* vectres, the resulting vector +*/ +vector PlanesOperations::scalarVector(vector vect0, double scalar){ + vector vectres; + for(unsigned i = 0; i < vect0.size(); i++){ + vectres.push_back(vect0[i]*scalar); + } + return vectres; +} +