试图画出六边形

时间:2012-11-06 17:38:17

标签: java graphics polygon polygons

我正试图在我正在上课的小行星的克隆上绘制一个六边形的小行星。

    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 个答案:

答案 0 :(得分:10)

Zane很接近,他忘了把我包括在他的公式中:

for(i=0; i<6; i++) {
    sprite.addpoint(x + r*cos(i*2*pi/6), y + r*sin(i*2*pi/6))
}

答案 1 :(得分:5)

首先,如果它应该是六边形,那么它应该有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))
}

答案 2 :(得分:5)

这不是六角形,最后两点看起来很奇怪

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

认为最后两个应该是:

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

但即使如此,它看起来也是一个看起来很平庸的人 - 我想回到绘图板。

答案 3 :(得分:1)

我会检查你的坐标。最后几次转换看起来不对我,特别是(-50,20)到(50,-10)。它在x方向上跳跃100个单位,比坐标中的任何其他变化都大。 (-50,-10)似乎更合理。