【问题标题】:Java - filling an overlapping polygonJava - 填充重叠的多边形
【发布时间】:2010-10-16 17:49:59
【问题描述】:

我正在尝试在 AWT 中绘制 5 点星。 2d 网格中的每个点相隔 72 度 - 所以我想我可以通过对相隔 144 度的点进行排序来仅使用 5 个点来绘制多边形,因此多边形按 1、3、5、2、4 的顺序输入点

不幸的是,这涉及到很多相交的线,最终结果是有 5 个三角形具有我想要的颜色,围绕着一个尚未着色的五边形。

翻看,跟奇偶规则有关,相交的点不会被填满。

我需要动态绘制我的星星,并使用所描述的特定形状(用于缩放等)。 如果我手动绘制它相交的点,我的星星形状会出现一些人为错误。

有没有办法关闭这个功能,或者失败了,有没有办法让多边形返回一个数组 x[] 和 y[] 线相交的地方,这样我就可以在里面画另一个?

谢谢。

【问题讨论】:

    标签: java awt polygon


    【解决方案1】:

    用 10 个点绘制它,相距 36 度,两个交替的半径。

    【讨论】:

    • 我在原来的帖子中提到过 - 如果我手动绘制它相交的点,我的星形会出现一些人为错误。第二组点的半径似乎约为峰半径的 1/3,但我不知道它到底是多少,否则我会这样做。
    【解决方案2】:

    按照relet 的建议和此example 所示,在笛卡尔坐标中建立10 点Polygon。注意坐标系是如何以原点为中心的,以便于旋转、缩放和平移。因为Polygon实现了Shape接口,所以可以应用AffineTransformcreateTransformedShape()方法。更高级的形状库可以在here找到。

    有没有办法让多边形返回线相交处的x[]y[] 数组?

    虽然通常没有必要,但您可以使用 Shape's PathIterator 检查组件坐标。我发现在调用 createTransformedShape() 之前和之后检查坐标很有启发性。

    【讨论】:

      猜你喜欢
      • 2022-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多