【问题标题】:trying to draw a hexagon shape in试图画一个六边形
【发布时间】:2012-11-06 17:38:16
【问题描述】:

我正在尝试在我为班级制作的小行星克隆上绘制六边形小行星。

    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) 是为了让小行星为游戏旋转。

【问题讨论】:

    标签: java graphics polygon polygons


    【解决方案1】:

    Zane 很接近,他忘了在公式中包含 i:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 更正了这个以匹配@Loran,因为这只会让人们失望。
      【解决方案3】:

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

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

      认为最后两个应该是:

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

      但即便如此,它看起来还是一个不平衡的吃豆人——我想回到绘图板上。

      【讨论】:

        【解决方案4】:

        我会检查你的坐标。最后几个过渡在我看来并不正确,尤其是 (-50, 20) 到 (50, -10)。它在 x 方向上有 100 个单位的跳跃,比任何其他坐标变化都大。 (-50, -10) 似乎更合理。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-02-05
          • 2015-06-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-04
          • 1970-01-01
          相关资源
          最近更新 更多