我要发帖 回复

中级会员

16

主题

616

积分

0

专家分

兴趣点(最多三项):

视景仿真

私信
发表时间 : 2011-11-11 10:10:27 | 浏览 : 1380    评论 : 5
各位高手请教一个问题,我在做一个模拟炮弹轨迹的场景,用到了解微分方程
dv/dt=-CH(y)F(v)-gsinA
dA/dt=-gcosA/v
dy/dt=vsinA
dx/dt=vcosA
我用等步长的龙哥库塔法解出了方程得到一系列数
  T(s)   V(m/s)   Theta     X(m)       Y(m)
  0.00   550.00   60.00     0.000     0.000
  1.00   541.54   59.48   275.000   471.414
  2.00   533.12   58.95   550.000   933.028
  3.00   524.74   58.39   824.999  1384.842
  4.00   516.42   57.82  1099.999  1826.856
  5.00   508.16   57.24  1374.999  2259.070
。。。。。。。。。。。。。。。。。。。。
现在的问题是如何将对应时间的x,y值赋给炮弹,让炮弹在相应的仿真时间到达正确的位置,希望各位不吝赐教,感激不尽!

最近VR访客

single010203专家组 评论于2011-11-11 10:56:35
需要类型知道,帮你顶一个,
yinguohua889 评论于2011-11-12 00:13:40
自己顶一下
superdemo 评论于2011-11-15 21:29:34
1 先了解坐标系,vp中坐标是右、前、上对应xyz的正向。
2 从你的表格数据看,可以使用在YOZ面进行炮弹坐标的绘制(x为恒定值,y对应表格x,z对应表格的y)
3 怎样平滑处理? 表格里坐标是离散点的坐标,怎样在中间点进行插值让仿真更平滑。(比如两点之间可以采用线性插值计算)
  1. 4 vpObject *obj=vpObject::find("gunbomb");
  2. if(obj)
  3. {
  4. obj->setPosition(x,y,z);
  5. obj->setOrientation(h,p,r);

  6. }
复制代码
5 如果速度V和Theta(俯仰角?)也使用上,可能就更逼真了。
yinguohua889 评论于2011-11-16 09:41:45
superdemo 发表于 2011-11-15 09:29 PM
1 先了解坐标系,vp中坐标是右、前、上对应xyz的正向。
2 从你的表格数据看,可以使用在YOZ面进行炮弹坐标 ...

感谢superdemo 的不吝赐教,但是我现在不清楚是如何把vp仿真中的时间和表格中的时间对应起来,让炮弹在正确的时间到达正确的位置,我自己现在使用的添加路径点的方法弄的,设置点与点之间的时间为步长,基本也能实现了,不过用路径比较麻烦,我不会直接用代码创建导航和路径,Lynx导出的路径初始化代码我复制到vc中老是提示错误,少类,superdemo 高手能指教一下如何快速用代码添加导航和路径吗?感激不尽
cneter 评论于2011-11-17 09:10:17
当你导弹发射时记录时间startTime=vuTime::get();
然后在帧循环中先判断vuTime::get() - startTime 的值情况,根据你的点计算出插值(贝塞尔曲线?)放置导弹

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

GMT+8, 2021-1-26 12:47 AM

返回顶部