栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

2. wxWidgets之Box2D第2个示例:增加了一个圆形

Python 更新时间:发布时间: 百科书网 趣学号

Simple::Simple(const wxString& title)
    :wxframe(NULL,-1,title,wxPoint(-1,-1),wxSize(800,600))
{
    SetBackgroundStyle(wxBG_STYLE_PAINT);

    srand(time(NULL));
    timer = new wxTimer(this,-1);

    nWidth = GetSize().GetWidth();
    nHeight = GetSize().GetHeight();

    float x = 0.0f;//x轴重力
    float y = 10.0f;//y轴重力 9.8简化为10.0,方便计算
    b2Vec2 gravity(x, y);
    world = new b2World (gravity);

    //*** 一、画地面 ***
    //1.地面的运动各状态等属性
    b2BodyDef groundDef;
    groundDef.type = b2_staticBody;//地面是静止的
    groundDef.position = b2Vec2(0,(nHeight-50)/PTM_RATIO);//位置
    b2Body* groundBody = world->CreateBody(&groundDef);
    //2.形状
    b2PolygonShape groundShape;//多边形
    groundShape.SetAsBox(nHeight/PTM_RATIO,1);//在物理世界中的半长 的 半宽 是多少米
    //3.地面的属性
    b2FixtureDef groundFixtureDef;
    groundFixtureDef.shape = &groundShape;//形状
    groundFixtureDef.density = 1;//密度
    groundFixtureDef.friction = 0.3; //摩擦系数
    groundBody->CreateFixture(&groundFixtureDef);

    //*** 二、画物体 1 ***
    //1.物体的运动和状态相关属性,如类型、线速度、角速度等。
    b2BodyDef def;
    def.position = b2Vec2(64/PTM_RATIO,3/PTM_RATIO);
    def.type = b2_dynamicBody;
    def.linearVelocity = b2Vec2(0,10.0);
    b2Body* body = world->CreateBody(&def);
    //2.物体形状
    b2PolygonShape shape;
    shape.SetAsBox(0.5/PTM_RATIO,0.5/PTM_RATIO);//设定边框.这是一个向量,本质上说他就是一个形状的中心坐标
    //3.物体的物质属性,如密度、摩擦系数、弹性系数等,还有物体的形状。
    b2FixtureDef fixtureDef;
    fixtureDef.shape = &shape;
    fixtureDef.density =1;//密度
    fixtureDef.friction =0.3;//摩擦系数
    fixtureDef.restitution =0.1;//弹性
    body->CreateFixture(&fixtureDef);

    //*** 三、画物体 2 球形 ***
    //1.物体的运动和状态相关属性,如类型、线速度、角速度等。
    b2BodyDef defCircle;
    defCircle.type = b2_dynamicBody;
    defCircle.position = b2Vec2(164/PTM_RATIO,3/PTM_RATIO);
    defCircle.linearVelocity = b2Vec2(0,10.0);
    defCircle.linearDamping = 0.3;
    b2Body* bodyCircle = world->CreateBody(&defCircle);
    //2.物体形状
    b2CircleShape shapeCircle;
    shapeCircle.m_p = b2Vec2(0,0);
    shapeCircle.m_radius =0.5/PTM_RATIO;
//    shapeCircle.SetAsBox(0.5,0.5);//设定边框.这是一个向量,本质上说他就是一个形状的中心坐标
    //3.物体的物质属性,如密度、摩擦系数、弹性系数等,还有物体的形状。
    b2FixtureDef fixtureDefCircle;
    fixtureDefCircle.shape = &shapeCircle;
    fixtureDefCircle.density =1;//密度
    fixtureDefCircle.friction =0.6;//摩擦系数
    fixtureDefCircle.restitution =0.6;//弹性
    bodyCircle->CreateFixture(&fixtureDefCircle);

    // simullation.
    timeStep = 1.0f / 60.0f;//delta延迟几秒的画面
    velocityIterations = 8;//
    positionIterations = 3;//


    Bind(wxEVT_PAINT,wxPaintEventHandler(Simple::OnPaint),this);
    Bind(wxEVT_TIMER,wxCommandEventHandler( Simple::OnTimer),this);

    timer->Start(100);
    Centre();
}

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/272830.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号