3.9 От кривых к поверхностям

Рис.3.10. От кривых к поверхностям.

Всё, что уже говорилось о NURBS кривых, справедливо и для NURBS поверхностей. Также существует определяющий многоугольник, но теперь он распространяется на два напраления и называется контрольной сеткой. Теперь мы будем говорить о пространстве двух параметров u-v. Большинство свойств, рассмотренных ранее, подходят и для пространства двух параметров. Кроме того, для поверхностей будет иметь место дополнительное свойство: в любой точке поверхности пересечение двух касательных к поверхности даёт внешнюю нормаль. И, наконец, как показано на рис.3.10, поверхность меньше повторяет форму контрольной сетки, чем кривая. Это является следствием того, что FastShip работает с тензорными поверхностями. Поэтому в случае кривой сдвиг вершины определяющего многоугольника на одну единицу вверх вызывает сдвиг самой кривой на полединицы вверх, а в случае поверхности сдвиг вершины сетки можно рассматривать как сдвиг поверхности на полединицы в каждом направлении, т.е. в итоге на четверть вверх.

 

3.10 Граничные условия и сломы

зеркальное г.у. конечное г.у. натурального сплайна

Рис.3.11. Граничные условия FastShip

Известно, что NURBS кривая при подходе к своим конечным точкам приближается к касательной, проведённой в этих точках. Представим плазовщика, изображающего окончания ватерлиний гибкой рейкой. Если плазовщик расставит точки по рейке так, что последняя точка окажется на самой кромке ватерлинии, а рейка может принимать любую форму, то получится визуализированное конечное условие натурального сплайна(см. рис.3.11). Однако часто случается, что окончания ватерлиний проходят перпендикулярно диаметральной плоскости, например, эллиптические окончания ватерлиний. Плазовщик будет вынужден чрезмерно изогнуть линейку или воспользоваться корабельным лекалом. Пользуясь В-сплайном данная проблема легко решается, установив наклонную определяющего многоугольника перпендикулярно диаметральной плоскости. Это называется зеркальным граничным условием. Отсюда видно, насколько однозначно В-сплайн определяет такое конечное условие.

Рассмотрим сломы кривых и поверхностей. Мы уже знаем, как можно использовать многозначные вершины или многозначные узлы, чтобы заставить В-сплайн проходить через заданную точку. Подразумевается, чтобы получить слом кривой нужно использовать любой приём, который сделал бы наклонные в этой точке неколлинеарными. Тогда возникает вопрос, что лучше использовать многозначные вершины или многозначные узлы? По этому поводу можно сделать два замечания. Первое, многозначные узлы считаются более предпочтительным вариантом, т.к. они хорошо определяются в рамках NURBS математики и не требуют дополнительной обработки. Знайте, что некоторые приложения, использующие в своей работе математику NURBS, не работают с многозначными вершинами, поэтому если вы планируете переместить свою работу в другое приложение, то возможно столкнетесь с проблемой дополнительной доработки. Второе замечание заключается в следующем: многозначный узел лучше использовать, если слом имеет большую длину, как, например, скуловой слом, а многозначные вершины лучше на локальных сломах, например, транец или палубный слом.

 

3.11 Итоги главы. Основные свойства NURBS

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

·           В общем случае поверхность повторяет форму определяющей контрольной сети. Фактически, контрольную сеть можно рассматривать, как увеличенное изображение поверхности. Т.о. если мы имеем перегибы в определяющей сети, то в поверхности тоже будут перегибы. Забегая вперёд, если мы хотим получить гладкую поверхность, то мы должны иметь гладкую сеть.

·           Влияние любой вершины в определяющей сети ограничивается расстоянием плюс или минус порядок поверхности, делённый на два в любом направлении.

·           Поверхность инвариантна по отношению к аффинному преобразованию. Аффинное преобразование- преобразование, сохраняющее отношения длин масштабов и углов. Другими словами, выполнение аффинного преобразования не меняет физической сущности поверхности.

·           Непрерывность поверхности оценивается по числу равному порядок поверхности минус 2 в каждом параметрическом направлении. Фактически, если нет многозначных вершин или многозначных узлов, то непрерывность поверхности на данном интервале обеспечена.

·           Каждая многозначная вершина или многозначный узел снижает непрерывность поверхности на интервале на один порядок.Т.о. имея многозначную вершину или многозначный узел равный степени поверхности в каком-либо направлении достигается слом поверхности.

·           В-сплайн поверхность совпадает с вершинами определяющей сети в конечных точках поверхности; кроме того, поверхность, подходя к конечным точкам, приближается к касательным, восстановленным в конечных точках. Чтобы точно изобразить круглые или конические поверхности необходимо назначить вершине вес. Это можно сделать и по-другому, а именно, добавляя строки и столбцы вершин сети.

·           В-сплайн поверхность можно всегда представить эквивалентной поверхностью большего порядка, но нельзя представить поверхностью меньшего порядка.


4. ПОСТРОЕНИЕ ТЕОРЕТИЧЕСКОЙ ПОВЕРХНОСТИ СУДНА 4.1 Построение плоского листа поверхности

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

Построение поверхности начнём "с пустого места" (start from scratch). Построим плоский лист, придадим ему нужную трёхмерную форму, а затем сверху наставим ещё две поверхности: бак и ют.

Зададим единицы измерения для работы в FastShip. Для этого:

Выберем меню "File"

Выберем пункт "Preferences"

Перейдём на вкладку "Units"

Нажмём клавишу "Set metric", чтобы работать в метрической системе измерения

FastShip использует Х как абсциссу, Y – ординату, Z – аппликату. По умолчанию, направление Х принимается справа налево, направление Y – от ДП к правому борту, и Z – сверху вниз.

Рис.4.1 Окно FastShip6


Изменим систему координат FastShip, так, чтобы ось Z была направлена для создания плоского листа поверхности вертикально вверх. Для этого:

Нажмём "File"

Выберем "Preferences"

Установим значок рядом с Pozitive Z up

Нажмём ОК

Получим плоский лист заданных размеров, для этого

выберем в падающем меню "Parts"

нажмём пункт "Create".

На экране появится окно, показанное на рис.4.1. Заполним его так, как показано на этом рисунке.

Рис.4.2. Первоначальный плоский лист поверхности (здесь и далее цвет фона экрана и поверхности изменен).

В графе "Part Type" выберем пункт "Plate", т.к. мы хотим иметь плоский лист. В графу "Name" впишем hull. При дальнейшей работе эта часть поверхности в дереве деталей будет обозначаться именно так. Что касается степени поверхности, то мы хотим, чтобы наша поверхность имела кривизну в обоих направлениях, поэтому в графе "Degree" оставим цифры 3, т.е. поверхность будет третьей степени; квадратичными поверхностями труднее манипулировать, а поверхности 4ой степени не дают больших преимуществ. В "Intervals" поставим цифры 3; начнём с поверхности, имеющей 3 интервала, впоследствии количество интервалов можно будет изменить. Лист будет располагаться в плоскости XOZ при Y=0, т.е. в "Orientation" выберем именно эту плоскость. В графе "Size" выберем соответствующие размеры разрабатываемой части судна. Центр тяжести листа будет располагаться при X=20.1 Y=0 Z=1.65, т.к. начало отсчёта мы хотим совместить с нулевым шпангоутом.

Нажимая клавишу OK, получим на экране плоский лист поверхности.

При изображении поверхности можно пользоваться несколькими видовыми экранами (см. рис.3.3.). На экране можно поместить одновременно один, два и четыре видовых экрана. Для этого нужно воспользоваться соответственно панелями

Рис.4.3. Использование нескольких видовых экранов для изображения поверхности .

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

Используем для изображения листа четыре видовых экрана

(см. рис.4.3.). На активном видовом экране лист повёрнут в пространстве. Для вращения и поворота поверхности в пространстве в FastShip предусмотрена панель, при этом нужно нажать на эту панель и удерживая её нажатой, поводить мышкой на экране.

Чтобы посмотреть на контрольную сетку нужно нажать клавишу

Чертёж примет вид, показанный на рис.4.4. Чтобы вернуться обратно к поверхности нужно воспользоваться клавишей

Есть альтернативный вариант одновременного просмотра поверхности и контрольной сетки с помощью клавиши

На рис.4.4. изображено два вида поверхности: верхнюю часть экрана занимает поверхность, а нижнюю – контрольная сетка этой поверхности. Сплошные вертикальные и горизонтальные линии контрольной сетки представляют собой границы интервалов (на рис.4.1. мы разбили поверхность на три интервала по длине и три – по ширине). Сплошным вертикальным линиям контрольной сетки соответствуют сплошные линии на поверхности. Внутри каждого интервала поверхности линий не изображено. Чтобы увидеть их сделаем следующее: в меню "File" выберем пункт "Preferences" и откроем вкладку "Graрhics". Заполним строки, как показано на рис.4.5. Нажав "ОК", получим изображение, как на рис.4.6.

Рис.4.4. Контрольная сетка поверхности (на активном экране)


Рис.4.5. Окно "Preferences".

Создастся новая поверхность, FastShip пересчитает поверхность и высветит 3 точки на интервал, как в направлении столбцов, так и в направлении строк. Число точек, вычисляемых поверхностью (плотность поверхности), рассчитывается как количество интервалов поверхности, делённое на интервал контрольной сетки; интервалы могут быть различны по строкам и по столбцам. По умолчанию FastShip рассчитывает 3x3 дополнительных интервала (3-по строкам и 3-по столбцам). Это значит, что для каждого интервала контрольной сетки FastShip высчитывает 3 интервала поверхности.

 

Рис.4.6. Пересчитанная поверхность (3 точки на интервал)

Чтобы понять назначение плотности поверхности, достаточно привести такой пример: если строить круг отрезками, имея малое количество данных точек (малую плотность), полученная фигура будет слабо напоминать круг. Но не нужно бросаться в крайность, т.е. назначать слишком большую плотность поверхности (сотни дополнительных точек), т.к. это чрезмерно захламляет экран и замедляет работу программы. Оптимальным вариантом является 4x4, или чуть выше. Пунктирные линии (линии контроля кривизны) всегда располагаются у внутреннего края поверхности и существуют для контроля поверхности у четырёх кромок.

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

4.2 Скругление форштевня. Передвижение точек в FastShip

Определим форму форштевня как прямую. Впоследствии подкорректируем её для придания соответствующей формы. Чтобы получить прямую поверхность, нужно иметь прямую конторольную сетку. Для этого будем двигать точки. Точки двигаются следующим образом: переключаемся на контрольную сетку (управлять поверхностью можно только с помощью контрольной сетки), выберем панель и щёлкнём по ней. Внизу экрана, в командной строке вам будет предложено указать нужную вершину сетки или ввести её координаты. Укажем мышкой нужную вершину и щёлкнем мышкой. Теперь, поводив мышкой, мы видим, что вершина двигается в плоскости XZ (на панели управления изменяются координаты X и Z, т.е. определена плоскость баттокса). Это называется первичной плоскостью редактирования. Первичную плоскость редактирования можно задать с помощью панелей, соответственно обозначающих плоскость шпангоута (редактирование в плоскости YZ ), плоскость баттокса (редактирование в плоскости XZ), плоскость ватерлинии (редактирование в плоскости XY). Очевидно, что нельзя двигать точки в плоскости шпангоута, имея на экране основной вид поверхности (проекция бок теоретического чертежа) и т.д. Двигать точки можно также вдоль какой – то одной оси. Для этого нужно воспользоваться панелями, которые позволяют осуществлять движение точек соответственно по осям X,Y,Z. Если предварительно вращать или наклонять поверхность, то при движении точек в командной строке может появиться сообщение о том, что плоскость редактирования слишком наклонена. В этом случае можно сменить плоскость редактирования или так развернуть поверхность, чтобы это сообщение исчезло. В любом случае, нужно всегда знать, в какой плоскости редактирования вы находитесь, иначе результаты вашей работы будут самыми непредсказуемыми.

В нашем случае мы хотим двигать точки только вдоль оси Х. Нажмём на панель.

Следующий алгоритм применим для движения всех точек форштевня:

Нажмём

 

Щёлкнем нужную точку форштевня

Щёлкнем в том месте экрана, где мы хотим, чтобы эта точка находилась.

Рис.4.7. Примерные очертания форштевня и ахтерштевня.

Сдвинув все точки форштевня примерно до прямой линии и проделав аналогичную процедуру с формой ахтерштевня (построив контур ахтерштевня примерно по данным ординатам), получим следующую фигуру (рис.4.7.).

Для передвигания группы точек можно использовать следующий приём: выбрав одну точку, нажать клавишу SHIFT, и удерживая её в нажатом состоянии, продолжать выбирать точки. Закончив выбор точек, отпустить клавишу SHIFT и сдвинуть точки. Или другой способ: выбрав первую точку, и, нажав SHIFT, выбрать последнюю точку, и отпустив SHIFT, передвинуть точки. При этом точки между первой и последней точкой выделяются автоматически.

Боковой вид нашей поверхности почти готов. Осталось скруглить место перехода форштевня в днище. Для этого нужно знать местоположение нижней правой вершины контрольной сетки. Местоположение этой точки зависит от положения точек (2;0), (3;0), (4;1), (4;2). Эта задача решается следующим образом: программа, основываясь на местоположении точек (2;0), (3;0), (4;1), (4;2), высчитывает соответствующее скруглению форштевня местоположение вершины (4;0) и помечает его маркером. Затем вершина (4;0) совмещается с маркером.

Выберем меню Construct

Щёлкнем на функции Marker

Выберем меню G2 Mix

FastShip подскажет вам указать четыре точки, необходимых для вычисления местоположения угловой точки: поочерёдно укажите вершины (2;0), (3;0), (4;1), (4;2). Появится маркер, как показано на рис.4.8.

Рис.4.8. Операция G2 Mix.

4.3 Получение трёхмерной модели

Для получения трёхмерной модели мы будем двигать отдельные точки в направлении оси Y, чтобы вытянуть поверхность в этом направлении. Оптимальным вариантом для такого вытягивания является изображение поверхности в перспективе. Вытянем точки по оси Y, как показано на рис.4.9.

Рис.4.9. Вытягивание поверхности в ширину.

4.4 Изображение поверхности с помощью сечений

FastShip предоставляет пользователю возможность рассматривать поверхность в виде сечений (шпангоутов, баттоксов и ватерлиний). Это очень просто сделать: вы указываете места, в которых вы хотите провести сечения, и FastShip высчитывает сечения, “разрезая ’ поверхность в заданных местах. Процесс проходит в две стадии: сперва вы определяете местоположения сечений, а затем делаете сечения видимыми. Представим нашу поверхность в виде шпангоутов.

Выберем меню Sections


Нажмём Define

Аналогичный результат можно получить, используя панель

Рис.4.10. Диалоговое окно ‘Sections’

Появится диалоговое окно Sections (см. рис.4.10.), показывающее вам перечень уже определённых сечений (пока там ничего нет). По умолчанию показываются все типы сечений (шпангоуты, баттоксы и т.д.), хотя некоторые сечения вы можете сделать невидимыми. Добавим в этот пока пустой список шпангоуты. Для этого в появившемся диалоговом окне

нажмём кнопку ‘Add’.

Появится диалоговое окно добавления сечений Add Sections(см. рис.). В этом окне

Щёлкнем на графе Number of Sections

В графе Type выберем Stations

В поле Number введём число 73 (число шпангоутов)

В поле Start введём –1.2 (положение первого шпангоута)

В поле End введём 42 (положение последнего шпангоута)

Нажмём Add

Нажмём Close

Щёлкнем ОК в диалоговом окне Sections


Рис.4.11. Диалоговое окно для добавления сечений.

Чтобы увидеть сечения на экране нажмём на панели (включим просмотр сечений) и нажмём на панели (отключим изображение поверхности).

Можно также включить видимость периметра посредством нажатия клавиши

При этом красные линии поверхности исчезнут, и поверхность будет представлена в виде жёлтых шпангоутов и одной жёлтой линии периметра (см.рис.4.12.). Как уже говорилось выше, сечения вычисляются исходя из формы поверхности и являются всего лишь другим способом представления поверхности. В любой момент можно добавить ещё несколько сечений или поменять их местоположение.


Рис.4.12. Изображение поверхности в виде сечений (цвет сечений изменён).

 

Аналогичным образом можно добавить сечения по ватерлиниям и баттоксам (При этом следует сменить тип сечения соответственно на Waterlines и Buttokses). Если какое-то сечение оказалось не нужным, то его можно удалить. Для этого сечение нужно выделить, а затем нажать на клавишу DELETE в диалоговом окне Sections. Также можно управлять видимостью сечений, для этого выделив соответствующие сечения следует воспользоваться клавишей Calc On/Off. Чтобы выделить несколько сечений, можно проводить выделение при нажатой клавише Ctrl.

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

Выбрать меню Parts

Выбрать из него пункт Properties

Щёлкнуть на Colors

Выбрать поле ввода hull

Щёлкнуть на Section color

Выбрать нужный цвет из списка

Нажать ОК во всех открытых диалоговых окнах

  4.5 Изображение ординат на экране

Для визуального сравнения формы поверхности с исходными ординатами в FastShip предусмотрена функция проставления ординат на экране в виде маркеров. Для изображения небольшого числа маркеров на экране можно воспользоваться панелью. Однако, при расстановке всех ординат, предоставленных таблицей основных ординат, и для полного контроля за формой поверхности, рациональнее воспользоваться макросом, который автоматически проставит все записанные в него маркеры (ординаты). После того как, маркеры будут проставлены, путём измерения поверхности и маркеров можно будет увидеть отклонение поверхности от её действительной формы. Кроме того, проставив маркеры и представив поверхность в виде сечений, можно на одном видовом экране двигать точки, в то время как другой видовой экран будет показывать соответствующее изменение поверхности.

Макрос можно создать в любом текстовом редакторе, который содержит тип файлов macro (расширение .mac). Если выбранный текстовый редактор не содержит указанного типа, то с помощью операционной системы следует загрузить этот тип файлов. В данной работе для создания макроса был использован текстовый редактор ‘Блокнот’. Для отображения маркера на экране в FastShip существует команда Construct-marker. При этом если маркер имеет координаты (x;y;z), то команда выглядит следующим образом: Construct-marker {x;y;z}. Записав таким образом эту команду для каждой ординаты (см.рис.) и сохранив его с расширением .mас, получим нужный макрос.

 

Рис.4.13. Создание макроса для простановки ординат.

Для запуска макроса в FastShip нужно

Выбрать меню Tools

Из этого меню выбрать команду Read macro

Открыть созданный макрос

Представим поверхность в виде сечений и проставим на ней маркеры ординат, указанным выше способом. Теперь налицо различие между действительной и нужной формой поверхности. Чтобы понять насколько отличается поверхность от нужной формы, можно измерять отдельные точки поверхности и маркеры увидев, таким образом, значение разницы. Для удобства визуализации отдельных участков поверхности, а также в некоторых случаях для удобства измерения поверхности, поверхность можно зуммировать (увеличивать). Зуммирование выполняется нажатием панели, затем мышкой указываются две точки, определяющие противоположные вершины зуммирующего прямоугольника (см.рис.4.14.).

При несовпадении поверхности с маркерами следует продолжать двигать вершины контрольной сетки, добиваясь нужной формы поверхности. При этом следует учитывать, что, если, например, участок поверхности нужно сдвинуть по оси Y, то может случиться так, что вершины контрольной сетки в этом случае надо двигать по оси X. Иногда бывает полезным знать координаты вершин контрольной сетки, т.к. визуальное рассмотрение расположения вершин в пространстве может легко ввести в заблуждение. Увидеть координаты вершин контрольной сетки можно с помощью панели при этом на экране появятся координаты указанной вершины.

Рис.4.14. Визуальное сравнение формы поверхности с ординатами   4.6 Создание поверхностей бака и юта

К настоящему моменту мы уже имеем поверхность корпуса. Теперь на этой поверхности нужно создать ещё два плоских листа, из которых в дальнейшем получатся бак и ют. Для добавления к поверхности ещё одной поверхности можно воспользоваться двумя вариантами:

1.         Создать поверхность нужной формы в отдельном файле, расположив её в пространстве на таком месте, на котором она должна находиться в готовой модели. Затем открыть поверхность корпуса и из меню ‘File’ выбрать пункт ’Add’. В открывшемся окне указать файл с поверхностью, которую нужно добавить.

2.         Находясь в файле готовой поверхности, из меню’Parts’ выбрать пункт ’Create’. В открывшемся диалоговом окне указать параметры плоского листа, из которого в дальнейшем будет получена поверхность юта или бака.


Рис.4.15. Диалоговое окно для создания поверхности бака.

В данной работе использовался второй вариант. Для добавления плоского листа, представлящего собой бак, диалоговое окно при выборе пункта ‘Create’ было заполнено следующим образом (см.рис.4.15.):

Нажав ОК, получим изображение, показанное на рис.4.16.

Рис.4.16. Установленный на корпус плоский лист бака.

 

Вытянем точки контрольной сетки, чтобы получить нужную форму поверхности.

Аналогичные операции проведём для создания поверхности юта.

Математическая модель теплохода, состоящая из трёх поверхностей, показана на рис.4.17.

Рис.4.17. Откорректированная математическая модель теплохода.

 

4.7 Получение слома поверхности

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

Для вставки дополнительных сплошных линий в контрольную сетку используется панель При нажатии на эту панель FastShip запрашивает интервал, в который нужно вставить дополнительную линию. В ответ на этот запрос нужно указать две вершины контрольной сетки, между которыми посередине будет вставлена дополнительная сплошная линия.

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

4.8 Сглаживание полученной поверхности

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

Рис.4.18. Диалоговое окно ‘Part Properties’

Перед сглаживанием поверхности целесообразно увеличить плотность контрольной сетки, чтобы программа в процессе сглаживания высчитывала большее количество точек. Увеличить плотность сетки можно выбрав из меню ’Parts’ подменю’Properties’. В открывшемся диалоговом окне (рис.4.18.) нужно выделить поверхность, плотность которой нужно увеличить и нажать на вкладке ‘Mesh Div’. Появится следующее диалоговое окно, в котором можно задать плотность сетки по столбцам и по рядам (рис.4.19.).


Рис.4.19. Диалоговое окно ‘Mesh Divisions’.

Изменим плотность поверхности:

для корпуса – примем 6 на 8

для бака и юта – примем 4 на 5

Чтобы сгладить поверхность из меню ‘Sections’ выберем подменю ’Refine’ и укажем допускаемое отклонение кривой 0.001.

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

Любое редактирование поверхности после сглаживания требует повторного сглаживания.


ИСПОЛЬЗУЕМАЯ ЛИТЕРАТУРА:

1.   FastShip6 Help. Справочное руководство по программе.

2.   FastShip5 QuickStart Tutorial. Пример построения поверхности.


Информация о работе «Формирование математической модели корпуса теплохода-площадки в программе FastShip6»
Раздел: Информатика, программирование
Количество знаков с пробелами: 69253
Количество таблиц: 1
Количество изображений: 30

0 комментариев


Наверх