Форум программистов, компьютерный форум, киберфорум
Наши страницы
Геометрия
Войти
Регистрация
Восстановить пароль
 
dwarf
5 / 5 / 1
Регистрация: 04.03.2014
Сообщений: 20
#1

Круговая интерполяция - Геометрия

16.03.2017, 09:59. Просмотров 642. Ответов 15
Метки нет (Все метки)

Доброго времени суток!
Прошу помощи. Пишу визуализацию G-кода. Вывод X и Y координат проблем не представляет, но существуют ещё значения J и I, которые используются для круговой интерполяции (без неё всё очень топорно). А этого мой мозг вообще не воспринимает.
Может быть, кто-нибудь приведёт формулу, где достаточно будет подставить имеющиеся данные (X, Y, I и J), чтобы получить X и Y координаты промежуточных точек от A до B. Примеры во вложении
0
Миниатюры
Круговая интерполяция   Круговая интерполяция  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2017, 09:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Круговая интерполяция (Геометрия):

Интерполяция
Доброго времени суток! Есть не тривиальная задачка, а может и тривиальная......

Параболическая интерполяция
Здравствуйте, изучал материал по этой ссылке...

Круговая интерполяция: отладка с просмотром результата шага
Здравствуйте. Начал изучать asm. Разбираю круговую интерполяцию, столкнулся с...

Интерполяция заданной функции второй формулой Ньютона (обратная интерполяция)
Программа накапливает ошибку, да и первые значения совсем уже "приближённые"....

Интерполяция полиномом Лагранжа и кусочная интерполяция
столкнулась с такой проблемой: написала интерполяцию Лагранжа x=; ...

Круговая диаграмма
Добрый вечер Искал по всему форуму, но не нашел(или плохо искал) Как...

15
eropegov
327 / 327 / 63
Регистрация: 30.01.2017
Сообщений: 889
16.03.2017, 10:33 #2
Изначально задаются координаты http://www.cyberforum.ru/cgi-bin/latex.cgi? X,Y точки http://www.cyberforum.ru/cgi-bin/latex.cgi?A и сдвиги http://www.cyberforum.ru/cgi-bin/latex.cgi?I,J, по которым строится центр окружности? А как понять, в какой точке заканчивать дугу? То есть чем определяется положение точки http://www.cyberforum.ru/cgi-bin/latex.cgi?B? Или она задаётся изначально вместе с точкой http://www.cyberforum.ru/cgi-bin/latex.cgi?A?
0
dwarf
5 / 5 / 1
Регистрация: 04.03.2014
Сообщений: 20
16.03.2017, 10:46  [ТС] #3
Именно так, координаты точек A и B известны
0
eropegov
327 / 327 / 63
Регистрация: 30.01.2017
Сообщений: 889
16.03.2017, 10:48 #4
То есть вам дано 6 чисел? Но тогда они не независимы, так что входные данные могут оказаться противоречивыми.
0
dwarf
5 / 5 / 1
Регистрация: 04.03.2014
Сообщений: 20
16.03.2017, 11:07  [ТС] #5
"Ну станок ведь это как-то интерпретирует" ))
Возможно, я недостаточно точно сформулировал.
Фрэйм G02 X35 Y25 I20 J-5
Даёт данные о:
1. Координаты точки B. Bx = 35, By = 25;
2. I, J - координаты круговой интерполяции (так их официально называют), так же в документации о них написано:
При помощи I, J вы указываете относительные (инкрементальные) расстояния от начальной точки дуги до ее центра. Слово данных с I относится к оси X, слово данных с J – к оси Y. При этом в зависимости от расположения дуги значения могут быть положительными или отрицательными.
3. Данные о точке А (Ax и Ay) мы имеем из предыдущего фрэйма
Да, получается, что 6 чисел
0
Excalibur921
750 / 425 / 68
Регистрация: 12.10.2013
Сообщений: 2,837
16.03.2017, 12:50 #6
Цитата Сообщение от dwarf Посмотреть сообщение
А этого мой мозг вообще не воспринимает.
http://planetacam.ru/college/learn/6-3/
Суть 2+2 а так замудрили…и буквы буквы…

Странная у вас команда в примерах…а где координаты центра окружности и где подача?
“большинство систем ЧПУ позволяют выполнить операцию по описанию полной окружности за два или даже за один кадр.”
Похоже это прибахи форматов…как именно записывать на совести программиста\ инженера.

Значит по вашему примеру команды нужно брать два кадра, в каждом дублировать координаты центра дуги и добавить пару вещей так:
Nn Gn Xn Yn In Jn Fn
Nn номер команды
Gn по часовой\ против
Xn Yn глобальные координаты центра дуги
In Jn глобальные координаты точки
Fn подача

Идея расчета примерно такая:
Читаете два кадра, получаете 2 точки дуги, центр дуги, подача, направление дуги.
Считаете длину дуги. Зная длину дуги и подачу находите допустимый шаг в радианах на дуге.
Теперь найдя угол шага найти координаты точек между A и B можно двумя способами:
1)Параметрическим уравнением окружности. Угол в формуле очевидно зависит от допустимой скорости резца.
2)Матрицей поворота в 2д.
Все это есть в вики\инете. Или может кто математик вам распишет =).

Но скорей всего это все дикий велик…
“Intuwiz G-code Generator, автоматически генерирующее программы для станков с системами ЧПУ.”
http://www.intuwiz.ru/articles/g02-g03.html#.WMpDE_ltA9k
0
dwarf
5 / 5 / 1
Регистрация: 04.03.2014
Сообщений: 20
16.03.2017, 13:22  [ТС] #7
Excalibur921, да, вы привели обе страницы, с которых я начинал искать информацию по теме. Со второй даже взял картинку примера. И обе не помогли человеку, далёкому от геометрии.

Цитата Сообщение от Excalibur921 Посмотреть сообщение
Странная у вас команда в примерах…а где координаты центра окружности и где подача?
Пример более, чем реальный. Координат центра окружности там нет, а подача мне в расчётах не нужна

Цитата Сообщение от Excalibur921 Посмотреть сообщение
Похоже это прибахи форматов…как именно записывать на совести программиста\ инженера.
Что на это ответить? Приходится разбираться

Про всё остальное.. Я не для станка пишу, поэтому скорость подачи, резец и прочее мне не важно. Мне только картинку красивую вывести..)

Цитата Сообщение от Excalibur921 Посмотреть сообщение
Или может кто математик вам распишет =)
За этим и пришёл. Что для математика "2+2" и одна красивая формула, то для меня - тёмный лес
0
Fulcrum_013
Заблокирован
16.03.2017, 13:48 #8
Цитата Сообщение от dwarf Посмотреть сообщение
Может быть, кто-нибудь приведёт формулу, где достаточно будет подставить имеющиеся данные (X, Y, I и J), чтобы получить X и Y координаты промежуточных точек от A до B. Примеры во вложении
Смотрите в сторону алгоритма Брезенхема для окружностей. Как понимаю I и J соответствуют параметрам касательной в точке A.
0
Excalibur921
750 / 425 / 68
Регистрация: 12.10.2013
Сообщений: 2,837
16.03.2017, 14:05 #9
Цитата Сообщение от dwarf Посмотреть сообщение
Координат центра окружности там нет
Есть. Центр дуги находиться по двум фреймам. Только глянуть нужно в массиве там n+1 или n-1
Наверно так:
G02 X Y I J
xCn=X(n-1)+In
yCn=Y(n-1)+Jn
Цитата Сообщение от dwarf Посмотреть сообщение
только картинку красивую вывести
Тогда нарисовать дугу по центру и двум точкам с дискретным шагом в радианах.

Цитата Сообщение от dwarf Посмотреть сообщение
Что для математика "2+2" и одна красивая формула
Здесь уровень школьной программы за 5 класс.
“Окружность также можно описать с помощью параметрического уравнения:”
https://ru.wikipedia.org/wiki/Окружность

“Координаты (x',y') в результате поворота точки (x, y) имеют вид”
https://ru.wikipedia.org/wiki/Матрица_поворота

Значит идет такой студент со специальности художник-дизайнер…и вдруг его останавливает ректор и говорит что хочет чтобы вы сделали ему:

Визуализацию траектории резца на основе G кода круговой интерполяции для станка с числовым программным управлением на одном из языков программирования иначе поможет отчислить =)). Ну не может такого быть…
0
Fulcrum_013
Заблокирован
16.03.2017, 14:13 #10
Скорее всего I и J либо значения производных дуги либо приращения на шаг (фактически нормализованные значения производных ) в точке A. Вообще для эллиптической интерполяции без указания центра(частным случаем которой является круговая) пользуются два алгоритма - Брезенхема и Де Касельжо. При этом Де Кастельжо пользуют для рекурсивного вычисления точек путем деления дуги пополам. Для последовательного только Брезенхем который является целочисленным вариантом алгоритма DDA. Суть алгоритма практически та же что и линейного. Разница в том что приращение на каждом шаге меняется (т.е. прямая соответствует движению точки с постоянными скоростями по осям окружность/эллипс с переменными). Соответственно I в той или иной форме должно задавать шаг приращения в точке A для построения следующей точки, J шаг приращения шага.
0
Excalibur921
750 / 425 / 68
Регистрация: 12.10.2013
Сообщений: 2,837
16.03.2017, 14:26 #11
На рис. видно что I,J это локальные координаты C относительно A.
Цитата Сообщение от dwarf Посмотреть сообщение
Данные о точке А (Ax и Ay) мы имеем из предыдущего фрэйма
0
Fulcrum_013
Заблокирован
16.03.2017, 14:34 #12
Цитата Сообщение от Excalibur921 Посмотреть сообщение
На рис. видно что I,J это локальные координаты C относительно A.
Так тогда все еще проще. Имеем координаты центра и радиус. Если это только для визуализации то имеем и две точки начала и конца дуги которые нужны для функций построения дуги WinAPI. Если для вывода на станок то запрягаем штатный Брезенхем в общем виде (который кстати и живет под капотом функций WinAPI) для шаговых двигателей. Для серво либо считаем производные в точке и пользуем их как скорости и ускорения либо вытаскиваем скорость/ускорение из Брезенхема на каждом шаге (для круга ускорения будут постоянными по всей длине дуги)
0
Excalibur921
750 / 425 / 68
Регистрация: 12.10.2013
Сообщений: 2,837
16.03.2017, 14:52 #13
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
для шаговых двигателей.
Проще:
Цитата Сообщение от dwarf Посмотреть сообщение
Я не для станка пишу, поэтому скорость подачи, резец и прочее мне не важно. Мне только картинку красивую вывести..)
И даже может и без кода.
В бесплатной geogebra можно набросать массив точек и соединить инструментом(дуга по 3 точкам) всетаки 2017 года пора бы велики...
Там и адаптивная интерполяция кривой есть и сглаживание растра…
От юзера только 3 раза мышкой ткнуть.
Название: ScreenShot00105.jpg
Просмотров: 33

Размер: 6.6 Кб
0
ДАОС_
2 / 2 / 1
Регистрация: 19.02.2017
Сообщений: 34
16.03.2017, 14:57 #14
Попробую объяснить.

G03 X66 I-134 J-307.76

1. Начальная точка нам известна - она описана в предыдущем кадре.
2 'X66' - это конечная точка, куда приедет фреза 'Y' в данном случае отсутствует. а значит он остаётся без изменений.
3. 'I, J' - тут описаны смещения для вычисления центра окружности, I-для X, J-для Y.
Ну и G03 - рисовать против часовой.
0
ДАОС_
2 / 2 / 1
Регистрация: 19.02.2017
Сообщений: 34
16.03.2017, 15:17 #15
Катинка
0
Миниатюры
Круговая интерполяция  
Fulcrum_013
Заблокирован
16.03.2017, 15:25 #16
Цитата Сообщение от ДАОС_ Посмотреть сообщение
'I, J' - тут описаны смещения для вычисления центра окружности, I-для X, J-для Y.
Они же используются для вычисления радиуса по Пифагору. Зная радиус и координаты центра тривиально вычисляем координаты описанного прямоугольника нужного для функций WinAPI Точки отсечения дуги для этих функций уже есть в исходных данных.
0
16.03.2017, 15:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2017, 15:25
Привет! Вот еще темы с решениями:

Круговая диаграмма
Ребят, уже не прошу готового решения. Просто прошу подтолкнуть на мысль. Задан...

Круговая диаграмма
Нужно построить круговую диаграмму которая берет значения с файла (Кол-во...

Круговая диаграмма
Люди, помогите скажите как строить круговую диаграмму? в excel

Круговая диаграмма в 1с
всем привет. задача необходимо построить диаграмму круговую в отчете....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru