Choreonoid  1.1
SSVTreeCollider.h
説明を見る。
1 #ifndef __SSV_TREE_COLLIDER_H__
2 #define __SSV_TREE_COLLIDER_H__
3 
4 #include "Opcode/Opcode.h"
5 
6 using namespace Opcode;
7 
11 class SSVTreeCollider : public AABBTreeCollider {
12 public:
17 
22 
33  bool Distance(BVTCache& cache, float& minD, Point &point0, Point&point1,
34  const Matrix4x4* world0=null, const Matrix4x4* world1=null);
35 
44  bool Collide(BVTCache& cache, double tolerance,
45  const Matrix4x4* world0=null, const Matrix4x4* world1=null);
46 private:
47  void Distance(const AABBCollisionTree* tree0,
48  const AABBCollisionTree* tree1,
49  const Matrix4x4* world0, const Matrix4x4* world1,
50  Pair* cache, float& minD, Point &point0, Point&point1);
51 
52  void _Distance(const AABBCollisionNode* b0, const AABBCollisionNode* b1,
53  float& minD, Point& point0, Point& point1);
54  bool Collide(const AABBCollisionTree* tree0,
55  const AABBCollisionTree* tree1,
56  const Matrix4x4* world0, const Matrix4x4* world1,
57  Pair* cache, double tolerance);
58 
59  bool _Collide(const AABBCollisionNode* b0, const AABBCollisionNode* b1,
60  double tolerance);
61 
68  float SsvSsvDist(const AABBCollisionNode* b0, const AABBCollisionNode *b1);
69 
78  float PrimDist(udword id0, udword id1, Point& point0, Point& point1);
79 
88  float PssPssDist(float r0, const Point& center0, float r1, const Point& center1);
89 
99  float PssLssDist(float r0, const Point& center0,
100  float r1, const Point& point0, const Point& point1);
101 
111  float LssPssDist(float r0, const Point& point0, const Point& point1,
112  float r1, const Point& center0);
113 
124  float LssLssDist(float r0, const Point& point0, const Point& point1,
125  float r1, const Point& point2, const Point& point3);
126 };
127 
128 #endif