标签: ode-library

管理与C#的非托管物理引擎

有人试过BEPU Physic Engine吗? http://bepuphysics.codeplex.com/

它是一个用C#编写的完全托管的物理引擎......我知道它主要用于XNA(XBOX和WP7项目),因为不允许使用非托管代码.

但我想知道的是如何将完全托管的物理引擎与Windows环境中的P/Invoked One(例如tao.ODE)进行比较(在性能方面)?

换句话说,哪个方法在Real Project中围绕非托管引擎(如ODE或PhysX)进行更多开销,完全托管代码或P/Invoke Wrapper?

.net c# pinvoke ode-library

3
推荐指数
1
解决办法
1498
查看次数

将四元数转换为欧拉角.Y角度范围的问题

我正在尝试使用Irrlicht作为图形引擎和物理ODE在C++中编写3D模拟.然后我使用函数将ODE四元数转换为Irrlicht Euler角度.为了做到这一点,我正在使用此代码.

void QuaternionToEuler(const dQuaternion quaternion, vector3df &euler)
{
    dReal w,x,y,z;

    w = quaternion[0];
    x = quaternion[1];
    y = quaternion[2];
    z = quaternion[3];

    double sqw = w*w;    
    double sqx = x*x;    
    double sqy = y*y;    
    double sqz = z*z; 

    euler.Z = (irr::f32) (atan2(2.0 * (x*y + z*w),(sqx - sqy - sqz + sqw)) * (180.0f/irr::core::PI));
    euler.X = (irr::f32) (atan2(2.0 * (y*z + x*w),(-sqx - sqy + sqz + sqw)) * (180.0f/irr::core::PI));          
    euler.Y = (irr::f32) (asin(-2.0 * (x*z - y*w)) * …
Run Code Online (Sandbox Code Playgroud)

c++ math 3d irrlicht ode-library

1
推荐指数
1
解决办法
1万
查看次数

C++字符串和内存管理

我现在正致力于一个涉及模拟机器人手臂控制的相当复杂的项目.我完成了项目的第一个版本,它工作正常.我刚刚添加了一些新代码,它们在每次迭代时收集有关系统的一些信息,将其保存在某些数组中,最后将所有内容打印在文件中以供以后分析.

现在,真正奇怪的事情正在发生.如果我定义将保存数据的文件如下:

const std::string SAVEFILE = "C:\\Users\\Vincent\\Desktop\\ta";
Run Code Online (Sandbox Code Playgroud)

一切正常,与我添加新代码之前完全相同(加上保存数据).

但如果我将其定义如下:

const std::string SAVEFILE = "C:\\Users\\Vincent\\Desktop\\tacit.txt";
Run Code Online (Sandbox Code Playgroud)

然后系统以另一种方式运行.不会崩溃,但机械臂的移动方式不同.

我试图评论使用SAVEFILE的所有代码,甚至是与数据保存相关的任何新代码,但问题仍然存在.

我知道只有这些信息,任何人都不可能告诉我什么是错的,但有人会有什么建议吗?认为长字符串会覆盖其他变量的值会有意义吗?怎么可能?干净的C++编程的一些准则我可能已经破坏了?

有些阵列是行为不端的声音,这是我检查的第一件事.我想它应该来自保存数据的数组,因为它们是唯一的新数据.事情就是,即使我评论所有相应的代码,也没有变化.

我尝试提供有关我的代码的更多信息.这里我首先使用SAVEFILE(runExperiment函数的最后一个参数)

int main(int argc, char *argv[])    {
  std::vector<Controller*> controllers;
  controllers.push_back(getConstrainedPDT(0,true));
  controllers.push_back(getConstrainedPDT(1,true));
  controllers.push_back(getConstrainedPDT(2,true));
  runExperiment(controllers,LENGTHS,WEIGHTS,RADIUS,ANGLEMIN,ANGLEMAX,MAXTORQUES,PUSHVECTOR,GRAVITY,RUNTIME,TIMESTEP,XTARGET,YTARGET,ITERATIONSAVEDATA,SAVEFILE);
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

这里是函数的代码:

void runExperiment(std::vector<Controller*> controllers,const double * lengths, const double* weights, const double radius, const double* angleMin, const double* angleMax, const double* maxTorques,const double* pushVector,const dReal gravity,const dReal runTime,const dReal tstep,const dReal targetX,const dReal targetY,const int itSaveData,const std::string saveFile){

  endTime = runTime;
  simTime = 0.0;
  timeStep = …
Run Code Online (Sandbox Code Playgroud)

c++ memory string ode-library

1
推荐指数
1
解决办法
355
查看次数

我需要多线程来完成这个项目吗?

目标平台: Windows XP高中计算机

需要的库: SFML,GLEW,ODE,Python(用于嵌入)

计划的功能让我相信我可能需要多线程:

  1. 多达一百个机器人全部实时解释python脚本.
  2. 所有机器人及其组件在物理模拟中与其环境相关.
  3. 在玩家周围的大部分中生成详细的环境.
  4. 游戏运行时可能需要将文件写入硬盘.
  5. (除了这些功能,目标平台让我担心)

我需要多线程来完成这个项目吗?

c++ python multithreading sfml ode-library

-1
推荐指数
1
解决办法
206
查看次数

标签 统计

ode-library ×4

c++ ×3

.net ×1

3d ×1

c# ×1

irrlicht ×1

math ×1

memory ×1

multithreading ×1

pinvoke ×1

python ×1

sfml ×1

string ×1