我要发帖 回复

中级会员

19

主题

163

积分

0

专家分

:

私信
发表时间 : 2010-3-15 14:37:52 | 浏览 : 2069    评论 : 11
本人刚学VP,想在VC里面调用matlab仿真出的飞机轨迹数据,控制飞机飞行的程序如下:不知道有什么错,我是根据例子改的,请大家指出我错在哪里?
    virtual void run( void )
{   
                       
          while ( s_vpKernel->beginFrame() != 0 )
                                {       
                           fly();
                                    s_vpKernel->endFrame();
                                }

}

void myApp::fly(){
        float  stu[3][SIZE];
        int i;
        FILE *fp;
       
        fp = fopen("afile.txt", "rt");
        for(i=0;i<SIZE;i++)
        {        fscanf(fp,"%f ","%f","%f",stu[0]+i,stu[1]+i,stu[2]+i);
                m_xyz[0]=stu[0][i];
                m_xyz[1]=stu[1][i];
                m_xyz[2]=stu[2][i];
       
        m_pPlane->setTranslate(m_xyz[0], m_xyz[1], m_xyz[2] );
                      m_pPlane->setRotate(0.0f, 0.0f, 0.0f );
        }
        fclose(fp);
}

最近VR访客

uestczhaowei 评论于2010-3-16 10:29:12
已解决!
sichuanwww 评论于2010-3-16 13:20:58
从起点直接飞到了终点。呵呵!
happyls 评论于2010-6-1 20:13:40
请问楼主是怎么解决的啊?我也遇到了类似的问题,还有你的run函数是写在那个类里的?急急急急~~~~
uestczhaowei 评论于2010-6-3 07:27:32
回复 4# happyls


    先把数据读入一个数组中存起来,然后给模型实时更换位置就可以了
happyls 评论于2010-6-3 09:38:05
谢谢楼主啊~~我是这样做的啊,可是为什么只能显示最后位置的那个数据呢?
uestczhaowei 评论于2010-6-3 10:04:17
回复 6# happyls


    从数组里面读一个数据然后赋一次值,读一次,赋值一次.............这样就可以了
happyls 评论于2010-6-3 10:06:40
void myApp::fly()
        {
                int j=0;
        float p0,p1,p2,r0,r1,r2;
                //int m,n;
                FILE *fp;
               
            if ((fp=fopen("takeoff.txt","r"))==NULL)
                        {
                                        printf("can't open the file\n");
                            exit (0);
                                }
                for(j=0;j<20;j++)
                                {
                                       
                                       
                                        fread(&takeoff[j],sizeof(struct flight),1,fp);
                                        p0=takeoff[j].x;
                            p1=takeoff[j].y;
                            p2=takeoff[j].z;
                                r0=takeoff[j].h;
                            r1=takeoff[j].p;
                            r2=takeoff[j].r;
                                        printf("%d %f %f %f %f %f %f\n",j,p0,p1,p2,r0,r1,r2);
                                        m_Target->setTranslate(p0,p1,p2);
                                        Sleep(1000);
                                       
                                       
                                }
                fclose(fp);
        }
happyls 评论于2010-6-3 10:07:22
请看一下错在哪里吧~谢谢啦~
uestczhaowei 评论于2010-6-3 11:21:44
回复 9# happyls

定义一个数组p[3][SIZE],SIZE为数据的个数;for循环把文件中的数据读入p这个数组中,
     把m_Target->setTranslate(p[0][k],p[1][k],p[2][k]);
放在for循环外面
happyls 评论于2010-6-5 00:02:24
可以了,谢谢啦~
191966331 评论于2014-5-17 10:23:39
sichuanwww 发表于 2010-3-16 01:20 PM
从起点直接飞到了终点。呵呵!

这个程序可以吗?

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

GMT+8, 2020-9-30 02:31 PM

返回顶部