00001
00002 #ifndef _DIRECT_MANIPULATION_H
00003 #define _DIRECT_MANIPULATION_H
00004
00005 #include "global.h"
00006
00007 #include <vector>
00008
00009 #include "ConstrainedVertex.h"
00010
00011 namespace animal
00012 {
00013 namespace octree
00014 {
00015
00022 std::vector<Vec3d> computeDirectManipulationResultPseudoInverse( std::vector<FloatingPointType> weights, Vec3d deltaQ );
00023
00031 void computeDirectManipulationSkinning(
00032 Vec3d deltaQ,
00033 std::vector<FloatingPointType> weights,
00034 std::vector<Vec3d> relPos,
00035 std::vector<ConstrainedVertex*> framesVertices,
00036 std::vector<ConstrainedVertex*> &verticesToMove,
00037 std::vector<Vec3d> &deltaP
00038 );
00039
00040 void computeDirectManipulationSkinningFrames(
00041 Vec3d deltaQ,
00042 std::vector<FloatingPointType> weights,
00043 std::vector<Vec3d> relPos,
00044 std::vector<ConstrainedVertex*> framesVertices,
00045 std::vector< std::vector<Vec3d> > & deltaFrames
00046 );
00047
00048 void computeDirectManipulationSkinningVerticesAndFrames(
00049 Vec3d deltaQ,
00050 std::vector<FloatingPointType> weights,
00051 std::vector<Vec3d> relPos,
00052 std::vector<ConstrainedVertex*> framesVertices,
00053 std::vector< Vec3d > & delta
00054 );
00055
00056 void computeDirectManipulationSkinningVertices(
00057 Vec3d deltaQ,
00058 std::vector<FloatingPointType> weights,
00059 std::vector<Vec3d> relPos,
00060 std::vector<ConstrainedVertex*> framesVertices,
00061 std::vector< Vec3d > & delta
00062 );
00063
00064 }
00065 }
00066
00067
00068 #endif