| 1 | 
< | 
 /* | 
| 1 | 
> | 
/* | 
| 2 | 
  | 
 * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved. | 
| 3 | 
  | 
 * | 
| 4 | 
  | 
 * The University of Notre Dame grants you ("Licensee") a | 
| 46 | 
  | 
#include "constraints/ConstraintPair.hpp" | 
| 47 | 
  | 
namespace oopse { | 
| 48 | 
  | 
 | 
| 49 | 
< | 
/**  | 
| 50 | 
< | 
 * @class Rattle Rattle.hpp "constraints/Rattle.hpp" | 
| 51 | 
< | 
 * Velocity Verlet Constraint Algorithm | 
| 52 | 
< | 
 */  | 
| 53 | 
< | 
class Rattle { | 
| 54 | 
< | 
    public: | 
| 55 | 
< | 
        enum ConsStatus{ | 
| 56 | 
< | 
            consFail = -1,  //Constraint Fail | 
| 57 | 
< | 
            consSuccess = 0,  //constrain the pair by moving two elements | 
| 58 | 
< | 
            consAlready = 1}; //current pair is already constrained, do not need to move the elements | 
| 49 | 
> | 
  /**  | 
| 50 | 
> | 
   * @class Rattle Rattle.hpp "constraints/Rattle.hpp" | 
| 51 | 
> | 
   * Velocity Verlet Constraint Algorithm | 
| 52 | 
> | 
   */  | 
| 53 | 
> | 
  class Rattle { | 
| 54 | 
> | 
  public: | 
| 55 | 
> | 
    enum ConsStatus{ | 
| 56 | 
> | 
      consFail = -1,  //Constraint Fail | 
| 57 | 
> | 
      consSuccess = 0,  //constrain the pair by moving two elements | 
| 58 | 
> | 
      consAlready = 1}; //current pair is already constrained, do not need to move the elements | 
| 59 | 
  | 
   | 
| 60 | 
< | 
        Rattle(SimInfo* info); | 
| 61 | 
< | 
        void constraintA(); | 
| 62 | 
< | 
        void constraintB(); | 
| 60 | 
> | 
    Rattle(SimInfo* info); | 
| 61 | 
> | 
    void constraintA(); | 
| 62 | 
> | 
    void constraintB(); | 
| 63 | 
  | 
         | 
| 64 | 
< | 
        int getMaxConsIteration() { return maxConsIteration_; } | 
| 65 | 
< | 
        void setMaxConsIteration(int iteration) { maxConsIteration_ = iteration; } | 
| 64 | 
> | 
    int getMaxConsIteration() { return maxConsIteration_; } | 
| 65 | 
> | 
    void setMaxConsIteration(int iteration) { maxConsIteration_ = iteration; } | 
| 66 | 
  | 
 | 
| 67 | 
< | 
        double getConsTolerance() { return consTolerance_; }  | 
| 68 | 
< | 
        void setConsTolerance(double tolerance) { consTolerance_ = tolerance;}         | 
| 67 | 
> | 
    double getConsTolerance() { return consTolerance_; }  | 
| 68 | 
> | 
    void setConsTolerance(double tolerance) { consTolerance_ = tolerance;}         | 
| 69 | 
  | 
 | 
| 70 | 
< | 
    private: | 
| 71 | 
< | 
        typedef int (Rattle::*ConstraintPairFuncPtr)(ConstraintPair*); | 
| 72 | 
< | 
        void doConstraint(ConstraintPairFuncPtr func); | 
| 73 | 
< | 
        int constraintPairA(ConstraintPair* consPair); | 
| 74 | 
< | 
        int constraintPairB(ConstraintPair* consPair); | 
| 70 | 
> | 
  private: | 
| 71 | 
> | 
    typedef int (Rattle::*ConstraintPairFuncPtr)(ConstraintPair*); | 
| 72 | 
> | 
    void doConstraint(ConstraintPairFuncPtr func); | 
| 73 | 
> | 
    int constraintPairA(ConstraintPair* consPair); | 
| 74 | 
> | 
    int constraintPairB(ConstraintPair* consPair); | 
| 75 | 
  | 
 | 
| 76 | 
< | 
        SimInfo* info_; | 
| 77 | 
< | 
        int maxConsIteration_;         | 
| 78 | 
< | 
        double consTolerance_; | 
| 79 | 
< | 
        double dt_; | 
| 80 | 
< | 
        Snapshot* currentSnapshot_;      | 
| 81 | 
< | 
}; | 
| 76 | 
> | 
    SimInfo* info_; | 
| 77 | 
> | 
    int maxConsIteration_;         | 
| 78 | 
> | 
    double consTolerance_; | 
| 79 | 
> | 
    double dt_; | 
| 80 | 
> | 
    Snapshot* currentSnapshot_;      | 
| 81 | 
> | 
  }; | 
| 82 | 
  | 
 | 
| 83 | 
  | 
} | 
| 84 | 
  | 
#endif |