java - 如何使用图形应用程序在 java 中逐像素绘制圆?

标签 java applet draw geometry

使用的小程序就像笛卡儿平面的第一象限,其域和范围为 (0, 200)。我的任务是在这个小程序中画一座房子和一个太阳。 我正在尝试为太阳画一个圆圈。我真的不知道从哪里开始。我们正在学习 for 循环和嵌套循环,所以它可能与此相关。我们不需要数组,而且这个小程序不存在像draw.circle 这样的通用函数。如果有帮助的话,这是我如何绘制房子的屋顶(两个直角三角形):注意它是逐像素绘制的。我怀疑我的老师也希望圈子里有同样的事情。

//roof
//left side
double starty = 100;
for(double x = 16; x <= 63; x++){
        for(int y = 100; y <= starty; y++){
               img.set(x, y, JRaster.purple);
        }
starty += 1;
}

//right side
double startx = 110;
for(int y = 100; y <= 147; y++){
       for(double x = 63; x <= startx; x++){
               img.set(x , y, JRaster.purple);
       }
startx -= 1;
}

最佳答案

以下是我如何逐像素绘制圆的东北四分之一部分。您可以重复此操作,但对其他三个季度稍有变化。无需三角函数!

  • 首先绘制圆的最东点。然后,您将绘制更多像素,向北和向西移动,直到到达圆的最北点。
  • 计算您刚刚绘制的点距中心的距离。如果它大于半径,那么您的下一个像素将是左边的一个,否则,您的下一个像素将是上面的那个。
  • 重复上一步,直到到达最北点。

如果您在将其转换为 Java 或调整圆的其他四分之三时遇到困难,请发表评论。

关于java - 如何使用图形应用程序在 java 中逐像素绘制圆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19350501/

相关文章:

java - 如何允许两个使用不同 jre 的小程序工作

java - 使用 Applet 的 JAX-WS 客户端

java - android, Canvas 撤消最后一笔

c# - 在 C# 窗体上绘制圆圈后,我怎么知道我点击了哪个圆圈?

python - pygame.draw.rect() 不绘制另一个矩形

java - 通过自定义垃圾收集器防止 native 内存泄漏?

java - 如何使用 Google Drive Java Client Library 获取查询 Google Drive 的文件 ID

java - 为什么这个小程序有一个 destroy 方法?

java - 尝试在两个类之间传递表号

java - Android 时间到字节数组