我要发帖 回复

中级会员

13

主题

237

积分

0

专家分

:

私信
发表时间 : 2014-5-17 10:08:38 | 浏览 : 1631    评论 : 12

想在VC里面调用c:\\c.txt的数据,控制坦克炮塔转动的程序如下:
不知道有什么错,我是根据帖子改的,请大家指出我错在哪里?怎么控制转动的速度呢?
case vrWindow::KEY_X: // slew the turret

        float Hh, stu[15];     int i;        FILE *fp;
                if ((fp=fopen("c:\\c.txt","rt"))==NULL)
                    {                                     MessageBox(NULL,"无法打开文件","",MB_OK);
                            exit (0);                               }
  for(i=0;i<15;i++)
        {        fscanf(fp,"%f ",stu);
                Hh=stu;                    }
                                       m_turret->setRotate(Hh, 0.0f, 0.0f );
            break;

        vc运行显示的错误
CUOWU.JPG    

最近VR访客

csutest 评论于2014-5-17 15:03:03
断点在哪里
xiao_rong 评论于2014-5-17 17:43:31
for(i=0;i<15;i++)      
  {        fscanf(fp,"%f ",stu);  //指针不变吗?是不是应该stu+i?
            Hh=stu;      //这里有问题呀,将float*赋值给float?是不是应该Hh=stu[i];?            
}

你这个循环一次读15个数据想干什么?只见打开文件,没见文件是在哪里关闭?
191966331 评论于2014-5-17 18:17:26
xiao_rong 发表于 2014-5-17 05:43 PM
for(i=0;i

恩。谢谢。我想完成这个功能,能么做呢?
http://www.52vr.com/bbs/forum.ph ... 6orderby%3Dlastpost
xiao_rong 评论于2014-5-17 18:21:08
191966331 发表于 2014-5-17 06:17 PM
恩。谢谢。我想完成这个功能,能么做呢?
http://www.52vr.com/bbs/forum.php?mod=viewthread&tid=13331& ...

在帧循环里每次从文件读一个数据,然后改变所要控制对象的位置和方向。
当然,可以在初始化时将文件数据一次性读到一个缓冲区里,然后在帧循环里移动缓冲区指针即可。
sichuanwww 评论于2014-5-18 08:24:58
191966331 发表于 2014-5-17 06:17 PM
恩。谢谢。我想完成这个功能,能么做呢?
http://www.52vr.com/bbs/forum.php?mod=viewthread&tid=13331& ...

先一次性的把数据读出来,然后另起一个线程,依次旋转。当然,每旋转一个姿态,应该有延时,::Sleep(100);
努力挣钱,快乐生活!
191966331 评论于2014-5-18 10:03:21
sichuanwww 发表于 2014-5-18 08:24 AM
先一次性的把数据读出来,然后另起一个线程,依次旋转。当然,每旋转一个姿态,应该有延时,::Sleep(100) ...

那如果是飞行仿真数据呢?姿态和时间怎么对应?
sichuanwww 评论于2014-5-19 08:46:10
191966331 发表于 2014-5-18 10:03 AM
那如果是飞行仿真数据呢?姿态和时间怎么对应?

仿真数据一样的处理,估计姿态和时间对应要麻烦一些。最极端情况,每一个姿态对应一个时间段,但::Sleep();延迟时间比较粗糙,你可以每个点逐步修正。
努力挣钱,快乐生活!
191966331 评论于2014-5-20 13:25:53
sichuanwww 发表于 2014-5-19 08:46 AM
仿真数据一样的处理,估计姿态和时间对应要麻烦一些。最极端情况,每一个姿态对应一个时间段,但::Slee ...

那岂不是特别的费劲?
xiao_rong 评论于2014-5-20 15:18:26
191966331 发表于 2014-5-20 01:25 PM
那岂不是特别的费劲?

对于实时仿真数据,可在程序中:1--创建一个毫秒级的多媒体计时器,2--创建一个单独的数据采集线程。

在数据采集线程中用这个计时器精确控制数据的采样时刻,对于已经读到缓冲区的数据文件的数据就是按时移动指针,在帧循环线程中只管依据采集线程提供的当前数据更新目标状态即可。当然考虑一下线程同步。

1。采集线程只管按时采集数据。(或按时移动缓冲区指针)
2。帧循环线程只管依据采集线程提供的当前数据更新目标。
3。如果需要考虑一下线程同步。
xiao_rong 评论于2014-5-20 15:18:34
191966331 发表于 2014-5-20 01:25 PM
那岂不是特别的费劲?

对于实时仿真数据,可在程序中:1--创建一个毫秒级的多媒体计时器,2--创建一个单独的数据采集线程。

在数据采集线程中用这个计时器精确控制数据的采样时刻,对于已经读到缓冲区的数据文件的数据就是按时移动指针,在帧循环线程中只管依据采集线程提供的当前数据更新目标状态即可。当然考虑一下线程同步。

1。采集线程只管按时采集数据。(或按时移动缓冲区指针)
2。帧循环线程只管依据采集线程提供的当前数据更新目标。
3。如果需要考虑一下线程同步。
sichuanwww 评论于2014-5-21 09:04:12
191966331 发表于 2014-5-20 01:25 PM
那岂不是特别的费劲?

要逼真,当然费劲了。
努力挣钱,快乐生活!
191966331 评论于2014-5-23 17:16:53
xiao_rong 发表于 2014-5-20 03:18 PM
对于实时仿真数据,可在程序中:1--创建一个毫秒级的多媒体计时器,2--创建一个单独的数据采集线程。

在 ...

谢谢!不懂再请教你

手机版|VR开发网 ( 津ICP备18009691号 ) 统计 网安备12019202000257

GMT+8, 2020-11-24 11:46 AM

返回顶部