-2

クラス用に作成している小惑星のクローンに六角形の小惑星を描画しようとしています。

    sprite = new Polygon();
    sprite.addPoint(0,0);
    sprite.addPoint(0,-40);
    sprite.addPoint(30,-40);
    sprite.addPoint(60,-10);
    sprite.addPoint(60,20);
    sprite.addPoint(40,50);
    sprite.addPoint(-20,50);
    sprite.addPoint(-50,20);
    sprite.addPoint(50,-10);
    sprite.addPoint(20,-40);

しかし、私がそれをするとき、私はこれで終わります :

では、何が問題になっていますか?座標平面に描き、ポイントをコピーしました。Javaがポイントをリストした順序でそれを引き出すことは私の理解でした、そして私はゲームのために小惑星を回転させるためにそこに(0,0)を持っていました。

4

4 に答える 4

11

ゼーンは近くにいます、彼は彼の公式に私を含めるのを忘れました:

for(i=0; i<6; i++) {
    sprite.addpoint(x + r*cos(i*2*pi/6), y + r*sin(i*2*pi/6))
}
于 2013-03-14T07:18:55.560 に答える
6

まず、六角形であると想定される場合、10ではなく6つのポイントが必要です。次に、これを座標から紙に描くだけで、写真のポリゴンと非常によく似たポリゴンが得られます。だからあなたの座標は間違っていると思います。もう一度確認してください。

対称六角形を描画する場合、必要なのはその中心、たとえば(x、y)とその半径rだけです。次に、六角形のポイントは

for(i=0; i<6; i++) {
   sprite.addpoint(x + r*cos(i*2*pi/6), y + r*sin(i*2*pi/6))
}
于 2012-11-06T17:44:22.177 に答える
5

それは実際には六角形ではありません、最後の2つのポイントは奇妙に見えます

sprite.addPoint(50,-10);
sprite.addPoint(20,-40);

最後の2つは次のようになります。

sprite.addPoint(-50,-10);
sprite.addPoint(-20,-40);

しかし、それでも、それは片側のパックマンに見えるでしょう-私が思うに、画板に戻ります。

于 2012-11-06T17:45:48.743 に答える
1

私はあなたの座標をチェックします。最後のいくつかの遷移、特に(-50、20)から(50、-10)は私には正しく見えません。x方向に100単位ジャンプし、他のどの座標変更よりも大きくなります。(-50、-10)はもっともらしいようです。

于 2012-11-06T17:47:18.293 に答える