首页 > 解决方案 > 如何在 JavaFX 图表上画圆

问题描述

我开发了一个 JavaFX 应用程序,我正在努力解决这个问题:

我在散点图上绘制了一组点 (x, y),您可以在下图中看到它们显示为一个小灰点。

我想用最小的圆包围这些点,因此我有一个名为 minimumCircle 的函数,它接收点数组,并在使用Welzl 算法时返回最小的包围圆(半径 + 中心点)

Circle c = minimalCircle(points);

当我尝试绘制从函数中检索的圆时,会出现问题,我制作了一个包含 1 个点的系列,该点是圆的中心,并应用具有圆半径的圆形

    private XYChart.Series<Number, Number> minimalCircleSeries(Point[] points) {

          XYChart.Series series = new XYChart.Series();
          Circle c = minimalCircle(points);
          javafx.scene.shape.Circle pointCircle = new javafx.scene.shape.Circle(c.center.x, c.center.y, c.r);
          XYChart.Data data = new XYChart.Data(c.center.x, c.center.y);
          data.setNode(pointCircle);
          series.getData().add(data);
          return series;
}

不幸的是,当它绘制圆时,它以像素为单位引用半径大小,而实际上它假设是图形上的真实单位,这导致下图中的圆不是最小的封闭圆。

我正在尝试找到一种方法来转换半径比例,以便正确绘制圆或找到另一种在散点图上绘制圆的方法

非常感谢您的帮助 !

图表的示例图像

标签: javajavafx

解决方案


推荐阅读