我正在尝试为圆圈实现绘制方法但是我唯一的工具是从多个点绘制线条(特定于此示例,我有一个“笔”,我可以移动到,然后从该位置绘制到网格上的新位置。)
这是我目前的代码
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);
}
}
这是我的固定代码。仍然不创建圆圈,而是创建圆圈(圆圈应该在顶部)
答案 0 :(得分:4)
问题1:sin()
和cos()
期望以弧度为单位输入,而非度数。要获得弧度,请将i
乘以Math.PI / 180
。
问题2:你的循环中的条件是向后的;你想要i < 360
,而不是i > 360
。如果要关闭圈子,请改用i <= 360
。
问题3:您没有将xo
和yo
添加到计算出的x / y坐标,因此您将绘制除(0,0)处第一个点以外的所有圆圈原点。
问题4:您的初始moveTo()
将转到圆圈的中心,而不是0度处圆圈上的点。