DART
6.10.1
Contact.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2011-2021, The DART development contributors
3
* All rights reserved.
4
*
5
* The list of contributors can be found at:
6
* https://github.com/dartsim/dart/blob/master/LICENSE
7
*
8
* This file is provided under the following "BSD-style" License:
9
* Redistribution and use in source and binary forms, with or
10
* without modification, are permitted provided that the following
11
* conditions are met:
12
* * Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
* * Redistributions in binary form must reproduce the above
15
* copyright notice, this list of conditions and the following
16
* disclaimer in the documentation and/or other materials provided
17
* with the distribution.
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
19
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
20
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
* POSSIBILITY OF SUCH DAMAGE.
31
*/
32
33
#ifndef DART_COLLISION_CONTACT_HPP_
34
#define DART_COLLISION_CONTACT_HPP_
35
36
#include <Eigen/Dense>
37
#include "
dart/collision/SmartPointer.hpp
"
38
#include "
dart/dynamics/SmartPointer.hpp
"
39
40
namespace
dart
{
41
namespace
collision {
42
44
struct
Contact
45
{
47
Contact
();
48
50
Eigen::Vector3d
point
;
51
53
Eigen::Vector3d
normal
;
54
59
Eigen::Vector3d
force
;
60
62
CollisionObject
*
collisionObject1
;
63
65
CollisionObject
*
collisionObject2
;
66
68
double
penetrationDepth
;
69
70
// TODO(JS): triID1 will be deprecated when we don't use fcl_mesh
72
int
triID1
;
73
74
// TODO(JS): triID2 will be deprecated when we don't use fcl_mesh
76
int
triID2
;
77
78
// TODO(JS): userData is an experimental variable.
80
void
*
userData
;
81
83
constexpr
static
double
getNormalEpsilon
();
84
87
constexpr
static
double
getNormalEpsilonSquared
();
88
90
static
bool
isZeroNormal
(
const
Eigen::Vector3d&
normal
);
91
93
static
bool
isNonZeroNormal
(
const
Eigen::Vector3d&
normal
);
94
};
95
96
}
// namespace collision
97
}
// namespace dart
98
99
#include "
dart/collision/detail/Contact-impl.hpp
"
100
101
#endif
// DART_COLLISION_CONTACT_HPP_
Contact-impl.hpp
dart::collision::CollisionObject
Definition:
CollisionObject.hpp:45
SmartPointer.hpp
SmartPointer.hpp
dart
Definition:
BulletCollisionDetector.cpp:65
dart::collision::Contact
Contact information.
Definition:
Contact.hpp:45
dart::collision::Contact::collisionObject1
CollisionObject * collisionObject1
First colliding collision object.
Definition:
Contact.hpp:62
dart::collision::Contact::force
Eigen::Vector3d force
Contact force acting on bodyNode1 w.r.t.
Definition:
Contact.hpp:59
dart::collision::Contact::penetrationDepth
double penetrationDepth
Penetration depth.
Definition:
Contact.hpp:68
dart::collision::Contact::userData
void * userData
User data.
Definition:
Contact.hpp:80
dart::collision::Contact::triID2
int triID2
Definition:
Contact.hpp:76
dart::collision::Contact::triID1
int triID1
Definition:
Contact.hpp:72
dart::collision::Contact::point
Eigen::Vector3d point
Contact point w.r.t. the world frame.
Definition:
Contact.hpp:50
dart::collision::Contact::normal
Eigen::Vector3d normal
Contact normal vector from bodyNode2 to bodyNode1 w.r.t. the world frame.
Definition:
Contact.hpp:53
dart::collision::Contact::isNonZeroNormal
static bool isNonZeroNormal(const Eigen::Vector3d &normal)
Returns !isZeroNormal().
Definition:
Contact.cpp:64
dart::collision::Contact::isZeroNormal
static bool isZeroNormal(const Eigen::Vector3d &normal)
Returns true if the length of a normal is less than the epsilon.
Definition:
Contact.cpp:55
dart::collision::Contact::Contact
Contact()
Default constructor.
Definition:
Contact.cpp:39
dart::collision::Contact::getNormalEpsilon
constexpr static double getNormalEpsilon()
Returns the epsilon to be used for determination of zero-length normal.
Definition:
Contact-impl.hpp:42
dart::collision::Contact::collisionObject2
CollisionObject * collisionObject2
Second colliding collision object.
Definition:
Contact.hpp:65
dart::collision::Contact::getNormalEpsilonSquared
constexpr static double getNormalEpsilonSquared()
Returns the squired epsilon to be used for determination of zero-length normal.
Definition:
Contact-impl.hpp:48
dart
collision
Contact.hpp
Generated on Tue Nov 12 2024 05:51:40 for DART by
1.9.1