00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
#ifndef OPENCAL_BALLOONMESH_H
00012
#define OPENCAL_BALLOONMESH_H
00013
00014
00015
#include <OpenCAL/global.h>
00016
#include <OpenCAL/MassSpringSystem.h>
00017
00018
#include <OpenCAL/Vector3.h>
00019
using OpenCAL::Utils::Vector3;
00020
00021
#include <map>
00022
using std::map;
00023
00024
namespace OpenCAL
00025 {
00026
00027
class Vertex;
00028
class PointMass;
00029
class Triangle;
00030
00034 class OPENCAL_API BalloonMesh:
public MassSpringSystem
00035 {
00036
protected:
00037
00038
typedef map<Vertex *, PointMass *> ConnectionMap;
00039
typedef map<Vertex *, Vertex *> SpringMap;
00040
00041
00042 string m_filename;
00043 ConnectionMap m_connections;
00044 SpringMap m_springConnections;
00045
00046
public:
00047
00048 BalloonMesh(
System *parent,
const string &filename,
const Vector3 &position = Vector3::zero);
00049
virtual ~BalloonMesh();
00050
00051
00052
PointMass *getPointFromVertex(
Vertex *vertex) {
return m_connections[vertex]; }
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
protected:
00064
00065
void constructMesh(
const Vector3 &position);
00066
void addSprings(
Triangle *triangle,
float stiffness,
float damping);
00067
bool isConnected(
Vertex *v1,
Vertex *v2);
00068 };
00069 }
00070
00071
#endif // OPENCAL_BALLOONMESH_H