Статья из сайта petrovlam.ru
Автор: Петров В. М.
Введена 27.07.2007
Последнее обновление: 29.08.2011

 

Доработана:   29.10.09

Исправлена: 29.08.11

 

Часть 2       Примеры применения П-функций

для машинного моделирования двумерных контуров

 

     Аннотация.   Приводятся примеры использования П-функций для машинного моделирования двумерных контуров.

 

      В машинном моделировании взаимодействия между контурными компонентами могут описываться одной из трёх операций:

      -     Сложение (объединение)

      -     Вычитание (вырезание)

      -     Пересечение (выделение общей территории)

И четвёртого не дано!

      Компонентами, при этом, могут выступать либо БФ, либо результаты их предварительного взаимодействия.

 

Сложение

 

      Операция предполагает слияние двух контурных компонентов в единый контур,  роль которого выполняет наружная граница, огибающая оба компонента.

 

      Пример такого объединения представлен на рисунке 2-1.

 

 

Рис. 2-1    Пример операции «Сложение»

 

      На приведённом рисунке сознательно не указаны параметры объединения (координаты и размеры). В общем случае компоненты совсем не обязательно должны перекрывать друг друга. В последнем случае визуальный результат останется неизменным. Две визуально независимые, но полученные от операции сложения, части, тем не менее, уже являются общим контуром, хотя и состоящим из двух (в данном случае) контуров.

 

Вычитание

 

      Операция предполагает слияние двух контурных компонентов в единый контур,  роль которого выполняет наружная граница, повторяющая контур первого компонента до точек его пересечения с вычитаемым контуром. Остальная часть уменьшаемого контура, совпадающая с контуром вычитаемой БФ, отбрасывается. Замыкается полученная часть тем участком контура вычитаемого компонента, которая попала внутрь контура уменьшаемого компонента. Остальная часть вычитаемого контура отбрасывается.

      Применительно к операции «Вычитание» следует иметь в виду, что тут «от перемены мест слагаемых сумма меняется!». Таким образом, не всё равно, какой из двух компонентов будет уменьшаемым, а какой – вычитаемым.

 

      Пример такого объединения, когда «уменьшаемым» является «Окружность, представлен на рисунке 2-2.

 

 

Рис. 2-3    Пример операции «Вычитание»

 

      На приведённом рисунке сознательно не указаны параметры объединения (координаты и размеры). В общем случае компоненты совсем не обязательно должны перекрывать друг друга. В последнем случае визуальный результат останется неизменным относительно исходного. Две визуально независимые, но полученные от операции «Вычитание», части, тем не менее, уже являются общим контуром, хотя и состоящим из двух (в данном случае) контуров.

      Чисто теоретически – это так! Но практически - вычитаемая часть просто исчезнет. И в дальнейших действиях участия принимать уже не будет!

 

ПРИМЕЧАНИЕ

      Замечание о практическом результате относится только к двумерному моделированию.

 

Пересечение

 

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

 

      Пример такого объединения представлен на рисунке 2-3.

 

 

Рис. 2-3    Пример операции «Пересечение»

 

      На приведённом рисунке сознательно не указаны параметры объединения (координаты и размеры). В общем случае компоненты совсем не обязательно должны перекрывать друг друга. В последнем случае визуальный результат останется неизменным относительно исходного. Две визуально независимые, но полученные от операции вычитания, части, тем не менее, уже являются результатом объединения контуров по правилам операции «Пересечение».

      Чисто теоретически – это так! Но практически – оба контура просто исчезнут. И в дальнейших действиях участия принимать уже не будут!

 

ПРИМЕЧАНИЕ

      Замечание о практическом результате относится только к двумерному моделированию.

 

      Если бы взаимодействующие контуры всегда можно было описать аналитическим выражением (например, уравнение контура «Окружность»), то вычислить для них области удаляемых и оставляемых участков можно было бы, не прибегая к сканированию. Но «по закону подлости» такие варианты встречаются как раз слишком редко. Именно поэтому метод сканирования можно считать универсальным и не зависящим от типов взаимодействующих контуров.

 

      На этом месте совершенно необходимо сделать паузу и подумать: «А какую, собственно, цель мы преследуем?»

 

      Одно дело – просто получить изображение. А другое – одновременно с этим иметь возможность подсчитать, например, площадь фигуры, или определить центр масс, или … Ну, и так далее!

 

      Дело в том, что кроме метода «лобового» сканирования для решения первой задачи иногда выгоднее применить метод «Аппликации». Это, как раз, и будет рассмотрено в следующей части.

 

 


Просмотров: 3062

Комментарии к статье:

№ 574   Роман   2011-28-08 23:08:26
А для чего вам понадобилось пересечение?
Ведь оно технологически нереализуемо, иными словами вы можете соединить 2 объекта в один или наборот что нибудь вырезать, но вот пересечь никак не получится, только разве что с помошью нескольких вырезаний. Почему бы вместо пересечения к базису не добавить инверсию, которая была бы пригодилась для незамкнутых тел/фигур, к примеру для построения сечений плоскостью/прямой.

А еще вы так и не дали ответ на ваш же вопрос "А какую, собственно, цель мы преследуем?". Я сам давно задавался вопросом, а можно ли приспособить R-функций для чего нибудь практического годного, но, честно говоря, кроме "умножения сущностей без надобности" особого примения не увидел. Т.е. решения новых или упрощения старых задач, решаемых обычными методами.
№ 575   Владимир Максимович   2011-29-08 00:24:11
На №574.
1     Как раз цель точно обозначена - Получить очертание результирующей фигуры
2     Операция "Пересечение" используется, именно это описано в статье, как один из удобных способов получения контура результирующей фигуры.
     Можно ли вместо операции "Пересечение" применить операцию "Инверсия"? Наверное, можно, если предварительно определить, что это такое, и соответствующим образом описать её. Я, например, так и не понял Вашу мысль.
3.     Использование моих П-функций (не R-функций) позволяет представить многие геометрические двумерные формы в виде законченных уравнений. Такие уравнения удобны для программной обработки теоретико-множественных операций.
№ 576   Роман   2011-29-08 05:01:59
1. Вы утверждаете "получить очертание результирующей фигуры", а что именно вы под этим понимаете? Из дальнейшего следует что вы подразумеваете получение растрового изображения, причем используя уже существующие функции прорисовки фигур, составляющих контур. Непонятно, для чего в проектировании может потребоваться решение подобной задачи.

2. Мне понятно для чего конкретно в вашем примере используется "Пересечение", мне непонятно откуда она в принципе может взяться при проектировании.
На самом деле потребность в ней возникает если объект состоит из нескольких ограничивающих поверхностей, но тогда "лишней" становится вычитание.
С инверсией тут все просто: допустим в случае окружности нужная вам область находится внутри, а может снаружи (дыра). Вот одно уравнение получается из другого инверсией. Тогда вычитание это будет пересечение первого с инверсией второго. Чем оно лучше? А тем что фунцкии получаются проще.

3. Честное слово я пытался понять чем ваши П-функции отличаются от R-функций и увидел лишь что явным введение некторого набора примитивов, названных у вас алгоритмами. Поправьте меня если я не прав.

А вот теперь самый главный вопрос, который не дает мне покоя.
Допустим получили вы искомое уравнение вашей фигуры сложной формы в виде F(x,y), которое соотвественно отрицательно внутри, положительно снаружи и нуль на границе. И что дальше со столь замечательным уравнением делать?
Умея лишь вычислять значение этой функций в точке, вы даже не сможете априрори сказать вырожденная эта фигура или нет (допустим чтобы определеть "столкновения" двух фигур).
№ 579   Владимир Максимович   2011-29-08 11:56:40
На №576.
1.     Роман, похоже, что Вы увлекаетесь критикой не ради улучшения сути вопроса, а ради критики, как таковой.
2.     В ответе на Ваш предыдущий комментарий я предложил сформулировать операцию "Инверсия" и дать её описание. Вы проигнорировали моё предложение. А в данном комментарии, не закончив одного, сходу перешли на критику другого.
3.     Я думаю, что наша дискуссия не слишком соответствует статусу "Комментарий к статье". Это скорее - философский подход к математическому моделированию. А для такого обмена, по-моему, более подходит обмен информацией при помощи электронной почты.
4.     Под "Результирующей фигурой" я понимаю контур, получаемый после проведения теоретико-множественной операции.
5.     Само изображение итогового контура (впрочем, как и компонентов его) может быть растровым, векторным или каким-то ещё. Способ отображения не связан с теоретико-множественными операциями.
6.     Я допускаю, что цель таких операций Вам может быть пока не понятной. Всему надо учиться. Если, к примеру, первокласснику рассказать о тройном интеграле, то мала вероятность того, что первоклассник что-нибудь сразу же и поймёт.
     Когда я занимался разработкой САПР, то ставил перед собой задачу записать формулу машиностроительной детали. В соответсвии с этой формулой компьютер программно формировал на экране итоговое изображение. Эту программу я же сам и написал. Сам же её и проверил.
     По этой же формуле компьютер мог автоматически проставить необходимые размеры. Алгоритм этой программы был мною же разработан и мною же проверен.
7.     Операция "Вычитание" не может быть лишней по определению. Ведь не так уж редко возникает необходимость в проектировании детали, содержащей в себе различные выемки и полости.
8.     В предыдущем Вашем комментарии критику вызвала операция "Пересечение". Сейчас же Вы предлагаете оставить "Пересечение", но заменить операцию "Вычитание" операцией "Пересечение" с "Инверсией". Я не имею ничего против. Определите и опишите правила. Тогда можно будет сравнить.
9.     П-функция - это R-функция, адаптированная к конкретной геометрической форме.
10.     Если имеется уравнение детали, то с ним можно проделать много полезного: отобразить, проставить размеры, просчитать объём, предложить вариант технологической обработки (изготовления), проводить анализ на оптимизацию (формы, техпроцесса, затрат и т. д.), используюя соответсвующую экспертную систему. Такую систему я разрабатывал для проектирования редукторов).
11.     Мне пока не понтно Ваше сомнение о возможности проведения анализа рядом находящихся деталей. Я уже назвал систему АВТОМАТИЧЕСКОЙ простановки размеров. Так что пресловутое "столкновение"- задача явно надуманно-придуманная. Во всяком случае до тех пор, пока Вы не приведёте убедительного доказательства.
№ 580   Роман   2011-29-08 16:07:12
Вот как раз пункт 10 меня больше всего и интересует, как именно можно с помощью П-функций решить перечисленные вами задачи. Вот, например, для простоты, вычисление площади фигуры полученной объединением двух контуров, состоящих из отрезков прямых без самопересечений.
У меня нет цели критиковать вас, я действительно пытаюсь разобраться как с помощью вашего подохода можно решить акутальные задачи. К сожалению, я увидел лишь решение одной конкретной задачи - получение растрового изображения результирующего контура. Было бы замечательно если бы восполнили этот пробел, возможно даже отдельной статьей. Попиксельная отрисовка черезвычайно неэффективна даже с целью получения изображения самого по себе - это дополнительная работа для процессора вместо того чтобы заставлять делать это видоекарту, перередавая лишь координаты концов отрезков. Вот тут бы и представляет интересно получение результирующего контура в векторной форме, существенным моментом которого является получение координат новых точек (в рзультате их пересечения) и отсечение ненужных частей в соответствии с теоретико-множественной операцией.
Про "столкновение" это у Рвачева написано - он там много рассуждает об оптимальном раскрое материала, ограничиваясь, к сожалению, одними лишь формальным преобразованиями. У меня как раз нет смонений - я просто не понимаю, как это делается на практике, потому и обращаюсь к вам за помощью.

Дискуссия действительно мало соотвествует формату комментариев к статье. Возможно эту дискуссию можно продолжить на каком-нибудь, удобном вам, тематическом форуме или в ЖЖ. Ну или e-mail как крайний вариант, но считаю его наихудшим из всех, поскольку теряется публичность дискуссии.

№ 581   Владимир Максимович   2011-29-08 17:33:53
на № 580.
     Роман, предлагаю Вам текст Вашего последнего комментария (впрочем, можно и вместе с остальными) перевести в формат *.doc и переслать документ мне на почту petrovla@yandex.ru.
     Публичность потеряна не будет, так как у меня почти во всех рубриках при необходимости вводятся главы (иногда - разделы) ПЕРЕПИСКА. В этих главах я размещаю письмо Читателя и собственный ответ.
     С моей точки зрения этот приём эффективнее традиционных форумов, так как не позволяет "растекаться мыслью по древу".
     Кроме того, практика показывает, что в дискуссиях всегда участвуют только два Человека: Я и Мой оппонент.
№ 582   Роман   2011-29-08 21:17:30
Отправлено.
Если вам удобнее так, то давайте переписываться.
С чем я не согласен, что я ваш оппонент, скорее интересующийся деталями.
С другой стороны, к дискуссиям иногда проявляют интерес и другие участники если площадка соотествующей тематики.
№ 583   Владимир Максимович   2011-29-08 22:30:00
На №582.
     Вот и славно.
     Роман, если Вам не нравится статус "Мой оппонент", то его можно заменить, например, на "Любознательный Читатель".
№ 584   Роман   2011-03-09 15:50:52
По всей видимости Владимир Максимович черезвычайно занятой человек, посколько ответа, к сожалению, я так и не получил.
№ 585   Владимир Максимович   2011-03-09 17:48:06
На №584.
     Да, Роман, Вы абсолютно правильно поняли ситуацию. Я действительно в настоящий момент решаю задачу, имеющую для меня более высокий приоритет. Но ответ на Ваш вопрос остаётся у меня, тем не менее, на ближайшей очереди.

Ваще сообщение:
 

 

Добавить комментарий

[B] [I] [u] [S] [2] [2]       [TAB] [∑] [∓] [≈] [≠] [≤] [≥] [π] [×] [√]       [RED] [GRE] [BLU]

[α] [β] [Γ] [γ] [Σ] [σ] [Δ] [δ] [Ω] [ω] [μ] [Λ] [λ]