-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

Zane is close, he forgot to include i in his formula:

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

首先,如果它应该是一个六边形,那么它应该有 6 个点,而不是 10 个点。其次,只需根据您的坐标在纸上绘制这个,就可以得到一个与您图片中的多边形非常相似的多边形。所以我猜你的坐标是错误的。再次检查它们。

如果你想画一个对称的六边形,那么你只需要它的中心,比如 (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

不是真的六边形,最后两点看起来很奇怪

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

认为最后两个应该是:

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 回答