美文网首页
弯曲的边界

弯曲的边界

作者: 大龙10 | 来源:发表于2022-06-02 06:01 被阅读0次

书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
目录

5.9 弯曲的边界

  如果你希望固定边界的表面是弯曲的(而不是一个多边形),ChainShape类能帮你实现这种效果。
  ChainShape类和PolygonShape类、CircleShape类相似,因此,我们可以用相同的步骤将它加入我们的程序。

1、第1步:定义一个物体

BodyDef db = new BodyDef();   物体不需要位置,ChainShape会帮我们指定位置;也不需要设置
typeBody body = box2d.world.createBody(bd);

2、第2步:定义形状

ChainShape chain = new ChainShape();

3、第3步:配置形状

  ChainShape对象代表一组相连的边。为了创建这样的链对象,我们必须先定义一个顶点(Vertice)数组(由Vec2对象组成的数组)。举个例子,如果我们想创建一条穿过整个窗口的直线,数组中只需要有两个顶点:(0,150)和(width,150)。(如果你想创建首尾相连的圈,也就是第一个顶点和最后一个顶点相连,可以使用ChainLoop类。)

Vec2[] vertices = new Vec2[2];
vertices[0] = box2d.coordPixelsToWorld(0,150);  加入屏幕右端的顶点
vertices[1] = box2d.coordPixelsToWorld(width,150); 加入屏幕左端的顶点

为了根据这些顶点创建链,我们需要将数组传入createChain()函数。

chain.createChain(vertices, vertices.length);如果你不想使用整个数组来创建链,可以传入

4、第4步:使用夹具将形状连接到物体上

  形状只有在和物体相连之后才能成为Box2D的一部分。尽管这是个固定的边界,它还是需要被连接在物体上。和其他形状一样,ChainShape对象也有摩擦和复原等属性,我们可以通过夹具(Fixture)设置这些属性。

FixtureDef fd = new FixtureDef();
fd.shape = chain;   分配给ChainShape对象的夹具
fd.density = 1;
fd.friction = 0.3;
fd.restitution = 0.5;
body.createFixture(fd);

  现在,我们要把ChainShape对象加入Sketch,方法和前面的固定边界一样。我们可以用Surface类完成这项工作。

5、示例

示例代码5-3 由3个固定顶点确定的ChainShape对象


相关文章

  • 弯曲的边界

    书名:代码本色:用编程模拟自然系统作者:Daniel Shiffman译者:周晗彬ISBN:978-7-115-3...

  • 2019-02-28

    什么是管材塑性弯曲成形 管材塑性弯曲成形是一个集材料非线性,几何非线性和边界条件非线...

  • 弯曲

    弯曲的炊烟 弯曲的河 满天的春雪打湿 弯弯曲曲的红灯笼 映着故乡 ...

  • 弯曲

    弯曲 天圆地方 触碰了那个点 知道 有一种弯曲的力量 拉伸 撕裂 破灭 怀化 诗 最初是写出来 还是唱开去 今人 ...

  • 弯曲

    伸不直的脊梁弯着 弯着的脊梁再也没有伸直 白天黑夜一直彳亍前行 心都被压迫得跳不出激情 苟且是一个孤独的路人 时光...

  • 弯曲的梦

    弯曲的梦 2017/09/06 00:54 向外的眼睛看见了羽毛 和衔着刀的嘴 黄昏和幽禁的小屋 沾湿了梦 在沙滩...

  • 弯曲的筷子

    有趣的事情,生活中无处不在,只要我们细心观察,可以学到更多知识。 我喝水的时候,发现放在水杯里的筷子变弯了,对此我...

  • 弯曲的世代

    记不清是哪一年了,总之当时我还是个初中二年级的学生。那天我坐在学校的半圆形餐厅吃午饭,一同就餐的室友坐在桌子对面。...

  • 弯曲的方向

    (一) 遥遥远涉兮 遥遥弯曲兮 蜿蜒复之兮 韵美律之兮 弹奏兮琴瑟 咏唱兮歌谣 潺潺兮明快 叮咚兮清脆 可在...

  • 弯曲的路

    来了走了路还是路 看看坐坐我到底离开 有另一个地方适合现在的我无论我干什么

网友评论

      本文标题:弯曲的边界

      本文链接:https://www.haomeiwen.com/subject/gftpprtx.html