Добрый день! Прошу прощения з то что задаю вопрос не в том разделе, так как не нашел раздела в котором можно обсудить алгоритм. Собрал свой чпу станок из CD приводов, сейчас пытаюсь научить станок рисовать круг с заданной точкой центра и радиуса. Линии от точки до точки уже научил рисовать, а вот с окружностью пока проблема. Что и прошу подсказать. Смотрел алгоритм Брезенхема, но там окружность делится как бы на 4 части и рисуются сразу в 4 частей. Мне нужно чтобы станок начинал рисовать окружность с одной точки и на ней же заканчивал
Как вариант - полярные координаты: http://mathprofi.ru/poljarnye_koordinaty.html Когда-то давным-давно именно эту систему координат использовал для 2D-рисования и для всяких других вещей, типа нахождения пути.
А чем школьная тригонометрия не устроила? Центр + [косинус угла * диаметр, синус угла * диаметр] Перебираем углы с разрешением пропорциональным диаметру
При чём тут тетрадка? Используя полярную систему координат, координаты X,Y точки рассчитываются легко. Для этого достаточно только знать школьный курс геометрии. Угол поворота вектора - берёте каким захотите, можно хоть 4 точки на окружности с центром в любом месте рабочей области станка рассчитать, хоть - 1000 точек. Проблема в чём? В понимании того, что такое полярная система координат? Так я не зря ссылку дал - там всё описано.
Она, полярная, просто синус, косинус и ничего больше. А для простоты вычисления, через таблицу на четверть периода всё получается.
Спасибо всем большое! Круг получился, правда, не идеально ровно, думаю это проблема округления вещественных чисел.
может лучшим решением будет поставить grbl и использовать стандартные G-коды, где все намного проще? а не изобретать велосипед
алгоритм Брезенхема- он для любой кривой. В том числе и для круга, а по 4 секторам - вы видели видимо какую-то конкретную реализацию. Берите изменение параметра t чтобы длина кривой была 1 и по Брезенхему определяйте ближайшую целую точку, потом следующую точку.