gpt4 book ai didi

java - 在圆上绘制 N 个等距点,只给出一个点

转载 作者:行者123 更新时间:2023-11-30 02:22:01 24 4
gpt4 key购买 nike

所以我需要沿着圆的圆周绘制n个等距的点。我这里有代码,但它只绘制了 1 点。这可能只是一件小事,但我无法弄清楚。这是我所拥有的:

import javafx.application.Application;
import javafx.scene.layout.AnchorPane;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.geometry.Point2D;

public class jvafx extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) {
AnchorPane root = new AnchorPane();
Scene scene = new Scene(root, 300, 300, Color.LIGHTGREY);

Circle c = new Circle();
c.setCenterX(150.0f);
c.setCenterY(150.0f);
c.setRadius(100.0f);
c.setStroke(Color.BLACK);
c.setFill(null);

root.getChildren().add(c);

int N = 16;
Circle pt = null;
for(int i = 0; i < N; i++) {
pt = new Circle(150.0f + 100 * Math.cos(Math.PI*2*(i/N)),
150.0f + 100 * Math.sin(Math.PI*2*(i/N)), 3.0f);
pt.setFill(Color.BLACK);
root.getChildren().add(pt);
}

primaryStage.setScene(scene);
primaryStage.show();
}
}

我假设点(圆)的位置应该随着 i 的增加而改变。也许这是错误的?

最佳答案

问题在于计算角度的方式。您想要将圆圈周围的“进度”乘以 0 之间的值。和1通过将用于 i=16 的值(2 * PI)。

这种方法是正确的,但您正在执行整数除法:

(i / N)

此除法的结果被截断,因为对于所有 i :0 <= i < N该表达式的计算结果始终为 0 .

如果您将其中一个值转换为浮点类型或只是删除括号,您的方法就有效:

int N = 16;
for (int i = 0; i < N; i++) {
Circle pt = new Circle(150.0f + 100 * Math.cos(Math.PI * 2 * i / N),
150.0f + 100 * Math.sin(Math.PI * 2 * i / N), 3.0f);
pt.setFill(Color.BLACK);
root.getChildren().add(pt);
}

删除括号有效,因为 Math.PI * 2 * i / N相当于 ((Math.PI * 2) * i) / Ndouble 的乘法喜欢 Math.PI和一个 int产量double .

关于java - 在圆上绘制 N 个等距点,只给出一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46536228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com