0

我在 Pymunk 中创建多边形时遇到了一些麻烦。

import pymunk
space = pymunk.Space()
space.gravity = (0.0, 900.0)

box_points=[(-100,-100), (100,-100), (100,100), (-100, 100)]
body = pymunk.Body(10.0, 1000.0)
body.position = pymunk.Vec2d(300.0,300.0)
shape = pymunk.Poly(body, box_points, (0,0))

space.add(body, shape)

print shape.get_points()

# Outputs: [Vec2d(300.0, 300.0), Vec2d(300.0, 300.0), Vec2d(300.0, 300.0), Vec2d(300.0, 300.0)]

形状的顶点都在身体的中心!(即在 (0, 0) 处)。我认为他们不应该,还是我跳过了一些步骤?

我正在运行Mac OS 10.7.4 ,使用Chipmunk v6.0.2Pymunk 2.1.0 ..这是一个错误吗?

4

1 回答 1

1

看起来您偶然发现了花栗鼠中的 32 位编译错误。从 10.6 开始,Apple 更改了其头文件中的预定义定义,这仅在 OSX 上的 32 位 python 上创建了一个错误。好消息是它已经在最新的 pymunk svn 主干中修复了。

花栗鼠论坛的完整细节在这里:http ://chipmunk-physics.net/forum/viewtopic.php?f=1&t=2265

get_points 应该返回世界坐标中的点,这意味着您的示例中的输出应该是:

[Vec2d(200.0, 400.0), Vec2d(400.0, 400.0), Vec2d(400.0, 200.0), Vec2d(200.0, 200.0)]

(我希望尽快发布新版本的 pymunk。我目前正在转换为 sphinx 的文档,但大部分已经完成)

于 2012-08-15T11:05:42.543 回答