获得形成周长的点的坐标

时间:2014-11-06 17:08:40

标签: java awt geometry-surface

我有一个椭圆:

 Ellipse2D e2D  = new Ellipse2D.Float(startPoint.x, startPoint.y, x - startPoint.x, y - startPoint.y);

我需要的是获得形成周长的所有点的坐标。

ArrayList<Point> oneDraw = new ArrayList<>();
for (int i = startX; i < borderX; i++)
        for (int j = startY; j < borderY; j++)
            if (e2D.contains(new Point(i, j))) 
                oneDraw.add(new Point(i, j));

通过这样做,我把我圈子里面的所有坐标都放到了列表中,但我不需要这个。

感谢您的回答和花时间。

2 个答案:

答案 0 :(得分:1)

  • 创建一个比目标椭圆略大的椭圆。
  • 创建一个比目标椭圆略小的椭圆。
  • 从第一个椭圆中减去第二个椭圆。这将形成一个椭圆形环。
  • 当前&#39;包含&#39;带椭圆环的代码。

答案 1 :(得分:0)

您的方法会将椭圆内部框中的所有像素添加到列表中,即您将获得椭圆的区域而不是其圆周。我会说找到正确的公式并解决离散的x / y对会更好。

或者更好地应用其中一种算法来绘制可在网上找到的椭圆,例如:这一个:http://www.mathopenref.com/coordcirclealgorithm.html
然后获取已绘制的像素(如果仍需要)。

编辑:如果您查看Ellipse2D的源代码,您可以了解如何实现自己的算法,或者只使用{{1}使用统一变换,然后将路径元素“栅格化”到列表中。