我正试图在我正在上课的小行星的克隆上绘制一个六边形的小行星。
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)以便为游戏旋转小行星。
答案 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)似乎更合理。