gpt4 book ai didi

java - 在java中使用线绘制圆

转载 作者:行者123 更新时间:2023-11-29 03:26:40 27 4
gpt4 key购买 nike

我目前正在尝试为一个圆实现一个绘制方法,但是我唯一的工具是从多个点绘制线(特别是对于这个例子,我有一个我可以移动到的“笔”,然后从那个位置绘制到网格上的新位置。)

这是我当前的代码

public void draw(WinPlotter plotter){
setPenColor(plotter);
plotter.moveTo(xo,yo); //xo,yo being original X and Y cords (origin)
for (int i = 0; i > 360; i++){
double x = Math.sin(i) * radius;
double y = Math.cos(i) * radius;

plotter.drawTo(x,y);
}
}

我不确定我错过了什么,但这实际上根本不会输出任何东西,我已经测试以确保 xo 和 yo 被正确传递给该方法,所以我有信心我的问题在于我试图从线中画圆的逻辑。

编辑:

public void draw(WinPlotter plotter){
setPenColor(plotter);
plotter.moveTo(xo,yo+radius);
for (int i = 0; i <= 360; i++){
double x = xo+ Math.sin(i * (Math.PI / 180)) * radius;
double y = yo+ Math.cos(i) * radius;

plotter.drawTo(x,y);
}
}

这是我的固定代码。仍然不创建圆圈,而是创建这个(圆圈应该在顶部)

enter image description here

最佳答案

第 1 期:sin()cos()期望以弧度而不是度为单位输入。要获得弧度,乘以 i通过 Math.PI / 180 .

问题 2:循环中的条件是向后的;你想要i < 360 , 不是 i > 360 .如果要闭圈,用i <= 360相反。

问题 3:您没有添加 xoyo到计算出的 x/y 坐标,因此您要绘制除 (0, 0) 原点处的第一个点以外的所有圆。

问题 4:您的初始 moveTo()转到圆心而不是圆上 0 度的点。

关于java - 在java中使用线绘制圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20693008/

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