精华内容
下载资源
问答
  • 单一形状的刚体与复合形状的刚体

    千次阅读 2011-02-14 20:26:00
    一.创建单一形状的刚体步骤 Cp-t/^ y0 ...用b2World根据刚体定义创建刚体body,即body = world.CreateBody(b2BodyDef);将形状附加到body,即多边形body.CreateShape(b2PolygonDef)或圆形body.Create

    一.创建单一形状的刚体步骤

    Cp-t/^y0

    1. 创建形状定义(b2PolygonDef,b2CircleDef等);
    2. 创建刚体定义(b2BodyDef)
    3. b2World根据刚体定义创建刚体body,即body = world.CreateBody(b2BodyDef);
    4. 将形状附加到body,即多边形body.CreateShape(b2PolygonDef)或圆形body.CreateShape(b2CircleDef)
    5. 根据刚体附加的形状来设置刚体的质量,即body.SetMassFromShapes()

    这样world根据一个刚体定义(b2BodyDef),创建一个刚体(b2Body),这个刚体附加一个形状(b2PolygonDef或者b2CircleDef),这样创建出来的就是单一形状的刚体。具体的例子可以看我前面写的日志。

    sLaBqxQ0

     闪吧新社区 {]`C5Yu

    二.创建复合形状的刚体。闪吧新社区7J@/xBa+F Ec(sE

    与单一刚体不同的是,在上述第四步将多个形状附加给一个刚体,然后再继续第五步,即可以创建出多余一个形状的刚体。核心代码如下:


    此处要注意的是,设置复合刚体的子形状时,如果是用的 b2PolygonDef 形状,则用 SetAsOrientedBox 方法来设置子形状的宽,高,位置,角度;如果是用的 b2CircleDef 形状,则用 localPosition 属性来设置子形状的位置,半径由 radius 属性决定。

     

     

    原文地址:http://space.flash8.net/space/?628770/viewspace-444115.html

    展开全文
  • 物理引擎Box2D之刚体

    2013-04-22 23:21:17
    刚体代表一个质点,因此它只有位置,没有大小。物理引擎Box2D把刚体分为三种类型。 1、静态刚体。静态刚体没有质量,没有速度,如果你想改变它的位置,只能通过...刚体和刚体定义 的定义结构在Box2D/Dynamics/b2Body.h

    刚体代表一个质点,因此它只有位置,没有大小。物理引擎Box2D把刚体分为三种类型。
    1、静态刚体。静态刚体没有质量,没有速度,如果你想改变它的位置,只能通过代码修改。
    2、棱柱刚体。棱柱刚体没有质量,但有速度,引擎会根据速度计算并更新它的位置。
    3、动态刚体。动态刚体有质量也可以有速度,这是我们最常用的刚体类型

    刚体和刚体定义 的定义结构在Box2D/Dynamics/b2Body.h里面,创建刚体时需要完成两个步骤,一是生成一个刚体定义,二是根据刚体定义生成刚体,示例代码如下:

    //生成一个刚体定义
    b2BodyDef groundBodyDef;
    groundBodyDef.position.Set(0,0);
    
    //是根据刚体定义生成刚体
    b2Body *groundBody=world->CreateBody(groundBodyDef);
    版权信息:原创文章:咸蛋博客
    本文链接:http://xiandanboke.com.cn/?p=801转载请注明转自咸蛋博客
    展开全文
  • 创建组合的刚体

    2010-04-08 22:40:00
    要创建组合刚体,可以分别创建多个形状...先定义刚体定义(用来创建组合刚体),设置刚体位置,并创建刚体实例。 var bodyDef:b2BodyDef = new b2BodyDef(); bodyDef.position.Set(275 / PhyOption.PHYSCALE, 0 / P...

    要创建组合刚体,可以分别创建多个形状定义,然后在同一个刚体实例上调用多次CreateShape(b2ShapeDef)。核心代码如下:

    1。先定义刚体定义(用来创建组合刚体),设置刚体位置,并创建刚体实例。

    var bodyDef:b2BodyDef = new b2BodyDef();

    bodyDef.position.Set(275 / PhyOption.PHYSCALE, 0 / PhyOption.PHYSCALE);

    var body:b2Body = PhyOption.getInstance().world.CreateBody(bodyDef);

    PhyOption是我自定义的类是一个单例,里面保存有物理世界的长度单位,重力常量,world引用等。

    2。创建第一个组合进去的形状(凸多边形)

    var rectShapeDef:b2PolygonDef = new b2PolygonDef();
    rectShapeDef.restitution = 0.2;
    rectShapeDef.friction = 0.3;
    rectShapeDef.density = 3;
    rectShapeDef.SetAsOrientedBox(rectWidth / 2 / PhyOption.PHYSCALE, rectHeight / 2 / PhyOption.PHYSCALE,new b2Vec2(0,0),0);

    此处与创建单独的刚体不同,此处使用的是SetAsOrientedBox方法,而单独创建刚体时用的是SetAsBox方法

    3。创建第二个组合的形状(圆形)

    var circleShapeDef:b2CircleDef = new b2CircleDef();
    circleShapeDef.friction = 0.1;
    circleShapeDef.density = 1;
    circleShapeDef.restitution = 0.4;
    circleShapeDef.radius = circleRadius/PhyOption.PHYSCALE;
    circleShapeDef.localPosition = new b2Vec2(0, -32.5 / PhyOption.PHYSCALE);

    此处与创建单独的圆形刚体不同,此处多了一个属性药赋值,即localPosition。

    4。最后创建刚体形状,根据形状计算质量

    body.CreateShape(rectShapeDef);
    body.CreateShape(circleShapeDef);
    body.SetMassFromShapes();

    5。利用调试功能看效果

    var sp:Sprite = new Sprite();
    addChild(sp);
    var dbg:b2DebugDraw = new b2DebugDraw();
    dbg.m_sprite = sp;
    dbg.m_drawFlags = b2DebugDraw.e_shapeBit;
    dbg.m_drawScale = PhyOption.PHYSCALE;
    dbg.m_fillAlpha = 0.5;
    dbg.m_alpha = 0.5;
    PhyOption.getInstance().world.SetDebugDraw(dbg);

    6。最后进行迭代模拟,需在enterFrame事件中调用

     PhyOption.getInstance().world.Step(PhyOption.STEP, PhyOption.ITERATION);

     

    转载于:https://www.cnblogs.com/ywxgod/archive/2010/04/08/1707840.html

    展开全文
  • 刚体的调试(转))

    2016-08-30 10:33:00
    b2DebugDraw提供调试功能,由于Box2D中所有对象都是不可见的,要创建可见对象我们得用刚体定义中的userData属性来创建自己的图形,如果不创建自己的图形,则用b2DebugDraw类来实现物体的可见,方便调试。 具体代码...

    b2DebugDraw提供调试功能,由于Box2D中所有对象都是不可见的,要创建可见对象我们得用刚体定义中的userData属性来创建自己的图形,如果不创建自己的图形,则用b2DebugDraw类来实现物体的可见,方便调试。

    具体代码:

    private function showDebug():void
    {
    //创建一个sprite,提供渲染
    var m_sprite:Sprite = new Sprite();
    addChild(m_sprite);
    var dbgSprite:Sprite = new Sprite();
    //给m_sprite添加一个子sprite
    m_sprite.addChild(dbgSprite);
    var dbgDraw:b2DebugDraw = new b2DebugDraw();
    //将m_sprite作为dbgDraw的渲染sprite
    dbgDraw.m_sprite = m_sprite;
    //设置比例为30,如果不设置则所有物体都会很小,box2D中以米为单位,1m=30像素
    dbgDraw.m_drawScale = physScale;
    //设置要显示的内容,每个标志代表一项
    dbgDraw.m_drawFlags = b2DebugDraw.e_aabbBit |
    b2DebugDraw.e_jointBit |
    b2DebugDraw.e_obbBit |
    b2DebugDraw.e_shapeBit;
    //绘制刚体所用线条的透明度
    dbgDraw.m_alpha = 1;
    //填充刚体所用颜色的透明度
    dbgDraw.m_fillAlpha = 0.3;
    //绘制刚体所用线条的粗细
    dbgDraw.m_lineThickness = 1;
    //从虚拟世界开始模拟
    world.SetDebugDraw(dbgDraw);
    }
    b2DebugDraw类中有7个标志常量:
    b2DebugDraw.e_aabbBit :表示显示刚体的边界盒
    b2DebugDraw.e_jointBit :表示显示刚体相连时的节点和连线
    b2DebugDraw.e_obbBit :显示凸多边形的边界,不显示圆的边界
    b2DebugDraw.e_pairBit:draw broad-phase pairs(不知如何翻译是好用原文)
    b2DebugDraw.e_coreShapeBit:draw core (TOI) shapes
    b2DebugDraw.e_shapeBit:显示刚体的形状,不管是何种形状
    b2DebugDraw.e_centerOfMassBit:显示质量中心。重心?质心?
    上面的代码我们可以设置绘制刚体的线条透明度,粗细,以及填充刚体颜色的透明度,但我们无法设置填充刚体所用的颜色,在Box2D中,默认有三中颜色来填充刚体,即红色,绿色,灰色。
    红色---------表示已经处于休眠状态的刚体
    绿色---------表示静止的刚体,没有密度质量的刚体
    灰色---------表示正在移动的刚体
    不过,我们可以修改b2World类中1060-1074 行的代码来修改这三种默认的颜色,b2World中的代码如下:

    for (s = b.GetShapeList(); s; s = s.m_next)
    {
    if (b.IsStatic())
    {
    DrawShape(s, xf, new b2Color(0.5, 0.9, 0.5), core);
    }
    else if (b.IsSleeping())
    {
    DrawShape(s, xf, new b2Color(0.5, 0.5, 0.9), core);
    }
    else
    {
    DrawShape(s, xf, new b2Color(0.9, 0.9, 0.9), core);
    }
    }
    这里实际是修改传递给b2Color实例的值,只需修改其构造函数中的三个对应的值即可。

    转载于:https://www.cnblogs.com/weifengxiyu/p/5820956.html

    展开全文
  • 2D刚体

    2020-09-13 21:48:56
    如果是-1,body将使用在Project >项目设置> Physics > 2d中定义的默认Angular阻尼。 Vector2 applied_force 物体的总作用力 float applied_torque 物体的总施加扭矩。 物体的行为也会受到世界属性的影响,如在项目...
  • unity3d刚体 了解Unity 3D刚体 (Understanding Unity 3D Rigidbodies) A rigidbody is a property, which, when added to any object, allows it to interact with a lot of fundamental physics behaviour, like ...
  • 认识Box2d刚体 b2Body

    2019-06-01 11:34:13
    1 什么是刚体? 通俗的讲,刚体就是一个“东西”,在Box2D中的刚体b2Body类,是Box2d的核心类之一。 2 创建刚体 创建一个刚体,不单单...b2BodyDef: 要创建的刚体信息定义。 b2Body: 要创建的刚体。 b2Fixtur...
  • 对某个组件添加刚体 选中游戏物体-->菜单Component-->Physics-->Rigidbody Properties 属性: Mass 质量 Drag 阻力 Angular Drag 角阻力 Use Gravity 使用重力 ... //定义刚体类型的变量 ...
  • 刚体的速度只有在选定坐标系时才有谈论意义,比如一台小车可以看作是一个刚体,其上有三个传感器,Camera有一个速度,IMU有一个速度,轮子有一个速度,首先它们的速度是不同的(比如把地球看作一个刚体,地心的速度...
  • 本文主要分析了homogeneous坐标的定义,应用点。以及不同homogeneous变换的矩阵和自由度。包括了刚体变换,相似变换,仿射变换和射影变换(投影变换)。
  • 如果模型中某个部件的刚度远远大于其他部件,其变形远远小于其他部件,就可以将其定义刚体部件。在分析过程中刚体部件不发生变形,而只发生整体的平动和转动。将部件定义刚体的主要目的是为了提高计算效率,使...
  • 刚体转动是力学中最重要的部分之一,学生在学习刚体转动的过程中存在着很多学习困难。本次研究的主要目的就是研究学生在学习刚体转动过程中存在的前概念,并基于学生的前概念提出教学上的改进建议。1.2 国内外研究...
  • 刚体姿态表示

    千次阅读 2018-12-07 10:57:06
    空间刚体的姿态有3个自由度,通常采用旋转矩阵(9个参数)、旋转向量(3个参数)、欧拉角(3个参数)、四元数(4个参数)表示。 由于姿态有3个自由度,而旋转矩阵和四元数的参数个数大于3,这种表示方法叫做过参数...
  • 2、刚体运动

    2019-10-16 10:28:31
    什么叫刚体刚体是指在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体。虽然绝对刚体是不存在的,但是我们可以将相机近似看作是一个刚体刚体运动:由一个旋转加上一个平移组成的,两个...
  • 该项目是使用 Matlab 7.5.0 (R2007b) 的 GUIDE 和用户定义的类制作的。 该项目可用于技术教育机构的力学研讨会。大多数技术学院都认为力学课程的“刚体”部分是必需的。 大学。 有时很难想象刚体在三维空间中的旋转...
  • Unity3D —— 刚体

    2019-12-19 18:07:06
    (一)定义 刚体:用来模拟GameObject对象在现实世界中的物理特性,包括重力,阻力,质量,速度等; (二)组件参数介绍 Mass:质量,单位为Kg; Drag:空气阻力,0表示没有阻力,infinity表示立即停止移动; ...
  • 三维刚体变换

    2021-01-30 10:55:04
    第三章:三维刚体变换 刚体:形状和大小不发生变化的物体,刚体不光有位置,还有自身的姿态,姿态是指物体的朝向。 点:点是空间中的基本元素,没有长度没有体积,两个点连接起来,构成了向量。 向量:可以看成从某...
  • 刚体卫星姿态

    2015-02-03 09:58:19
    一种卫星姿态的控制方法,采用的是有限时间控制,对航天控制领域的研究生最有参考价值
  • 为了定义主体的形状,必须为其分配一个或多个Shape对象。请注意,设置这些形状的位置会影响人体的重心。 如何控制刚体 刚体的行为可以通过设置其属性(例如,摩擦力,质量,弹跳等)来更改。这些属性可以在检查器中...
  • 刚体转动的基本概念

    2020-05-16 17:58:07
    目录一、刚体的定轴转动1. 刚体转动的角速度和角加速度【ω,α】2. 匀变速转动公式3. 角量和线量的关系二、力矩 转动定律 转动惯量1. 力矩【M】2. 转动定律3. 转动惯量【J】4. 平行轴定理三、角动量 角动量守恒定律...
  • 经典力学(动力学)——刚体的转动

    千次阅读 多人点赞 2020-04-08 10:26:55
    目录刚体的定轴转动 力矩刚体刚体转动的角速度和角加速度匀变速转动...刚体定义:在外力作用下,形状和大小都不发生改变的物体。 刚体的运动形式包括平动和转动。 平动:刚体中所有点的运动轨迹都保持相同,各点...
  • 刚体动力学学习笔记

    2020-05-24 22:07:01
    刚体动力学 文章目录刚体动力学1. 基本概念1.1 约束及其分类1.2 广义坐标和自由度的概念1.3 虚位移2. 刚体运动学2.1 刚体位置描述$$ a^{(1)}= \begin{pmatrix} a_1^{(1)}\\ a_2^{(1)} \\ a_3^{(1)} \end{pmatrix}2.2...
  • 刚体的旋转

    2019-07-02 17:07:26
    我们如果定义欧拉角: Eigen::Vector3d euler_angle(X, Y, Z) , euler_angle(0) : roll … // 1. 可以从旋转矩阵得到欧拉角 Eigen : : Vector3d euler_angles = rotation_matrix . eulerAngles ( 2 , 1 ...
  • 三维空间刚体旋转

    2020-03-17 08:43:41
    文章目录三维空间中刚体旋转的表示矩阵线性代数运算库Eigen三维空间中刚体旋转的表示矩阵线性代数运算库Eigen 刚体:运动过程中不会产生形变的物体,运动过程中同一个向量的长度和夹角都不会发生变化。刚体变换也...
  • 信手绘制线条刚体

    2013-06-20 14:50:42
    对于重力大师游戏,试玩之后,不难发现,我们在运行时可以创建的刚体有两种,线条刚体和多边形刚体。今天我们来一起研究一下线条刚体的创建。多边形刚体会在下次教程中讨论。   这里我们要绘制的线条不是...
  • 刚体动力学基础学习 1 符号 rrr:刚体上某个质量微元对固定点O的位置矢径 rPr_PrP​:刚体上一点P对固定点O的位置矢径 ρ\rhoρ:刚体上某个质量微元对基点P的位置矢径 ρc\rho_cρc​:刚体质心C对P的位置矢径 mmm...
  • 刚体就是 "刚性物体",它在运动过程中,内部各质点间的相对位置不会改变,也即每两个质点间的距离保持不变 假设刚体内任意两个质点,坐标分别为 $(x_1, y_1, z_1)$ 和 $(x_2, y_2, z_2)$,则在刚体运动过程中,这...
  • 三维刚体运动

    2019-04-04 12:44:22
    三维刚体运动点和向量,坐标系坐标系的欧式变化四元数 点和向量,坐标系 首先说说向量是什么,它是线性空间的一个元素,可以想象从原点指向某处的一个箭头,不要把向量和坐标混淆。谈论向量a⃗\vec aa在一个线性基...
  • 三维空间刚体运动的描述方式:旋转矩阵、变换矩阵、四元数和欧拉角 旋转矩阵 在SLAM 中相机可以看成三维空间的...外积只对三维向量存在定义,能够使用外积表示向量的旋转 欧式变换:刚体运动保证了同一个向量在各...
  • Box2D多边形刚体贴图

    千次阅读 2013-06-20 15:03:59
    在前面的刚体的上衣教程中,我们学会了简单的刚体贴图,确实非常简单,只需要根据b2Body刚体的坐标和角度实时更新userData的坐标和角度就可以了。那么多边形刚体贴图呢? 放心啦,没你想象的那么复杂,和简单刚体...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,672
精华内容 2,668
关键字:

刚体定义