Применение заливки для запоминания графической информации

Автор Vitalij Lysanov, 02.02.19, 16:13:13

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Vitalij Lysanov

02.02.19, 16:13:13 Последнее редактирование: 02.02.19, 21:35:08 от Vitalij Lysanov
Применение заливки для запоминания графической информации


Следы на заливке остаются, если выполнять обычные построения, можно и массивом. Если бы массив еще и доворачивал объекты, было бы совсем хорошо.
Применим это для получения профиля от движения инструмента. Если выполнить много построений инструмента с определенным шагом, тоже получим профиль, и тут одна большая разница.
Все эти положения объектов нужно хранить по полной программе.
Если рисуем на заливке, это хранится неизвестно где, только не в виде объектов. Полученную картинку можно успеть скопировать захватами с экрана, потому что при малейшем движении изображение пропадает. Если интересует определенный участок изображения, можно предварительно встать на эту область и включить построение.
Включить построение, это из программы формируются изображения инструмента при его движении.



Рис.1 Профиль от движения по окружности вращающегося треугольника   


Чтобы повторить такой профиль достаточно знать координаты треугольника, размеры окружностей и множитель углов поворота на окружностях. Конструкции должны быть технологичны. 

Это как операции на видеокарте. И пока трудно ощутить всю прелесть этого метода. Сама программа построения медленно работает. Вопрос что красивее и полезней прояснится потом.

Рисовать лучше тонкими линиями, при сложении может получиться эффект полутонов.

Размер результирующего массива не должен увеличиваться во время работы программы. Должны быть критерии, что ищем максимум или минимум. Если из программы, это просто сдвигаем линию максимумов или минимумов.


Ускорение построения
Уже было такое. На колесике нажимаешь кнопку, скорость перестроения картинки раза в три точно увеличивается. Это другая программа включается, и некоторые функции блокируются для поворотов. Курсор изменяет форму. Как программно включить нажатие кнопки на колесике мыши? Это просто для ускорения построения.

Подозреваю, что при нажатой кнопке на колесике
Система расслабляется, не ждет пакостей от пользователей,
отключает некоторые службы

Для радости          пользователей, решающих в это время фоновые задачи

Ускорение в 3D наблюдалось на задаче

Вставить в сборку много деталей
И совместить по две ЛСК деталей
Это конусы вверху и внизу имели ЛСК
Верхняя ЛСК повернута
Получалась спиральная гирлянда из конусов
 

   


Фракталы
Изображения, особенно в 3D это затратная процедура. Из ничего получить много и чтобы было на что то похоже?
Слово Похоже можно попробовать интепретировать во всех смыслах.
Фракталы как раз из ничего строят картины.
Фрезы тоже могут. И вращение вместе с Землей вокруг Солнца более природное занятие.
 
Перемещать себя по себе
Тут близко еще одна задача. Как в изображении найти контур нарисованного мишки. Все изображение перемешаем по контуру мишки и складываем. Там где мишка будет максимум функции сложения. Допустим хотим в изображении найти окружность определенного диаметра. Перемещаем изображене по окружности и складываем. Ясно что в центре будет максимум сложения от всех окружностей.


Реальный пример
Микроэлектроника. Засветка ультрафиолетом.
Особенность, что физически можно получить засветку от примитивов которые двигаются по траекториям.
По заданной конфигурации трафарета, подбирают примитив и траекторию движения.

Практически тоже можно:

  • Болгарка закрепленная на паре шестерен с определенным соотношением зубьев.
    Или электрод при искровой обработке.




Программа
Макрорекордером можно записать заливку и построение любого отрезка.


obj = iDocument2D.ksLineSeg(26.72291666666, -18.52083333333, 69.15491931968, 13.23645167112, 1)
Это построение отрезка.  Добавить еще нужно



Получаем координаты отрезка
par  =module_5.ksLineSegParam(iKompasObject.GetParamStruct(const_7.ko_LineSegParam))
par.Init()
t = iDocument2D.ksGetObjParam( obj, par, const_7.ksAllParam )         # Получить параметры отрезка

d1=120                                        # Диаметры окружностей
d2=40

mn=7                                           # Множитель по углу поворота
mn2=1
for ug in range(0,370*1,1):           # Цикл по одному градусу


     ra=math.radians(ug)
     ra1=0.10+math.radians(ug)

    par.x1=(d1+d2)/1+d1*math.sin(ra)+mn2*d2*math.sin(ra*mn)         # Изменяем координаты отрезка
    par.y1=(d1+d2)/1+d1*math.cos(ra)+mn2*d2*math.cos(ra*mn)


    par.x2=(d1+d2)/1+d1*math.sin(ra)-d2*math.sin(ra*mn)
    par.y2=(d1+d2)/1+d1*math.cos(ra)-d2*math.cos(ra*mn)

    t=iDocument2D.ksSetObjParam( p1, par, const_7.ksAllParam )    # Записываем измененные координаты отрезка
                                                                                                               и он перестраивается
   


Картинки