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))。そうすべきではないと思いますか、それともいくつかのステップをスキップしていますか?

Chipmunk v6.0.2Pymunk 2.1.0を使用してMac OS 10.7.4を実行しています。これはバグですか?

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 に答える