/usr/include/libwildmagic/Wm5RigidBody.h is in libwildmagic-dev 5.13-1ubuntu3.
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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | // Geometric Tools, LLC
// Copyright (c) 1998-2014
// Distributed under the Boost Software License, Version 1.0.
// http://www.boost.org/LICENSE_1_0.txt
// http://www.geometrictools.com/License/Boost/LICENSE_1_0.txt
//
// File Version: 5.0.1 (2010/10/01)
#ifndef WM5RIGIDBODY_H
#define WM5RIGIDBODY_H
#include "Wm5PhysicsLIB.h"
#include "Wm5Matrix3.h"
#include "Wm5Quaternion.h"
namespace Wm5
{
template <typename Real>
class WM5_PHYSICS_ITEM RigidBody
{
public:
// Construction and destruction. The rigid body state is uninitialized.
// Use the set functions to initialize the state before starting the
// simulation.
RigidBody ();
virtual ~RigidBody ();
// Set/get position.
Vector3<Real>& Position ();
// Set rigid body state.
void SetMass (float mass);
void SetBodyInertia (const Matrix3<Real>& inertia);
void SetPosition (const Vector3<Real>& position);
void SetQOrientation (const Quaternion<Real>& quatOrient);
void SetLinearMomentum (const Vector3<Real>& linearMomentum);
void SetAngularMomentum (const Vector3<Real>& angularMomentum);
void SetROrientation (const Matrix3<Real>& rotOrient);
void SetLinearVelocity (const Vector3<Real>& linearVelocity);
void SetAngularVelocity (const Vector3<Real>& angularVelocity);
// Get rigid body state.
Real GetMass () const;
Real GetInverseMass () const;
const Matrix3<Real>& GetBodyInertia () const;
const Matrix3<Real>& GetBodyInverseInertia () const;
Matrix3<Real> GetWorldInertia () const;
Matrix3<Real> GetWorldInverseInertia () const;
const Vector3<Real>& GetPosition () const;
const Quaternion<Real>& GetQOrientation () const;
const Vector3<Real>& GetLinearMomentum () const;
const Vector3<Real>& GetAngularMomentum () const;
const Matrix3<Real>& GetROrientation () const;
const Vector3<Real>& GetLinearVelocity () const;
const Vector3<Real>& GetAngularVelocity () const;
// Force/torque function format.
typedef Vector3<Real> (*Function)
(
Real, // time of application
Real, // mass
const Vector3<Real>&, // position
const Quaternion<Real>&, // orientation
const Vector3<Real>&, // linear momentum
const Vector3<Real>&, // angular momentum
const Matrix3<Real>&, // orientation
const Vector3<Real>&, // linear velocity
const Vector3<Real>& // angular velocity
);
// Force and torque functions.
Function mForce;
Function mTorque;
// Runge-Kutta fourth-order differential equation solver
void Update (Real t, Real dt);
protected:
// Constant quantities (matrices in body coordinates).
Real mMass, mInvMass;
Matrix3<Real> mInertia, mInvInertia;
// State variables.
Vector3<Real> mPosition;
Quaternion<Real> mQuatOrient;
Vector3<Real> mLinearMomentum;
Vector3<Real> mAngularMomentum;
// Derived state variables.
Matrix3<Real> mRotOrient;
Vector3<Real> mLinearVelocity;
Vector3<Real> mAngularVelocity;
};
typedef RigidBody<float> RigidBodyf;
typedef RigidBody<double> RigidBodyd;
}
#endif
|