Дипломная работа: Формирование математической модели корпуса теплохода-площадки в программе FastShip6
TEМА: Формирование математической модели корпуса теплохода-площадки в программе FastShip6
СОДЕРЖАНИЕ:
Введение
1. Приступая к работе
1.1 Назначение работы
1.2 Описание программы
2. Анализ процесса построения поверхности по ординатам
2.1 Введение
2.2 Математика поверхности
2.3 Описание проблемы
2.3.1 Назначение модели
2.3.2 Ординаты
2.3.3.Формат ординат
2.4 Методы автоматического создания поверхности
2.5 Ручной и полуавтоматические методы
2.5.1 Ручная подгонка/сглаживание
2.5.2 Полуавтоматическая подгонка/сглаживание
2.6. Итоги
3. Основные сведения из теории NURBS
3.1 Что такое NURBS
3.2 Терминология NURBS
3.3 Пример простого кубического В-сплайна
3.4 Пример простого квадратичного В-сплайна
3.5 Пример простого линейного В-сплайна
3.6 В-сплайн кривые против традиционных кривых интерполирования
3.7 Дополнительный контроль
3.8 Что значит “рациональный”?
3.9 От кривых к поверхностям
3.10 Граничные условия и сломы
3.11 Итоги главы. Основные свойства NURBS.
4. Построение теоретической поверхности судна
4.1 Построение плоского листа поверхности
4.2 Скругление форштевня. Передвижение точек в FastShip
4.3 Получение трёхмерной модели
4.4 Изображение поверхности с помощью сечений.
4.5 Изображение ординат на экране
4.6 Построение поверхностей бака и юта
4.7 Получение слома поверхности
4.8 Сглаживание поверхности
Заключение
Используемая литература
ВВЕДЕНИЕ
Вступив в третье тысячелетие, можно с уверенностью сказать, что будущее человека - в компьютерных технологиях. Не секрет, что время карандашей, линеек и кульманов сочтено, на смену им приходят более мощные и оперативные средства. Решения технических задач, на которые раньше уходило довольно много времени, теперь выдаются машиной за считанные минуты.
С учётом требований конкурентоспособности и жизнедеятельности предприятий, выдвигаемых современностью, в судостроении почти полностью автоматизированы все проектные и конструкторские работы. На каждом судостроительном предприятии имеются ведущие системы автоматизированного проектирования, такие как TRIBON, FORAN и многие другие. Среди подобных программных продуктов-гигантов находит применение и менее мощное, направленное на решение какой-то определённой узкой задачи, программное обеспечение.
Работа FastShip основана на применении передовой области математики – математики NURBS, хорошо зарекомендовавшей себя при построении поверхностей.
Изучение работы последней версии программы FastShip6, а также построение теоретической поверхности корпуса теплохода – площадки, проходящего ремонт на судостроительном предприятии, и является целью данной дипломной работы.
Дипломная работа будет содержать пояснительную записку и графическую часть. В пояснительной записке будут изложены основы математической теории NURBS, теоретические сведения о процессе создания модели корпуса по данной таблице ординат, а также будет представлен непосредственно сам процесс получения этой модели, сопровождающийся графическими пояснениями и картинками. Графическая часть содержит плакаты, отражающие основные моменты построения поверхности.
Исходными данными для выполнения работы послужили таблица основных ординат судна и теоретический чертёж.
1. ПРИСТУПАЯ К РАБОТЕ 1.1 Назначение выполняемой работы
Итоговая цель данной работы – построить математическую модель корпуса судна, которая будет использоваться для следующих нужд производства:
1). Уточнения положения пазов и стыков
2). Уточнение и оптимизация размеров листов для изготовления корпуса
3). Плазовые данные для выпуска (перевыпуска) шаблонов, каркасов для сборочно-сварочных постелей.
4). Плазовые данные для выпуска сборочных лесов.
Полученную модель можно передать в другие бюро для выпуска трёхмерных моделей отсеков, помещений, можно экспортировать в другие системы автоматизированного проектирования в нужном формате или экспортировать в программы для станков с ЧПУ, например, для выпуска постелей.
1.2 Описание программы
Программа FastShip6, созданная фирмой Proteus Engineering, предназначена для создания поверхностей судовых корпусов любой сложности. Сочетая в себе простоту работы и дружественный интерфейс, FastShip6 позволяет создать математическую поверхность корпуса судна с достаточной степенью надёжности.
Отличительной чертой программы является использование NURBS, что выгодно отличает FastShip6 от аналогичных программ, использующих в своей работе традиционные интерполирующие кривые или механические сплайны. Математика NURBS, заложенная во внутреннем алгоритме работы программы, позволяет устранить осцилляции при построении поверхности, а также легко изображать отличительные особенности поверхности.
В отличие от предыдущих версий программы, FastShip6 выделяется своим приятным интерфейсом, что заметно облегчает работу пользователя. Шестая версия программы также отличается от предыдущих наличием некоторых команд, отсутствующих в более ранних версиях (зуммирование в реальном времени, простановка ординат на поверхности, позволяющая увидеть отклонение поверхности от нужной формы и др.). Для опытных пользователей с хорошим знанием программирования в FastShip6 имеется язык программирования Perl.
2. АНАЛИЗ ПРОЦЕССА ПОСТРОЕНИЯ ПОВЕРХНОСТИ ПО ОРДИНАТАМ 2.1 Введение
Часто в процессе проектирования возникает проблема создания модели по уже существующим ординатам. Решение этой проблемы зависит от многих факторов, таких как назначение выполняемой работы, качество снятых ординат, и средств, с помощью которых можно выполнить данную работу. Всё это нужно принимать во внимание при разработке метода выполнение поставленной задачи.
Существует общее заблуждение о том, что еcть автоматическое математическое решение подобной задачи, т.е. когда по расставленным ординатам автоматически создаётся сглаженная поверхность, готовая для дальнейшей работы, например, расстановка шпангоутов, раскрой листов, анализ гидростатики. Существуют программы, которые пытаются действовать именно так и на первый взгляд им это удаётся. На самом деле, такой подход никогда не даёт удовлетворительных результатов. Далее мы рассмотрим, почему это происходит и почему ручное и полуавтоматическое сглаживание более продуктивны. Сперва рассмотрим некоторые вопросы, связанные с математикой поверхности, а затем рассмотрим различные аспекты поставленной задачи и методы её решения.
2.2 Математика поверхностиПроцедура автоматической и полуавтоматической подгонки поверхности к существующим ординатам требует т.н. расстановки каждой ординаты соответственно определённой точке поверхности. Первый метод основан на том, чтобы придать сплайнам форму шпангоутов, таким образом, расставив ординаты на точках сплайна, и затем сгладить всё это в продольном направлении, чтобы получить корпус. Зачастую этот метод использует интерполирующие сплайны в продольном или поперечном направлении, либо в обоих направлениях сразу (интерполирующие сплайны - это сплайны, проходящие через контрольные точки). В этом случае каждая ордината шпангоута будет являться контрольной точкой, чтобы гарантировать, что кривая проходит через неё. Тогда возникает проблема, что сплайны по своей природе склонны к осцилляциям, т. е, хотя кривая проходит через контрольные точки, между ними кривая может осциллировать. Даже если шпангоуты изображаются приближёнными сплайнами, эта проблема может возникнуть при сглаживании в продольном направлении, где также могут возникнуть осцилляции. Вдобавок, этот процесс имеет тенденцию сглаживать все характерные особенности поверхности, например, сломы, не замечая их в своей работе. Подводя итоги, можно сказать, что если используются интерполирующие сплайны, и контрольные точки расставлены в местах расположения ординат, подогнать ординаты можно удачно, но между ними поверхность будет непредсказуемо осциллировать. Такая работа считается выполненной неудовлетворительно, т.к. между шпангоутами поверхность не гладкая. Методы, основанные на применении интерполирующих сплайнов, страдают из-за этого; подогнать ординаты на шпангоутах относительно просто, но получить всю поверхность гораздо более сложно. Кроме того, не учитывая топологии корпуса, модель будет непригодна для дальнейшей работы, или будет чересчур сложной.
Поэтому следует сфокусировать внимание на использовании математики NURBS, где поверхность определяется с помощью “контрольной сетки’, а вместе с тем и узлового вектора. Контрольная сетка NURBS-это сетка, состоящая из вершин, представленных в виде строк и столбцов, которые в явном виде задают форму поверхности.
Поверхности NURBS имеют два важных свойства, которые непосредственно влияют на решение задачи создания модели по существующим ординатам. Первое, они аппроксимируют сплайновую поверхность, это означает, что поверхность в общем случае не проходит через контрольные точки (поверхность совпадает с контрольными точками (вершинами) только в крайних точках контрольной сетки). Это значит, что просто разместить вершины в местах расположения ординат не приведёт к поверхности, удовлетворяющей заданным ординатам. Однако, это свойство не даёт проявляться осцилляциям, которые имеют место при использовании интерполирующих сплайнов. Использование NURBS поверхностей более чётко удовлетворяет обоим требованиям сглаживания. Второе важное свойство NURBS-это локальная область влияния. Это означает, что любая вершина не влияет на всю поверхность (за исключением очень простых поверхностей). Для кубических поверхностей, которые наиболее часто используются для создания моделей корпусов, каждая вершина влияет в пределах области двух вершин от себя. За пределами этой области вершина не влияет на поверхность (в случае интерполирующих сплайнов изменения, произведённые в носу модели отразятся на форме кормы). Это свойство имеет преимущество в том, что изменения, сделанные на поверхности локализованы, и новое сглаживание происходит в пределах этой локализованной области. Однако, если контрольная сеть составлена слишком плотно, то сглаживаемая изменённая область будет слишком мала, что приведёт к негладкости поверхности. Поэтому по возможности надо стараться работать с как можно более простой сетью.
2.3 Описание проблемы 2.3.1 Назначение моделиПервый вопрос, который нужно задать для чего будет использоваться построенная поверхность. Некоторые из возможных применений поверхности, а также требования к ним указаны в таблице 1.
Таблица 1
Применение поверхности и требования к ней
Применение поверхности | Требования |
Конструирование (линий, шпангоутов, раскрой листов) | Готовая поверхность должна быть очень гладкой. Поэтому, если поверхность точно удовлетворяет ординатам, ординаты должны быть очень точными. Иначе, поверхность следует сглаживать при условии, что ординаты сняты неточно. |
Расчёт промежуточных результатов, например, анализ конечных элементов или расчёт гидростатики, где гладкость не очень важна | Поверхность должна точно удовлетворять ординатам, не обращая внимания из скольких вершин состоит контрольная сеть, описывающая поверхность, т.к. гладкость не является определяющим фактором. |
Проектирование, где форма корпуса может изменяться в процессе работы. | Гладкость поверхности более важна, чем точное соответствие ординатам, т.к. корпус всё равно будет изменяться. Контрольная сеть не должна быть слишком плотной, т.к. чтобы ей можно было пользоваться в дальнейшем. |
Отсюда возникает два важных вопроса:
1. Должна ли поверхность точно удовлетворять ординатам или лучше чтобы она хорошо сглаживалась? В следующем разделе мы рассмотрим эту проблему.
2. Насколько плотной допускается быть контрольной сетке? Если поверхность будет использоваться только для промежуточных действий (расчёт сечений, расчёт гидростатики, расчёт элементов поверхности, раскрой листов и расстановка шпангоутов), и не будет изменяться в дальнейшем, то допустима плотная сетка. В противном случае, сетка должна содержать разумное количество вершин.
2.3.2 Ординаты
Важно знать, откуда взялись ординаты и каково их качество, а также имеется ли возможность посмотреть таблицу ординат в оригинале для проверки и получения дополнительной информации.
Качество ординат. Качество ординат, находящихся в работе, очень важно в процессе создания корпуса. Сняты ли ординаты измерением с реального судна или взяты из плазовой книги? Если это так, то было бы неразумным подгонять их очень точно. С другой стороны, если ординаты сняты с масштабированного чертежа судна, то поверхность не обязательно скрупулёзно сглаживать. В этом случае вы, возможно, не захотите очень точно подогнать поверхность, а захотите иметь что-то похожее на имеющееся судно. Другими словами, гладкость поверхноти-величина относительная.
Часто книга или файл с ординатами содержат ошибочные данные. Эти данные нужно удалить или исправить, чтобы ошибка не повлияла на результат работы. В этом случае очень важно иметь доступ к источнику взятых ординат.
2.3.3 Формат ординатЧасто подгоняемые ординаты являются шпангоутами. Шпангоутов бывает достаточно, чтобы описать форму корпуса в районе мидель-шпангоута, где ватерлинии обычно параллельны диаметральной плоскости. Но в оконечностях, где форма судна резко меняется при переходе в нос или корму, шпангоуты - не лучший способ описания формы корпуса. Форму форштевня и ахтерштевня очень трудно определить с помощью шпангоутов. По возможности, таблица ординат, с которой вы работаете, должна содержать профиль судна по диаметральной плоскости, окончания ватерлиний в оконечностях судна, точки слома на корпусе, а также характерные линии корпуса, такие как плоские участки бортов и днища. Компьютер сам не сможет отобразить эти особенности, если они не заданы явно.
Время, потраченное на подготовку ординат к работе, не будет потеряно зря. Удостоверьтесь, что ваши данные не содержат ошибок, и что форма судна хорошо определяется ординатами, особенно если это является определяющим фактором. Пусть лучше ваш натреннированный глаз легко проинтерполирует кривую, определяющую форму корпуса, по небольшому числу ординат, т.к. компьютер не сможет этого сделать.
2.4 Методы автоматического создания поверхностиСуществует много программ и алгоритмов для создания поверхностей по ординатам, включая основные CAD системы, такие как ProEngineer™, Autodesk’s AutoSurf®, Intergraph EMS™, а также другие программы конструирования корпусов. Почему бы не нажать кнопку одной из этих программ и не получить результат? Это классический пример, “когда вещь слишком хороша, чтобы быть правдой’.
Первая проблема этого метода в том, что он полагает, что ординаты полностью определяют корпус, и что они совершенно гладкие (на самом деле, очень редкий случай). Даже если ординаты совершенно гладкие и полностью определяют корпус, они обычно представлены в виде шпангоутов, т.е. не совсем равномерно распределены по корпусу, особенно в оконечностях. Это может вызвать неестественное искажение поверхности.
Вторая проблема состоит в том, что полученная в результате этого поверхность достаточно плотно составлена, чтобы допустить какие-либо изменения вручную (в крайнем случае, поверхность можно создать, если присвоить каждой ординате свою вершину). Так что если по каким-либо причинам вы захотите изменить поверхность, вы практически не сможете этого сделать.
Наконец, как уже говорилось, при автоматическом методе очень сложно отобразить топологические особенности, такие как сломы, касательные и т.д. Эти особенности формы корпуса обычно теряются при автоматичесском методе.
Почему эти автоматические методы неуспешны? Чтобы лучше разобраться в проблемах построения поверхностей будет полезно сравнить эту работу с обычным и более понятным процессом построения аналитических кривых по точкам.
Известно, чтобы построить кривую нужно иметь набор точек. Возможно, это является пережитком школьных времён, когда ученику давалась упорядоченные пары чисел для изображения на плоскости. Было упущено из вида, что точки расставлены в определённой последовательности, показывая, таким образом, связь между точками. Если при проведении кривой по точкам затрагивается вычислительная сторона, то этот процесс называется монотонным возрастанием параметра. Здесь студент начинает размышлять о том, чего не дано в задании. Как минимум, он должен ответить на следующие два вопроса:
· Какого рода функцию нужно использовать для интерполяции между данными точками?
· Как значения параметра должны соответствовать заданным точкам?
Часто для этой цели используются многочлены и сплайны из-за того, что их можно неоднозначно провести в пространстве, их хорошо известных свойств и вычислительной эффективности. В отдельных случаях, когда уже известна функциональная зависимость между точками, можно применить её. Подобных функций в данном случае имеется несколько в наличии, выбирается та, чьи параметры наиболее точно подходят.
Математически единственным требованием является то, чтобы значения параметра монотонно возрастали при переходе по кривой в заданном направлении.
2.5 Ручной и полуавтоматический методыСуществует лучший, более практичный метод создания модели по ординатам. В FastShip заложены некоторые инструменты, которые сделают этот процесс как можно более и эффективным. Эти инструменты можно подразделить на две категории: ручной подгонки и полуавтоматической подгонки. Хотя эти инструменты не являются автоматическим, мгновенным решением проблемы, они способны достаточно реально и эффективно решать проблему построения модели по существующим ординатам.
2.5.1 Ручная подгонка/сглаживание
Основной метод создания модели по ординатам заключается в следующем: вручную создать поверхность, сравнить её данными ординатами, а затем сглаживать её до тех пор, пока не будет достигнуто удовлетворительных результатов. Применяя этот подход, конструктор сам строит поверхность с нужной топологией (сломы, скуловые радиусы, конические формы, цилиндрическая вставка и т.д.), не надеясь, что программа автоматически различит эти особенности по ординатам. Важной особенностью этого процесса является то, что конструктор может работать с ординатами, не обращая внимание на гладкость, и наоборот.
Для этой работы в FastShip имеются следующие инструменты:
· Возможность видеть ординаты и/или маркеры, наложенные на поверхность.
Любые ординаты можно показать на экране, наложив их на поверхность, а также сечения поверхности, проведённые в местах расположения ординат. Это позволяет сразу увидеть разницу между ординатами и построенной поверхностью.
· Редактирование в реальном времени.
· Использование нескольких видовых экранов
· FastShip позволяет проектировщику измерить координаты любой точки на поверхности, а также измерить расстояние между ординатой и точкой поверхности. Также можно вычислить элементы гидростатики, чтобы знать имеет ли судно соответствующие водоизмещающие свойства. Можно также измерить кривизну поверхности и кривизну любого сечения
· Функция двойной сетки
Иногда случается, что на каком-то участке поверхности нужно большее количество вершин, чтобы более точно подогнать поверхность по ординатам. В процессе проектирования в любое время можно добавить ряд или столбец в контрольную сетку. Однако, в некоторых случаях это может причинять неудобства. Чтобы решить эту проблему, FastShip предусматривает функцию удвоения числа столбцов или рядов поверхности, не меняя при этом формы поверхности. Данную функцию можно использовать вместе с функцией split-net, которая позволяет расщепить поверхность на две части, и рассматривать их как самостоятельные. Т.о. эта функция применяется, чтобы не загромождать модель.
· Использование макросов для сообщения о несоответствии поверхности ординатам
FastShip имеет макросы для напечатания таблицы ординат построенной модели, а также несхождений между поверхностью и ординатами. FastShip также может выдавать ошибку в процентах от назначенного допуска. Это иногда используется для задания точности, с которой нужно построить поверхность.
В основном процесс ручной работы начинается с плоского листа NURBS поверхности, который затем преобразуется в нужную форму, посредством вставки дополнительных вершин при необходимости. Можно снизить расход времени на построение модели, если в библиотеке проектировщика уже есть модель с подобной топологией. Например, многие контейнеровозы имеют схожую топологию; у них один винт, имеются плоские участки бортов и днища, радиус скулы, бульбообразный нос, бак и ют. Даже если имеющаяся поверхность совершенно отличается по размерам, но имеет такую же топологию, то её можно масштабировать, и затем по месту подогнать по ординатам.
2.5.2 Полуавтоматическая подгонка/сглаживание
FastShip имеет функцию fit-surface для автоматической подгонки контрольной сетки под ординаты. Проектировщик сперва создаёт поверхность, близкую по форме к ординатам, с необходимыми топологическими особенностями (сломы и т.д.). Эта функция корректно работает в той области поверхности, которая не содержит сломов и может давать непредсказуемые результаты у края поверхности, так что проектировщик вынужден вручную управлять краями поверхности и её сломами. Эти области можно исключить из работы функции fit-surface путём выполнения функции freeze-net, перед тем, как продолжать выполнение функции fit-surface. Функция fit-surface ни добавляет, ни удаляет ряды или столбцы поверхности; она только двигает существующие вершины. Она сохраняет плотность поверхности, т.е. не создаёт слишком загромождённой поверхности. Функция fit-surface может выборочно применяться к одному участку поверхности, не затрагивая остальной поверхности.
Команду fit-surface особенно эффективно применять при итерационных процессах, чередуя сглаживания проектировщика с подгонкой машины. Поэтому гладкость всё-таки остаётся делом проектировщика с обычными инструментами для её измерения. Если результат работы команды fit-surface точно удовлетворяет ординатам, но по мнению проектировщика поверхность не гладка, операцию можно отменить командой undo. Лучший метод заключается в следующем: вручную создаётся поверхность с нужной гладкостью, а затем снова запускается команда fit-surface (команда fit-surface может занять от 3 до 20 секунд, в зависимости от вашего компьютера, плотности ординат и сложности поверхности). Этот процесс может продолжаться настолько долго, пока не будет найдено оптимального соотношения между гладкостью поверхности и её схожести ординатам.
2.6 Итоги
Создание поверхности по ординатам – сложная задача, имеющая множество различных аспектов. Она состоит из нескольких промежуточных задач, каждая из которых имеет свои сложности. Очень редко решение этих задач автоматически даёт удовлетворительные результаты.
Решение задачи с помощью сплайнов имеет тенденцию загромождать модели, которые могут содержать осцилляции, трудно удаляемые даже вручную. К тому же они могут сглаживать или терять отличительные особенности поверхности. По этой причине сплайны не находят применения при решении задач подобного рода. NURBS поверхности также страдают при автоматическом методе и теряют топологические особенности поверхности. Лучшим решением данной задачи является применение полуавтоматического метода с использованием NURBS поверхностей, когда проектировщик сам создаёт поверхность с нужной ему топологией, которую затем обрабатывает компьтер для получения более точного соответствия поверхности ординатам. Важно, чтобы проектировщик понимал качество снятых ординат и знал, нужно и возмоно ли точно подогнать поверхность по ординатам. Если поверхность нужна лишь для промежуточных расчётов или для расчёта гидростатики, то гладкости можно не уделять большого внимания, а точность не слишком важна, пока не будут точно установлены водоизмещение, центр величины и т.д. В любом случае гладкость стоит на первом месте перед точностью, т.е. ординаты могут быть и не подогнаны точно. В этом случае ручной и полуавтоматические методы более продуктивны и обеспечивают лёгкость и надёжность метода.
3. ОСНОВНЫЕ СВЕДЕНИЯ ИЗ ТЕОРИИ NURBS
Сперва определимся, что же действительно значит термин NURBS. NURBS-нестандартный рациональный В-сплайн. Попытаемся расшифровать каждую часть этого многогранного понятия. Корневым словом NURBS является слово В-сплайн. Что это такое В-сплайн? Здесь важно понять‚ что говоря NURBS имеется в виду поверхность NURBS или кривая NURBS. Для простоты суждения первоначально рассмотрим кривые NURBS‚ а потом осуществим переход к поверхностям NURBS. Говоря вкратце‚ В-сплайн-это кривая‚ созданная с использованием вершин определяющего многоугольника‚ интерполирующая определённым образом для установления взаимосвязи между кривой и определяющего многоугольника. Этому свойству удовлетворяет не одна кривая‚ созданная определяющим многоугольником. Отличительной чертой В-сплайна является взаимосвязь между кривой и определяющим многоугольником‚ представленная в виде последовательности функций многочленов‚ называемых базисными функциями В-сплайна. Прежде чем понять‚ что это значит‚ немного отвлекёмся для описания ключевых терминов NURBS.
3.2 Терминология NURBSСперва поговорим о кривых‚ заданных параметрически и не параметрически. Возвращаясь к урокам математики в школе‚ вспомним‚ что кривую в пространстве можно определить параметрически и не параметрически. В простейшем случае прямой линии на плоскости можно определить её двумя способами:
Непараметрически: y=ax+b
Параметрически: x=g(u); y=h(u)
Явное непараметрическое задание функции‚ указанное выше‚ кажется простым и удобным в использовании и иногда так оно и есть. Имея значение x‚ можно вычислить значение функции f‚ а вместе с тем и значение y. Однако‚ что получится‚ если мы имеем не прямую‚ а какую-то кривую‚ для которой по данному значению х можно несколько разных значений у‚ как показано на рис.1.1? Теперь становится понятным как подобное явное задание функции легко может сбить с толку компьютерную программу‚ для которой не допускается многозначимость. Чтобы избежать этой проблемы FastShip использует параметрическое задание функции‚ для которого х и у (а также и z для случая в пространстве) являются независимыми функциями некоторого параметра u. В данном случае ограничением для u является его монотоное возрастание или убывание при движении по участку кривой. Параметр u это просто математическое “изобретение” и в действительности не имеет физических свойств по отношению к кривой.
Хотя выгода от использования параметрического задания налицо‚ оно имеет и свои недостатки. Возвращаясь к приведённому выше примеру‚ первый недостаток заключается в следующем: чтобы оценить местоположение точки‚ лежащей на линии ‚в пространстве нужно использовать два уравнения‚ а не одно‚ как в случае явного задания прямой. Поэтому в вычислительном отношении параметрическое задание сложнее. Второе‚ мы часто хотим вычислить у по данному х или х по данному у и ничего не знать про параметр u. При параметрическом задании сперва вычисляется u по заданному х‚ а потом уже у. Это не всегда является кратчайшим путём.
Продолжим рассмотрение других ключевых концепций. Рассмотрим кривую В-сплайн, показанную на рис.3.2.Сплошная линия представляет кривую, а пунктирная линия представляет определяющий многоугольник.
Определяющий многоугольник состоит из ряда вершин, обозначенных на рисунке B0 до B3, связанных отрезками прямых линий. Это и есть те вершины, по которым определяется действительная форма кривой. Как уже отмечалось ранее, кривая и определяющий многоугольник связаны набором функций полиномов, называемых базисными функциями В-сплайна.
Обратите внимание на сходство форм определяющего многоугольника и кривой. В некотором отношении определяющий многоугольник можно рассматривать как карикатуру или увеличенное изображение кривой, которую он определяет. Обретя небольшой опыт, вы сможете легко отличать В-сплайн от определяющего многоугольника. Кроме того, вершины - это ручки, которые позволяют пользователю управлять формой кривой. Управляя положениями вершин можно управлять формой кривой. Хотя это не совсем строго , иногда для начинающих пользователей полезно думать о кривой, как о присоединённой к вершинам магнитами.
Следующая концепция, которой нужно уделить внимание для полного рассмотрения математики NURBS, касается узлового вектора. Проще говоря, узловой вектор – это перечень значений параметра u, который служит для определения положения вершин определяющего многоугольника в параметрическом пространстве. Для кривой в примере 3.2 значения узлов обозначены кружочками на кривой. Имеется множество способов, которыми можно рассматривать значимость узлового вектора. Значения узлового вектора определяют границы интервалов кривой, то есть те места кривой, где заканчивается интервал одного многочлена и начинается интервал другого. Для В-сплайна четвертого порядка (кубического) на рис.3.2, часть кривой с левого края до первого внутреннего узла - кубическая кривая, в то время как часть от этого узла до следующего - совсем другая кубическая функция. И напоследок отметим ещё одну деталь. Зачастую вызывают затруднения термины порядок и степень кривой. В контексте нашего рассуждения, степень кривой - это самая высокая целая степень многочлена, задающего кривую. Порядок – это степень плюс один и происходит из того, что в простейшей функции многочлена типа f (x) = ax3 + bx2 + сх + d число неизвестных коэффициентов на одно больше, чем самая высокая степень многочлена, из-за того что постоянная d имеет нулевую степень. Следовательно, кубический В-сплайн имеет третью степень, но - четвертый порядок.
3.3 Пример простого кубического В-сплайнаВ качестве первого примера возьмём кубический (четвёртого порядка) В-сплайн, показанный на рис.3.3. Определяющий многоугольник состоит из четырёх вершин, обозначенных В0 ,В1 ,В2 и В3 ,соединённые пунктирными линиями.
Что можно определить по этой кривой? Давайте ответим на несколько вопросов по этой кривой. Первый, сколько нужно точек, чтобы задать кубическую кривую? Выясняется, что нужно столько точек, каков порядок кривой. Для задания линии нужно две точки, параболы - три точки, для кубической кривой нужно четыре точки. Т.к. в нашем определяющем многоугольнике четыре точки, то можно предположить, что в этом примере всего один кубический интервал.
Рис.3.3 Пример простого кубического В-сплайна
Как выглядит параметрическое пространство этой кривой, т.е. как изменяется параметр u вдоль кривой? Мы вправе назначить любой интервал изменения параметра u, но с тем условием, чтобы на этом интервале кривая монотонно возрастает при переходе из начала в конец кривой. Кроме того, нам важны не сами значения параметра, а его изменения вдоль кривой. Для удобства примем, что u изменяется от 0 до 1 при переходе из одного конца кривой в другой.
Затем, что такое узловой вектор для данной кривой? Т.к. мы знаем, что кривая состоит из единственного кубического интервала и что значения узлового вектора определяют границы интервалов, то можно догадаться, что узловой вектор выглядит как [0, 1]. Близко, но не совсем правильно. В текущей версии FastShip используется т.н. открытый узловой вектор (противопоставление периодическому узловому вектору, использовавшемуся в FastShip 3 и более ранних версиях). Открытый узловой вектор имеет свойство, заключающееся в том, что существует многозначность узловых значений в начале и в конце узлового вектора. Т.о. узловой вектор в данном примере имеет вид [0,0,0,0,1,1,1,1]. Значение многозначности узлов – сделать так, чтобы первая и последняя вершины многоугольника и начало и конец кривой соответственно совпадали. Сформулируем это важное свойство для В-сплайнов с открытым узловым вектором: кривая интерполирует между крайними точками определяющего многоугольника.
Наконец, как можно вычислить значение точки кривой по данным определяющему многоугольнику и узловому вектору? Чтобы продемонстрировать это, давайте вычислим значение точки при значении u=0.5. Этот процесс состоит из серии повторяющихся линейных интерполяций. Т.к. кривая третьей степени, то потребуется три серии последовательных интерполяций. Сперва проинтерполируя каждую из трёх наклонных определяющего многоугольника посередине длины (потому что данное значение параметра лежит посередине наклонной), получим три новых точки, отмеченные ромбиками на рис.3.3. Теперь проинтерполируем две новых наклонных, образованные соединением трёх точек, посередине длины и получим две новые точки. И, наконец, проинтерполируем наконную, полученную соединением двух точек, и получим искомое значение при u=0.5.
3.4 Пример простого квадратичного В-сплайна
Рассмотрим пример другого В-сплайна. Рассмотрим квадратичный (третьего порядка) В-сплайн, показанный на рис.3.4, определённый тремя вершинами определяющего многоугольника. Как мы уже поняли из предыдущего примера, чтобы определить квадратичную кривую нужно три точки, и что в данном случае существует единственный квадратичный интервал. Открытый узловой вектор будет иметь вид [0,0,0,1,1,1]. Возможно, вы заметили, что существует связь между числом вершин определяющего многоугольника и числом узлов узлового вектора. Для В-сплайнов в общем случае, число узлов равняется числу вершин определяющего многоугольника плюс порядок кривой. Как было замечено в предыдущем примере, многозначность узлов нужна для того, чтобы концы кривой совпадали с крайними вершинами определяющего многоугольника
Рис.3.4 Пример простого квадратичного В-сплайна
Вычислим значение кривой при параметре u=0.5. Как уже упоминалось, этот процесс состоит из серии линейных интерполяций. Проинтерполируем первую наклонную посередине длины. То же самое проделаем и со второй наклонной. Получим две точки. Соединяя их, получим новую наклонную. Проинтерполируем ёе посередине длины, получим значение кривой при u=0.5. Заметьте, что пришлось всего две интерполяции, чтобы вычислить значение кривой, и в общем случае нужно столько интерполяций, какова степень кривой. Подобную процедуру можно провести для вычисления значения кривой при любом значении u. Конечно, это всего лишь графический метод решения подобной задачи. Существуют также математические методы для решения этой проблемы (такие как метод Кокса-ДеБура), которые и используются в FastShip. Однако, графический метод полезен для более полного понимания математики NURBS, а также для демонстрации ряда важных свойств NURBS.
3.5 Пример простого линейного В-сплайна
Рис.3.5. Пример простого линейного В-сплайна
В качестве последнего примера рассмотрим линейный В-сплайн, показанный на рис.3.5. Определяющий многоугольник состоит из трёх вершин, обозначенных B0, B1, и B2. Что можно сказать об этой линейной кривой? Мы знаем, что нужно две точки, чтобы определить линию, так что здесь должно быть два линейных интервала. В узловом векторе нужно иметь три узла, чтобы определить два интервала, один - в начале, другой - в конце, третий - между первыми двумя. Для многих поверхностей, с которыми вы будете работать в FastShip, используется стандартный узловой вектор. Это значит, что внутренний узел находится на равном расстоянии, как от первого узла, так и от последнего. В дальнейшем мы будем рассматривать нестандартные узловые векторы. Следовательно, в данном примере узловой вектор будет иметь вид [0,0.5,1]. Тогда открытый узловой вектор с соответствующей многозначностью будет иметь вид [0,0,0.5,1,1]. Чтобы вычислить значение кривой при u=0.25 нужно рассмотреть наклоную B0B1, имеющие соответственно значения 0 и 0.5, и интерполировать эту наклонную посередине длины. Выясняется, что фактически для линейного В-сплайна определяющий многоугольник и линейный В-сплайн совпадают.
3.6 В-сплайн кривые против традиционных кривых интерполирования
Интерполирующая кривая
Многие из Вас работали с интерполирующими кривыми в том или ином виде, " кубическими сплайнами ", используемыми во многих приложениях для интерполирования между дискретным набором заданных точек. Чем эти кривые отличаются от В-сплайнов и почему они не используются в FastShip? Этот пункт рассказывает об основных различиях между использованием интерполирующих кривых и В-сплайнов в отношении проектирования.
Рассмотрим только случай сплайна четвертого порядка или третьей степени, так как эти функции ведут себя как большинство материалов, из которых построено судно. Воспользуемся рисунком 3.6 .Рассуждения начнем с пространственных кривых и затем перейдём к поверхностям.
Рис.3.6. Интерполирующая кривая против В-сплайна
Принципиальное разница между кубическим В-сплайном и параметрическим кубическим сплайном - это набор “ручек”, которыми проектировщик управляет кривой. В-сплайн использует вспомогательную контрольную сеть для вытягивания кривой, в то время как интерполирующий сплайн использует узлы, чтобы непосредственно определить положение кривой в пространстве.
На первый взгляд, последний метод непосредственного управления узлами на кривой для проектирования формы кривой кажется чрезвычайно заманчивым, в то время как концепция управления вспомогательной фигурой (контрольная сеть), кажется излишней абстракцией.
Рисунок 3.6 показывает два В-сплайна, каждый состоящий из пяти контрольных точек, у каждого из них серединная точка смещена вертикально вверх. Заметьте совершенно разные полученные кривые. Интерполирующий сплайн действительно проходит через все контрольные точки, но непредсказуемо колеблется между определяющей линией , в то время как В-сплайн фактически не проходит через контрольные вершины, но более гладко повторяет контрольную сеть. Стоит также отметить, что если бы кривая в примере содержала большее количество контрольных точек на конце кривой, полученный В-сплайн остался бы прежним, в то время как интерполирующий сплайн продолжил бы затухающие колебания вплоть до к конца кривой. Отсюда следует два важных свойства В-сплайнов. Первое, при движении определяющей контрольной сетки В-сплайн может перемещаться только в направлении параллельном движению контрольной точки на величину, зависящую от близости к сдвигаемой контрольной точке. Второе, контрольная точка на кривой имеет ограниченный интервал влияния, т.е. при движении одной контрольной точки изменения в форме кривой будут иметь локальный характер. Этих свойств совершенно нет у интерполирующих сплайнов, которые должны проходить через контрольные точки. Фактически, можно показать, что воздействие от движения одной контрольной точки влияет по всей длине кривой, и что изменения формы кривой колебательны по своей природе. Манипулируя контрольной сетью В-сплайна при движении одной точки сети, сдвигается не один узел. Возвращаясь к рис.3.6, можно увидеть, что серединный узел, соответствующий сдвигаемой контрольной точке, сдвинулся на 2/3 расстояния контрольной точки, а два смежных узла сдвинулись параллельно на 1/6 расстояния. Смещения двух последних узлов оказалось достаточно, чтобы кривая сама устранила осцилляции. Проектировщик, использующий интерполирующие сплайны мог бы создать идентичную кривую, сдвинув три узла в заданные положения, но такая точность нежелательна. Аналогично проектировщик мог бы создать кривую путём интерполирования, используя В-сплайны, но для этого ему потребовалось бы создать колебательную сеть.
Неотъемлемой частью всего вышесказанного является предоставление читателю выбора “рабочего инструмента” для построения кривых и поверхностей. Имеющееся в наличии небольшое количество программного обеспечения по морской технике использует и те и другие виды сплайнов. FastShip в качестве инструмента для создания поверхностей выбрал В-сплайны с контрольной сетью с предопределёнными или интерактивно определяющимися граничными условиями. Некоторые программы, использующие В-сплайны сперва конструируют поперечные сечения, а затем сглаживают их в продольном направлении, проводя интерполирующую функцию через контрольные точки сечений. Очевидно, небольшие изменения в поперечных сечениях могут отразиться в колебательном отношении на всей длине спроектированного судна. При этом подходе небольшие изменения никогда не будут локальными.
3.7 Дополнительный контроль
Теперь обратим внимание на проблему дополнительного контроля над В-сплайн кривой или поверхностью.При использовании FastShip часто случается, что пользователь нуждается в дополнительном контроле над формой поверхности. Очевидным средством для дополнительного контроля является добавление вершин в контрольный многоугольник. Как мы уже знаем, этим подразумевается добавление значений к узловому вектору. В FastShip используются два различных подхода для дополнительного контроля над поверхностью. Первый – это функция insert-net, а второй-функция insert-knot . Рассмотрим вкратце каждый из них.
Рис. 3.7. Дополнительный контроль посредством функции insert – net.
Рис.3.7. показывает использование функции insert-net для дополнительного контроля. Рассмотрим кубический В-сплайн, состoящий из четырёх вершин определяющего многоугольника(единственный интервал) и открытый стандартный узловой вектор. Мы хотим вставить точку в определяющую сеть посередине кривой, чтобы лучше контролировать поверхность в данном месте.
Рис.3.8. Дополнительный контроль с помощью функции insert – knot.
Функция insert-net сохраняет все существующие вершины многоугольника на своих позициях и вставляет определённым образом новую вершину в многоугольник, а также добавляет значение узла в узловой вектор, чтобы сохранить стандартность узлового вектора. В данном примере новая вершина была вставлена посередине между второй и третьей вершиной, и было добавлено новое значение узла 0.5. (Заметьте, что в FastShip новый узловой вектор будет иметь вид {0,0,0,0,1,2,2,2,2} т.к. FastShip поддерживает интегральные значения узлов). Теперь, если мы будем использовать уже изученные приёмы для вычисления значения кривой с дополнительным контролем, то обнаружим, что она слегка отличается от исходной кривой. Но мы же дополнительно проконтролировали поверхность. Секрет здесь в том, что команда insert-net не сохраняет форму кривой, но сохраняет стандартность узлового вектора.
Теперь обратимся к рис.3.8. для рассмотрения операции insert-knot дополнительного контроля. Начнём всё с того же В-сплайна, показанного в нижней части рисунка. Пользователь определяет в каком месте он хочет вставить узел, в данном примере при значении параметра 0.75. Узловой вектор соответственно изменяется и добавляется новая вершина. Однако в этом случае некоторые вершины многоугольника перемещаются со своих первоначальных позиций. Используется приём, описанный ранее, когда вершины определяются осреднением узлового вектора и новый многоугольник создаётcя, как показано справа на рисунке. Секрет здесь в том, что insert-knot сохраняет форму кривой, но не сохраняет стандартности узлового вектора. Фактически за исключением отдельных случаев единственного интервала узлового вектора невозможно вставить узел в стандартный многоинтервальный узловой вектор, при этом сохранить его стандартность.
3.8 Что значит “рациональный”?
До сих пор мы рассмотрели все части, которые составляют аббревиатуру NURBS за исключением одного “рациональность”. В-сплайн является рациональным, если каждой вершине его определяющего многоугольника соответствует своё значение веса точки. Вес точки можно рассматривать как силу влияния данной точки на кривую. Рассмотрим рис.3.9.
Рис.3.9. Рациональность В-сплайнов
Здесь мы пытаемся определить дугу круга в 900 используя квадратичный В-сплайн, заданный тремя вершинами многоугольника. Т.к. мы знаем что кривая приближается на своих концах к касательной, проведённой к конечным точкам наклонных, то для того, чтобы получить дугу 900 обе наклонных многоугольника должны быть перпендикулярны. Подгоняя многоугольник, как показано на рисунке, но оставляя веса точек равными 1, получается верхняя кривая, показанная на рисунке, очевидно, не круглой формы. Первым побуждением было бы сдвинуть вниз вершину В1 пока не получится фигура более круглой формы. Хотя этого могло быть и достаточно для приближения к круглой форме, это не может быть правильно по двум причинам. Первая, двигать вниз В1 означает, что две наклонные больше не будут перпендикулярными, т.е. касательные к конечным точкам кривой не могут быть перпендикулярными. Второе, и, возможно, более важное, ранее мы показали, что двигая вершину контрольной сети, все точки кривой двигаются в том же направлении, что и вершина, но на разные расстояния. Здесь же нам нужно, чтобы точки двигались от В1 в радиальном направлении. Это достигается изменением веса вершины В1. В данном примере вес точки уменьшили так, чтобы получился круг. Существует точное распределение весов определяющего многоугольника, которое позволяет получить круг. Хотя в определённых случаях это распределение легко вычисляется, оно не является общим случаем. Для большинства моделей, выполненных в FastShip, достаточным является приближённо построить круговую область, используя вершины со стандартными весами. Курс передового обучения FastShip предоставляет специальные примеры того, как использовать В-сплайны для получения круговых областей.
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. Визуальное сравнение формы поверхности с ординатами
К настоящему моменту мы уже имеем поверхность корпуса. Теперь на этой поверхности нужно создать ещё два плоских листа, из которых в дальнейшем получатся бак и ют. Для добавления к поверхности ещё одной поверхности можно воспользоваться двумя вариантами:
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. Пример построения поверхности.