/usr/include/choreonoid-1.1/cnoid/src/Collision/ColdetModelPair.h is in libcnoid-dev 1.1.0+dfsg-6.1+b4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | /**
@author Shin'ichiro Nakaoka
*/
#ifndef CNOID_COLLISION_COLDET_MODEL_PAIR_H_INCLUDED
#define CNOID_COLLISION_COLDET_MODEL_PAIR_H_INCLUDED
#include "CollisionData.h"
#include "ColdetModel.h"
#include "CollisionPairInserter.h"
#include <cnoid/Referenced>
#include <vector>
#include "exportdecl.h"
namespace cnoid {
class CNOID_EXPORT ColdetModelPair : public Referenced
{
public:
ColdetModelPair();
ColdetModelPair(ColdetModelPtr model0, ColdetModelPtr model1,
double tolerance=0);
ColdetModelPair(const ColdetModelPair& org);
virtual ~ColdetModelPair();
void set(ColdetModelPtr model0, ColdetModelPtr model1);
inline ColdetModel* model(int index) { return models[index].get(); }
inline std::vector<collision_data>& detectCollisions() {
return detectCollisionsSub(true);
}
inline std::vector<collision_data>& collisions() {
return collisionPairInserter.cdContact;
}
inline void clearCollisions(){
collisionPairInserter.cdContact.clear();
}
inline bool checkCollision() {
return !detectCollisionsSub(false).empty();
}
double computeDistance(double *point0, double *point1);
/**
@param out_triangle0, out_triangle1 Indices of the triangle pair that are originally registered by ColdeModel::setTraiangle().
@param out_point0, out_point1 The closest points
*/
double computeDistance(int& out_triangle0, double* out_point0, int& out_triangle1, double* out_point1);
bool detectIntersection();
double tolerance() const { return tolerance_; }
void setTolerance(double tolerance){
tolerance_ = tolerance;
}
private:
std::vector<collision_data>& detectCollisionsSub(bool detectAllContacts);
bool detectMeshMeshCollisions(bool detectAllContacts);
bool detectPlaneCylinderCollisions(bool detectAllContacts);
ColdetModelPtr models[2];
double tolerance_;
CollisionPairInserter collisionPairInserter;
int boxTestsCount;
int triTestsCount;
};
typedef boost::intrusive_ptr<ColdetModelPair> ColdetModelPairPtr;
}
#endif
|