⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 odecpp.h

📁 坦克的车辆动态特性模拟
💻 H
📖 第 1 页 / 共 2 页
字号:
/************************************************************************* *									 * * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.	 * * All rights reserved.  Email: russ@q12.org   Web: www.q12.org 	 * *									 * * This library is free software; you can redistribute it and/or	 * * modify it under the terms of EITHER: 				 * *   (1) The GNU Lesser General Public License as published by the Free  * *	 Software Foundation; either version 2.1 of the License, or (at  * *	 your option) any later version. The text of the GNU Lesser	 * *	 General Public License is included with this library in the	 * *	 file LICENSE.TXT.						 * *   (2) The BSD-style license that is included with this library in	 * *	 the file LICENSE-BSD.TXT.					 * *									 * * This library is distributed in the hope that it will be useful,	 * * but WITHOUT ANY WARRANTY; without even the implied warranty of	 * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files	 * * LICENSE.TXT and LICENSE-BSD.TXT for more details.			 * *									 * *************************************************************************//* C++ interface for non-collision stuff */#ifndef _ODE_ODECPP_H_#define _ODE_ODECPP_H_#ifdef __cplusplus#include <ode/error.h>class dWorld {  dWorldID _id;  // intentionally undefined, don't use these  dWorld (const dWorld &);  void operator= (const dWorld &);public:  dWorld()    { _id = dWorldCreate(); }  ~dWorld()    { dWorldDestroy (_id); }  dWorldID id() const    { return _id; }  operator dWorldID() const    { return _id; }  void setGravity (dReal x, dReal y, dReal z)    { dWorldSetGravity (_id,x,y,z); }  void getGravity (dVector3 g) const    { dWorldGetGravity (_id,g); }  void setERP (dReal erp)    { dWorldSetERP(_id, erp); }  dReal getERP() const    { return dWorldGetERP(_id); }  void setCFM (dReal cfm)    { dWorldSetCFM(_id, cfm); }  dReal getCFM() const    { return dWorldGetCFM(_id); }  void step (dReal stepsize)    { dWorldStep (_id,stepsize); }  void stepFast1 (dReal stepsize, int maxiterations)    { dWorldStepFast1 (_id,stepsize,maxiterations); }  void setAutoEnableDepthSF1(dWorldID, int depth)    { dWorldSetAutoEnableDepthSF1 (_id, depth); }  int getAutoEnableDepthSF1(dWorldID)    { return dWorldGetAutoEnableDepthSF1 (_id); }  void  setAutoDisableLinearThreshold (dReal threshold)     { dWorldSetAutoDisableLinearThreshold (_id,threshold); }  dReal getAutoDisableLinearThreshold()    { return dWorldGetAutoDisableLinearThreshold (_id); }  void setAutoDisableAngularThreshold (dReal threshold)    { dWorldSetAutoDisableAngularThreshold (_id,threshold); }  dReal getAutoDisableAngularThreshold()    { return dWorldGetAutoDisableAngularThreshold (_id); }  void setAutoDisableSteps (int steps)    { dWorldSetAutoDisableSteps (_id,steps); }  int getAutoDisableSteps()    { return dWorldGetAutoDisableSteps (_id); }  void setAutoDisableTime (dReal time)    { dWorldSetAutoDisableTime (_id,time); }  dReal getAutoDisableTime()    { return dWorldGetAutoDisableTime (_id); }  void setAutoDisableFlag (int do_auto_disable)    { dWorldSetAutoDisableFlag (_id,do_auto_disable); }  int getAutoDisableFlag()    { return dWorldGetAutoDisableFlag (_id); }  void impulseToForce (dReal stepsize, dReal ix, dReal iy, dReal iz,		       dVector3 force)    { dWorldImpulseToForce (_id,stepsize,ix,iy,iz,force); }};class dBody {  dBodyID _id;  // intentionally undefined, don't use these  dBody (const dBody &);  void operator= (const dBody &);public:  dBody()    { _id = 0; }  dBody (dWorldID world)    { _id = dBodyCreate (world); }  ~dBody()    { if (_id) dBodyDestroy (_id); }  void create (dWorldID world) {    if (_id) dBodyDestroy (_id);    _id = dBodyCreate (world);  }  dBodyID id() const    { return _id; }  operator dBodyID() const    { return _id; }  void setData (void *data)    { dBodySetData (_id,data); }  void *getData() const    { return dBodyGetData (_id); }  void setPosition (dReal x, dReal y, dReal z)    { dBodySetPosition (_id,x,y,z); }  void setRotation (const dMatrix3 R)    { dBodySetRotation (_id,R); }  void setQuaternion (const dQuaternion q)    { dBodySetQuaternion (_id,q); }  void setLinearVel  (dReal x, dReal y, dReal z)    { dBodySetLinearVel (_id,x,y,z); }  void setAngularVel (dReal x, dReal y, dReal z)    { dBodySetAngularVel (_id,x,y,z); }  const dReal * getPosition() const    { return dBodyGetPosition (_id); }  const dReal * getRotation() const    { return dBodyGetRotation (_id); }  const dReal * getQuaternion() const    { return dBodyGetQuaternion (_id); }  const dReal * getLinearVel() const    { return dBodyGetLinearVel (_id); }  const dReal * getAngularVel() const    { return dBodyGetAngularVel (_id); }  void setMass (const dMass *mass)    { dBodySetMass (_id,mass); }  void getMass (dMass *mass) const    { dBodyGetMass (_id,mass); }  void addForce (dReal fx, dReal fy, dReal fz)    { dBodyAddForce (_id, fx, fy, fz); }  void addTorque (dReal fx, dReal fy, dReal fz)    { dBodyAddTorque (_id, fx, fy, fz); }  void addRelForce (dReal fx, dReal fy, dReal fz)    { dBodyAddRelForce (_id, fx, fy, fz); }  void addRelTorque (dReal fx, dReal fy, dReal fz)    { dBodyAddRelTorque (_id, fx, fy, fz); }  void addForceAtPos (dReal fx, dReal fy, dReal fz,		      dReal px, dReal py, dReal pz)    { dBodyAddForceAtPos (_id, fx, fy, fz, px, py, pz); }  void addForceAtRelPos (dReal fx, dReal fy, dReal fz,		      dReal px, dReal py, dReal pz)    { dBodyAddForceAtRelPos (_id, fx, fy, fz, px, py, pz); }  void addRelForceAtPos (dReal fx, dReal fy, dReal fz,			 dReal px, dReal py, dReal pz)    { dBodyAddRelForceAtPos (_id, fx, fy, fz, px, py, pz); }  void addRelForceAtRelPos (dReal fx, dReal fy, dReal fz,			    dReal px, dReal py, dReal pz)    { dBodyAddRelForceAtRelPos (_id, fx, fy, fz, px, py, pz); }  const dReal * getForce() const    { return dBodyGetForce(_id); }  const dReal * getTorque() const    { return dBodyGetTorque(_id); }  void setForce (dReal x, dReal y, dReal z)    { dBodySetForce (_id,x,y,z); }  void setTorque (dReal x, dReal y, dReal z)    { dBodySetTorque (_id,x,y,z); }  void enable()    { dBodyEnable (_id); }  void disable()    { dBodyDisable (_id); }  int isEnabled() const    { return dBodyIsEnabled (_id); }  void getRelPointPos (dReal px, dReal py, dReal pz, dVector3 result) const    { dBodyGetRelPointPos (_id, px, py, pz, result); }  void getRelPointVel (dReal px, dReal py, dReal pz, dVector3 result) const    { dBodyGetRelPointVel (_id, px, py, pz, result); }  void getPointVel (dReal px, dReal py, dReal pz, dVector3 result) const    { dBodyGetPointVel (_id,px,py,pz,result); }  void getPosRelPoint (dReal px, dReal py, dReal pz, dVector3 result) const    { dBodyGetPosRelPoint (_id,px,py,pz,result); }  void vectorToWorld (dReal px, dReal py, dReal pz, dVector3 result) const    { dBodyVectorToWorld (_id,px,py,pz,result); }  void vectorFromWorld (dReal px, dReal py, dReal pz, dVector3 result) const    { dBodyVectorFromWorld (_id,px,py,pz,result); }  void setFiniteRotationMode (int mode)    { dBodySetFiniteRotationMode (_id, mode); }  void setFiniteRotationAxis (dReal x, dReal y, dReal z)    { dBodySetFiniteRotationAxis (_id, x, y, z); }  int getFiniteRotationMode() const    { return dBodyGetFiniteRotationMode (_id); }  void getFiniteRotationAxis (dVector3 result) const    { dBodyGetFiniteRotationAxis (_id, result); }  int getNumJoints() const    { return dBodyGetNumJoints (_id); }  dJointID getJoint (int index) const    { return dBodyGetJoint (_id, index); }  void setGravityMode (int mode)    { dBodySetGravityMode (_id,mode); }  int getGravityMode() const    { return dBodyGetGravityMode (_id); }  int isConnectedTo (dBodyID body) const    { return dAreConnected (_id, body); }  void  setAutoDisableLinearThreshold (dReal threshold)     { dBodySetAutoDisableLinearThreshold (_id,threshold); }  dReal getAutoDisableLinearThreshold()    { return dBodyGetAutoDisableLinearThreshold (_id); }  void setAutoDisableAngularThreshold (dReal threshold)    { dBodySetAutoDisableAngularThreshold (_id,threshold); }  dReal getAutoDisableAngularThreshold()    { return dBodyGetAutoDisableAngularThreshold (_id); }  void setAutoDisableSteps (int steps)    { dBodySetAutoDisableSteps (_id,steps); }  int getAutoDisableSteps()    { return dBodyGetAutoDisableSteps (_id); }  void setAutoDisableTime (dReal time)    { dBodySetAutoDisableTime (_id,time); }  dReal getAutoDisableTime()    { return dBodyGetAutoDisableTime (_id); }  void setAutoDisableFlag (int do_auto_disable)    { dBodySetAutoDisableFlag (_id,do_auto_disable); }  int getAutoDisableFlag()    { return dBodyGetAutoDisableFlag (_id); }};class dJointGroup {  dJointGroupID _id;  // intentionally undefined, don't use these  dJointGroup (const dJointGroup &);  void operator= (const dJointGroup &);public:  dJointGroup (int dummy_arg=0)    { _id = dJointGroupCreate (0); }  ~dJointGroup()    { dJointGroupDestroy (_id); }  void create (int dummy_arg=0) {    if (_id) dJointGroupDestroy (_id);    _id = dJointGroupCreate (0);  }  dJointGroupID id() const    { return _id; }  operator dJointGroupID() const    { return _id; }  void empty()    { dJointGroupEmpty (_id); }};class dJoint {private:  // intentionally undefined, don't use these  dJoint (const dJoint &) ;  void operator= (const dJoint &);protected:  dJointID _id;public:  dJoint()    { _id = 0; }  ~dJoint()    { if (_id) dJointDestroy (_id); }  dJointID id() const    { return _id; }  operator dJointID() const    { return _id; }  void attach (dBodyID body1, dBodyID body2)    { dJointAttach (_id, body1, body2); }  void setData (void *data)    { dJointSetData (_id, data); }  void *getData() const    { return dJointGetData (_id); }  int getType() const

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -