«Рисование» дуги в дискретных шагах - PullRequest
2 голосов
/ 27 декабря 2010

Какой лучший способ нарисовать дугу, используя только движения по оси X-Y? Например, скажем, я хочу нарисовать круг с радиусом 4 в точке (4,4). Давайте увидим, что мой «ящик» начинается с (4,0) и разрешением 0,1 шага в каждом направлении. Как бы я создал последовательность движений, чтобы завершить круг?

Если неясно, я могу попытаться объяснить лучше.

Ответы [ 2 ]

3 голосов
/ 27 декабря 2010

Если я правильно понимаю ваш вопрос, вы ищете алгоритм Брезенхэма. Вы можете прочитать об этом здесь , например.

2 голосов
/ 27 декабря 2010

Вам нужен алгоритм круга средней точки, также известный как алгоритм круга Брезенхэма (хотя Брезенхем не разработал его). В Wikipedia есть достаточно хорошая статья об этом; также была реализация Python в вики LiteratePrograms (которой больше нет - ссылка на Wayback Machine) и несколько реализаций в Rosetta Code. Идея заключается в том, чтобы идти по кругу, последовательно вычисляя каждую координату из предыдущей (избегая более дорогих математических операций). Вы всегда двигаетесь в одном направлении (скажем, «вверх») и используете вычисленную переменную, чтобы решить, поворачивать или нет.

...