我有一个数组:int [] [] lawn = new int [980] [1280]; 它将刀片高度的值存储在虚拟的“草坪”中。
在我的模拟中,我有一个机器人绕着草坪切割刀片。
我的机器人具有直径(rDiameter)的圆形。坐标系用Double完成,我的草坪用Integer。
我必须开发一种算法,当机器人四处移动时,它将机器人触摸的所有细胞都置为0。
我有运动的起点和终点,它们存储在Line2D.Double表格中,我想设置0机器人(图像)触摸的所有单元格。 有什么想法吗?
(这是我之前关于同一论点的问题every cartesian point in a circle
答案 0 :(得分:0)
分三个部分解决问题。第1部分是将半圆中的所有点设置为0。第2部分是将矩形中的所有点设置为0。第3部分是将路径分成两个半圆(在末端)和一个矩形(连接它们)。
请注意,半圆和矩形通常具有非轴对齐的线。有很多关于光栅化多边形和圆形的参考文献。你可以查看Jack Bresenham的算法。或者你可以翻开任何经典的计算机图形文字。