试图画出六边形

use*_*884 -2 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);
Run Code Online (Sandbox Code Playgroud)

然而,当我这样做时,我最终得到了这个 :

出了什么问题?我把它绘制在一个坐标平面上,并将点复制过来.据我所知,Java会按照我列出点的顺序绘制出来,并且为了让游戏旋转小行星,我在那里有(0,0).

小智 10

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

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


Zan*_*ane 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))
}
Run Code Online (Sandbox Code Playgroud)


And*_*rew 5

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

sprite.addPoint(50,-10);
sprite.addPoint(20,-40);
Run Code Online (Sandbox Code Playgroud)

认为最后两个应该是:

sprite.addPoint(-50,-10);
sprite.addPoint(-20,-40);
Run Code Online (Sandbox Code Playgroud)

但即便如此,它仍然看起来像一个单边的pacman - 我想回到绘图板.