box2d 计算自由落体下一帧的位置
2024-09-18 07:32:24
var dt:Number=1/30;
var y0:Number=_body.GetPosition().y;
var y:Number=y0+_body.GetLinearVelocity().y*dt+_world.GetGravity().y*dt*dt;
trace(y0, "y:"+y);
b2Island中的实现:
var l_gravity:b2Vec2=b.m_customGravity?b.m_customGravity:gravity;
//==============================added================================
// Integrate velocities.
//b.m_linearVelocity += step.dt * (gravity + b.m_invMass * b.m_force);
b.m_linearVelocity.x += step.dt * (l_gravity.x + b.m_invMass * b.m_force.x);
b.m_linearVelocity.y += step.dt * (l_gravity.y + b.m_invMass * b.m_force.y);
b.m_angularVelocity += step.dt * b.m_invI * b.m_torque; // Apply damping.
// ODE: dv/dt + c * v = 0
// Solution: v(t) = v0 * exp(-c * t)
// Time step: v(t + dt) = v0 * exp(-c * (t + dt)) = v0 * exp(-c * t) * exp(-c * dt) = v * exp(-c * dt)
// v2 = exp(-c * dt) * v1
// Taylor expansion:
// v2 = (1.0f - c * dt) * v1
b.m_linearVelocity.Multiply( b2Math.Clamp(1.0 - step.dt * b.m_linearDamping, 0.0, 1.0) );
b.m_angularVelocity *= b2Math.Clamp(1.0 - step.dt * b.m_angularDamping, 0.0, 1.0);
角度:
var dt:Number=1/30;
var ang:Number=_body.GetAngle(); var angV:Number=_body.GetAngularVelocity();
angV += dt * _body.m_invI * _body.m_torque;
angV*=dt
angV *= b2Math.Clamp(1.0 - dt * _body.m_angularDamping, 0.0, 1.0); var nextAng:Number=ang+angV;
/*trace("ang:",ang);
trace("angV:",angV);
trace("nextAng:",nextAng+"\n");*/
LinearVelocity与像素的关系:
不考虑摩擦,刚体质量为1,无重力的情况下
linearVelocity*dt=distancePixel(像素距离)/ptm_ratio(像素到b2World单位)
最新文章
- FineUI(开源版)v6.0中FState服务器端验证的实现原理
- How To Install Proxmox Nested on VMware ESXi (Full Support OpenVZ &; KVM)
- 使用jQuery+PHP+Mysql实现抽奖程序
- 算法:二分查找(python版)
- JavaScript(一)——简介(简单介绍)
- 数据结构算法C语言实现(二)---2.3线性表的链式表示和实现之单链表
- CSS自定义弹出框
- Selenium中expected_conditions下text_to_be_present_in_element_value方法的使用
- 【mongoDB基础篇②】PHP-mongo扩展的编译以及使用
- 如何快速的开发一个完整的iOS直播app(原理篇)
- Mina入门实例
- 应用程序无法启动,因为应用程序的并行配置不正确,有关详细信息,请参阅应用程序事件日志,或使用命令行SxsTrace.exe工具
- OpenGL—Android 开机动画源码分析二
- Tomcat源码分析(一)
- Tomcat 日志分割
- Python/MySQL(三、pymysql使用)
- 使用poi根据模版生成word文档,支持插入数据和图片
- Substr与mb_substr区别
- 添加浏览器back操作时的响应事件
- liunx rm 命令修改