作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要使用 java 编写一个程序来完成作业。程序需要在给定坐标处输出一个给定半径的圆。到目前为止,我已经创建了一个嵌套在另一个 for 循环内的 for 循环,以扫描所有坐标并在坐标满足圆方程时打印“#”,即:(x−a)^2 +(y− b)^2 =r^2
但是,我的圈子缺少某些坐标。
我相信这是因为我没有考虑问题中包含的提示之一。
提示是:我们必须处理的离散世界使得很难表达等式 1 中的严格等式(等式 1 是圆的等式)。为了画出更好的圆圈,你能放松这种平等吗?
如果有人能给我任何关于如何“放松”圆方程以输出更完整的圆的想法,我将不胜感激。
谢谢!
最佳答案
问题在于整数运算的舍入会影响您的结果。
整数舍入并不是真正的舍入,而是截断(所有小数部分都丢失了,即 (int).9 = 0),因此您可以先尝试将每个结果加上 .5(如果数字为负数,则为 -.5 ) 在截断发生之前。
如果这没有帮助,请尝试通过重复该过程在同一个网格上绘制多个圆圈,但使用 r +/- .5,以“填充”锯齿状的间隙。
如果这还不够,我会在虚拟网格上以更大的比例(可能是 4 倍)和更粗的线“画”一个圆(画 3 个 r +/- 1 的圆),然后将其缩小以适合真正的网格。
关于java - "relax"圆的方程如何得到更好看的圆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19372077/
我有一个带有 5 个内部字符串变量的对象,但其中 3 个是可选的。我可以为每个可能的组合创建一个构造函数,或者我可以调用通用构造函数并向其传递一些空字符串。后一种情况对我来说很有趣,如果我在调用构造函
我是一名优秀的程序员,十分优秀!