Choreonoid  1.5
Public Member Functions | Public Attributes | List of all members
Opcode::CollisionPairInserter Class Referenceabstract

#include <CollisionPairInserter.h>

Inheritance diagram for Opcode::CollisionPairInserter:
Opcode::StdCollisionPairInserter

Public Member Functions

virtual ~CollisionPairInserter ()
 
void clear ()
 clear collision information More...
 
virtual int detectTriTriOverlap (const cnoid::Vector3 &P1, const cnoid::Vector3 &P2, const cnoid::Vector3 &P3, const cnoid::Vector3 &Q1, const cnoid::Vector3 &Q2, const cnoid::Vector3 &Q3, cnoid::collision_data *col_p)=0
 detect collsiion between triangles More...
 
virtual int apply (const Opcode::AABBCollisionNode *b1, const Opcode::AABBCollisionNode *b2, int id1, int id2, int num_of_i_points, cnoid::Vector3 i_points[4], cnoid::Vector3 &n_vector, double depth, cnoid::Vector3 &n1, cnoid::Vector3 &m1, int ctype, Opcode::MeshInterface *mesh1, Opcode::MeshInterface *mesh2)=0
 refine collision information using neighboring triangls More...
 
std::vector< cnoid::collision_data > & collisions ()
 get collision information More...
 
void set (cnoid::ColdetModelInternalModel *model0, cnoid::ColdetModelInternalModel *model1)
 

Public Attributes

cnoid::Matrix3 CD_Rot1
 rotation of the first mesh More...
 
cnoid::Vector3 CD_Trans1
 translation of the first mesh More...
 
double CD_s1
 scale of the first mesh More...
 
cnoid::Matrix3 CD_Rot2
 rotation of the second mesh More...
 
cnoid::Vector3 CD_Trans2
 translation of the second mesh More...
 
double CD_s2
 scale of the second mesh More...
 
std::vector< cnoid::collision_datacdContact
 collision information More...
 
cnoid::ColdetModelInternalModelmodels [2]
 

Constructor & Destructor Documentation

◆ ~CollisionPairInserter()

virtual Opcode::CollisionPairInserter::~CollisionPairInserter ( )
inlinevirtual

Member Function Documentation

◆ apply()

virtual int Opcode::CollisionPairInserter::apply ( const Opcode::AABBCollisionNode *  b1,
const Opcode::AABBCollisionNode *  b2,
int  id1,
int  id2,
int  num_of_i_points,
cnoid::Vector3  i_points[4],
cnoid::Vector3 n_vector,
double  depth,
cnoid::Vector3 n1,
cnoid::Vector3 m1,
int  ctype,
Opcode::MeshInterface *  mesh1,
Opcode::MeshInterface *  mesh2 
)
pure virtual

refine collision information using neighboring triangls

Parameters
b1node of the first colliding triangle
b2node of the second colliding triangle
id1id of the first colliding triangle
id2id of the second colliding triangle
num_of_i_pointsthe number of intersecting points
i_pointsintersecting points
n_vectornormal vector of collision
depthpenetration depth
n1normal vector of the first triangle
m1normal vector of the second triangle
ctypecollision type
mesh1mesh which includes the first triangle
mesh2mesh which includes the second triangle
Returns
CD_OK if refined successfully
Note
collision information is expressed in the second mesh coordinates

Implemented in Opcode::StdCollisionPairInserter.

◆ clear()

void Opcode::CollisionPairInserter::clear ( )
inline

clear collision information

◆ collisions()

std::vector<cnoid::collision_data>& Opcode::CollisionPairInserter::collisions ( )
inline

get collision information

Returns
collision information

◆ detectTriTriOverlap()

virtual int Opcode::CollisionPairInserter::detectTriTriOverlap ( const cnoid::Vector3 P1,
const cnoid::Vector3 P2,
const cnoid::Vector3 P3,
const cnoid::Vector3 Q1,
const cnoid::Vector3 Q2,
const cnoid::Vector3 Q3,
cnoid::collision_data col_p 
)
pure virtual

detect collsiion between triangles

Parameters
P1the first vertex of the first triangle
P2the second vertex of the first triangle
P3the third vertex of the first triangle
Q1the first vertex of the second triangle
Q2the second vertex of the second triangle
Q3the third vertex of the second triangle
col_pcollision information
Returns
1 if collision is detected, 0 otherwise
Note
all vertices must be represented in the same coordinates

Implemented in Opcode::StdCollisionPairInserter.

◆ set()

void Opcode::CollisionPairInserter::set ( cnoid::ColdetModelInternalModel model0,
cnoid::ColdetModelInternalModel model1 
)
inline

Member Data Documentation

◆ CD_Rot1

cnoid::Matrix3 Opcode::CollisionPairInserter::CD_Rot1

rotation of the first mesh

◆ CD_Rot2

cnoid::Matrix3 Opcode::CollisionPairInserter::CD_Rot2

rotation of the second mesh

◆ CD_s1

double Opcode::CollisionPairInserter::CD_s1

scale of the first mesh

◆ CD_s2

double Opcode::CollisionPairInserter::CD_s2

scale of the second mesh

◆ CD_Trans1

cnoid::Vector3 Opcode::CollisionPairInserter::CD_Trans1

translation of the first mesh

◆ CD_Trans2

cnoid::Vector3 Opcode::CollisionPairInserter::CD_Trans2

translation of the second mesh

◆ cdContact

std::vector<cnoid::collision_data> Opcode::CollisionPairInserter::cdContact

collision information

◆ models

cnoid::ColdetModelInternalModel* Opcode::CollisionPairInserter::models[2]

The documentation for this class was generated from the following file: