Алгоритм по рисованию круга

Тема в разделе "Технологии радиолюбителя", создана пользователем bigory, 31 мар 2019.

  1. bigory

    bigory Нерд

    Добрый день! Прошу прощения з то что задаю вопрос не в том разделе, так как не нашел раздела в котором можно обсудить алгоритм.
    Собрал свой чпу станок из CD приводов, сейчас пытаюсь научить станок рисовать круг с заданной точкой центра и радиуса. Линии от точки до точки уже научил рисовать, а вот с окружностью пока проблема. Что и прошу подсказать. Смотрел алгоритм Брезенхема, но там окружность делится как бы на 4 части и рисуются сразу в 4 частей. Мне нужно чтобы станок начинал рисовать окружность с одной точки и на ней же заканчивал
     
  2. DIYMan

    DIYMan Гуру

    Как вариант - полярные координаты: http://mathprofi.ru/poljarnye_koordinaty.html Когда-то давным-давно именно эту систему координат использовал для 2D-рисования и для всяких других вещей, типа нахождения пути.
     
    bigory нравится это.
  3. А чем школьная тригонометрия не устроила? Центр + [косинус угла * диаметр, синус угла * диаметр]
    Перебираем углы с разрешением пропорциональным диаметру
     
    bigory нравится это.
  4. Так вам окружность рисовать, или двигать по требуемому маршруту?
     
  5. DIYMan

    DIYMan Гуру

    При чём тут тетрадка? Используя полярную систему координат, координаты X,Y точки рассчитываются легко. Для этого достаточно только знать школьный курс геометрии. Угол поворота вектора - берёте каким захотите, можно хоть 4 точки на окружности с центром в любом месте рабочей области станка рассчитать, хоть - 1000 точек.

    Проблема в чём? В понимании того, что такое полярная система координат? Так я не зря ссылку дал - там всё описано.
     
  6. bigory

    bigory Нерд

    Попробую варианты, спасибо!
     
  7. Она, полярная, просто синус, косинус и ничего больше. А для простоты вычисления, через таблицу на четверть периода всё получается.
     
  8. bigory

    bigory Нерд

    Спасибо всем большое! Круг получился, правда, не идеально ровно, думаю это проблема округления вещественных чисел.
     
  9. DIYMan

    DIYMan Гуру

    Так вроде как floor и ceil никуда не делись из стандартных библиотек ;)
     
    bigory нравится это.
  10. bigory

    bigory Нерд

    Ага, спасибо! Откопал round(), вроде как по точнее будет :)
     
  11. exe

    exe Гик

    может лучшим решением будет поставить grbl и использовать стандартные G-коды, где все намного проще? а не изобретать велосипед :)
     
  12. Asper Daffy

    Asper Daffy Гуру

    радиус
     
    DetSimen нравится это.
  13. Onkel

    Onkel Гуру

    алгоритм Брезенхема- он для любой кривой. В том числе и для круга, а по 4 секторам - вы видели видимо какую-то конкретную реализацию. Берите изменение параметра t чтобы длина кривой была 1 и по Брезенхему определяйте ближайшую целую точку, потом следующую точку.