我在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.2 和 Pymunk 2.1.0 ..这是一个错误?
答案 0 :(得分:1)
看起来你偶然发现了花栗鼠中的32位编译错误。从10.6开始,Apple在其头文件中更改了预定义的定义,这只在OSX上的32位python上创建了一个bug。好消息是它已经在最新的pymunk svn trunk中得到修复。
花栗鼠论坛的完整详情: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的文档,但大部分已经完成了)