2012-04-04 2 views
-1

У меня есть массив: int [] [] lawn = new int [980] [1280]; , где хранятся значения высоты лезвий в виртуальной «лужайке».Вычисление каждой декартовой точки в движущейся cicrle

В моей симуляции у меня есть робот, который идет вокруг лужайки и режет лезвия.

Мой робот имеет форму круга с диаметром (rDiameter). Система координат выполняется с помощью Double, а мой газон - в Integer.

Мне нужно разработать алгоритм, который помещает в 0 все ячейки, затронутые роботом, когда он перемещается.

У меня есть начальная и конечная точки движения, которые хранятся в форме Line2D.Double, и я хочу установить на 0 все ячейки, затронутые роботом (изображением). Любые идеи?

(Вот мой предыдущий вопрос о том же аргументе every cartesian point in a circle

+1

Вы описываете алгоритм кисти. –

+0

Просто примените ответ из предыдущего вопроса, чтобы найти все точки на вашем круге, затем установите их в 0 или все, что вы хотите сделать. Или вы хотите, чтобы кто-то еще сделал ВСЕ код для вас! c'mon dude;] – davidfrancis

+0

Нет ... это не сработает, с кругом вы получите крошечные пятна между двумя кругами, которые не покрыты ... – Seafire37

ответ

0

Разбейте проблему в 3-х частях. Часть 1 это установить на 0 все точки в полукруге. Часть 2 является значение 0 все точки прямоугольник. Часть 3 состоит в том, чтобы разбить путь на два полукруга (на концах) и прямоугольник (соединяющий их).

Обратите внимание, что полукруги и прямоугольники имеют, вообще говоря, линии, которые не являются вы можете найти алгоритмы Джека Бресенхама, или вы можете открыть любой классический текст компьютерной графики.

+0

Спасибо, мне нравится ваша идея, подумал об этом сам, но didn Не знаю, где есть алгоритмы для этого. Алгоритм Джека Брешенэма кажется прекрасным, попробуем! – Seafire37

+0

Обратите внимание, что он выполнял алгоритмы как для кругов, так и для линий. – DRVic

+0

Да, отметили! благодаря – Seafire37