﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-zxl888a</title><link>http://www.cppblog.com/zxl888a/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 09 Jun 2026 20:22:52 GMT</lastBuildDate><pubDate>Tue, 09 Jun 2026 20:22:52 GMT</pubDate><ttl>60</ttl><item><title>Box2D 学习重点记忆</title><link>http://www.cppblog.com/zxl888a/archive/2010/11/27/134842.html</link><dc:creator>叱咤风云良</dc:creator><author>叱咤风云良</author><pubDate>Sat, 27 Nov 2010 10:48:00 GMT</pubDate><guid>http://www.cppblog.com/zxl888a/archive/2010/11/27/134842.html</guid><wfw:comment>http://www.cppblog.com/zxl888a/comments/134842.html</wfw:comment><comments>http://www.cppblog.com/zxl888a/archive/2010/11/27/134842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zxl888a/comments/commentRss/134842.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zxl888a/services/trackbacks/134842.html</trackback:ping><description><![CDATA[<p>最近看了HelloWorld 这个例子，Box2d的基本创建都包括了！把他人的东西自己在记忆一下，每天进步一点点。<br><br>Box2D物理引擎运作机制大体可分为四步：<br></p>
1.创建一个世界，这个世界基于一个b2AABB框，并设立了一个g值和一个是否允许休眠的bool型变量。<br>2.建立一个静态刚体地表。刚体的详细过程：首先是定义一个形状（可以是复合形状），然后把形状通过AddShape添加进刚体定义，这样刚体就创建好了。所谓刚体就可以说是&#8220;物体&#8221;。<br>3.重复创建你需要的刚体就可以了。<br>4.最后在你循环中加入世界的更新函数就可以了。<br><br>世界（b2world）:世界就是一个环境，所以物理运算都在此进行。<br>形状定义（b2ShapeDef）:形状定义是什么？说简单点形状定义就是定义你这个对象的样子，它用来&nbsp;做什么？就是用来确定你的碰撞。<br>刚体定义（b2BodyDef）:刚体定义就是设定刚体的初始具体，最大的功能&nbsp;就是把&nbsp;你定义好的形状加到你想到的刚体上。<br>刚体（b2Body）:刚体就是物理引擎里的对象，它可以受力的作用进行当前位置的变化旋转等。<br><br>几个类型定义：<br>&nbsp;&nbsp;&nbsp;typedef singed char int8;<br>&nbsp;&nbsp;&nbsp;typedef singed&nbsp;short int16;<br>&nbsp;&nbsp;&nbsp;typedef singed&nbsp;int &nbsp;int32;<br>&nbsp;&nbsp; typedef unsinged char uint8;<br>&nbsp;&nbsp; typedef unsinged&nbsp;short uint16;<br>&nbsp;&nbsp; typedef unsinged&nbsp; int&nbsp;&nbsp; &nbsp;uint32;<br>&nbsp;&nbsp; typedef float&nbsp; float32;<br>&nbsp;&nbsp;&nbsp;const float32 b2_pi = 3.14159265359f;<br>数据类型的定义：<br>1.b2Vec2<br>它可以定义坐标位置，定义BOX大小等，b2Vec2是由float32类型的x,y组成，支持负向量，+=，-=，*=操作符。<br>Void SetSize();设置x,y为0；<br>Void Set(float32 x,float32 y);设置x,y为指定值；<br>b2Vec2 Make(float32 x,float32 y) 生成一个指定的b2Vec2<br>float32 Normalize();标准化向量<br>bool IsValid()检查是否有效<br><br>2.b2AABB<br>&nbsp;b2AABB 是世界环境，有两个向量组成，一个为 minVertex&nbsp; 是最小顶点，另一个为 maxVertex是最大顶点，通过这两个顶点来表示最为普通的AABB框。<br><br>3.b2ShapDef<br>b2ShapDef就是形状定义，用函数指针来表示用户数据（uerdata），用向量localPostion 来表示当前位置，用float32的localRotation来表示当前角度，用float32的firction、density、restitution 来表示摩擦力、密度、弹性系数，用uint16的categoryBits和maskBits来表示碰撞位和位标识，用int16的groupIndex来表示组号，这个组号还可以用来过滤还比位标识优先。<br><br>4.b2BodyDef<br>b2BodyDef 是刚体定义，由一个函数指针UseData 来表示用户数据，一组类型为b2ShapeDef*指针数组shapes来表示形状队列。<br><br>先写这些！记载以后可以加深印象！！！<br><br><br><br><br><br><br><br><br>
<img src ="http://www.cppblog.com/zxl888a/aggbug/134842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zxl888a/" target="_blank">叱咤风云良</a> 2010-11-27 18:48 <a href="http://www.cppblog.com/zxl888a/archive/2010/11/27/134842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>