LaparoscopicRigidMapping.inl
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef SOFA_COMPONENT_MAPPING_LAPAROSCOPICRIGIDMAPPING_INL
00026 #define SOFA_COMPONENT_MAPPING_LAPAROSCOPICRIGIDMAPPING_INL
00027
00028 #include <sofa/component/mapping/LaparoscopicRigidMapping.h>
00029 #include <sofa/component/mapping/BarycentricMapping.h>
00030 #include <sofa/helper/io/Mesh.h>
00031 #include <sofa/helper/gl/template.h>
00032 #include <sofa/core/componentmodel/behavior/MechanicalMapping.inl>
00033 #include <string>
00034
00035
00036 namespace sofa
00037 {
00038
00039 namespace component
00040 {
00041
00042 namespace mapping
00043 {
00044
00045 template <class BasicMapping>
00046 void LaparoscopicRigidMapping<BasicMapping>::init()
00047 {
00048 this->BasicMapping::init();
00049 }
00050
00051 template <class BasicMapping>
00052 void LaparoscopicRigidMapping<BasicMapping>::apply( typename Out::VecCoord& out, const typename In::VecCoord& in )
00053 {
00054 out.resize(1);
00055 out[0].getOrientation() = in[0].getOrientation();
00056 out[0].getCenter() = pivot.getValue() + in[0].getOrientation().rotate(Vector3(0,0,in[0].getTranslation()));
00057 currentRotation = in[0].getOrientation();
00058 }
00059
00060 template <class BasicMapping>
00061 void LaparoscopicRigidMapping<BasicMapping>::applyJ( typename Out::VecDeriv& out, const typename In::VecDeriv& in )
00062 {
00063 out.resize(1);
00064 out[0].getVOrientation() = in[0].getVOrientation();
00065 out[0].getVCenter() = currentRotation.rotate(Vector3(0,0,in[0].getVTranslation()));
00066 }
00067
00068 template <class BasicMapping>
00069 void LaparoscopicRigidMapping<BasicMapping>::applyJT( typename In::VecDeriv& out, const typename Out::VecDeriv& in )
00070 {
00071 out[0].getVOrientation() += in[0].getVOrientation();
00072 out[0].getVTranslation() += dot(currentRotation.rotate(Vector3(0,0,1)), in[0].getVCenter());
00073 }
00074
00075 template <class BasicMapping>
00076 void LaparoscopicRigidMapping<BasicMapping>::draw()
00077 {
00078 if (!this->getShow()) return;
00079 }
00080
00081 }
00082
00083 }
00084
00085 }
00086
00087 #endif