我需要使用java编写一个程序来进行赋值。 程序需要在给定坐标处输出给定半径的圆。 到目前为止,我已经创建了一个嵌套在另一个for循环中的for循环,扫描所有坐标并在坐标满足圆的方程时打印“#”,即:(x-a)^ 2 +(y- b)^ 2 = r ^ 2
然而,我的圈子出现了某些坐标。
我认为这是因为我没有考虑到问题中包含的其中一个提示。
提示是: 我们必须处理的离散世界使得很难在等式1中表达严格的相等性(等式1是圆的等式)。为了画出更好的圈子,你能放松这种平等吗?
如果有人能给我任何关于如何“放松”圆圈方程以输出更圆圈的想法,我将不胜感激。
谢谢!
答案 0 :(得分:1)
问题在于整数运算的舍入会影响您的结果。
整数舍入并非真正舍入,它会截断(所有小数部分都会丢失,即(int).9 = 0),因此您可以先尝试为每个结果添加.5(或 - 。在发生截断之前,如果数字为负,则为5。
如果这没有帮助,请尝试通过重复此过程在同一网格上绘制多个圆圈但是使用r +/- .5,以及#34;填写"锯齿状的间隙。
如果这还不够,我会"画"在较大比例(可能是4x)的虚拟网格上的圆圈和较粗的线条(绘制3个r +/- 1的圆圈),然后将其缩小以适合真实的网格。
答案 1 :(得分:0)
这是当我将坐标转换为int时发生的情况,并且还添加0.5,它看起来好多了,但我不确定为什么左侧被遗漏了。
它不需要那么好,“目标”就是: