Текст произведения
(PDF):
Читать
Скачать
Введение В основе программ автоматизированного расчёта сопротивления движению судна используются алгоритмы приближенных способов расчёта сопротивления движению судна, которые основаны на обработке данных систематических модельных и натурных испытаний; согласно [1] их применяют на начальной стадии проектирования судна, когда отсутствует теоретический чертёж, но при этом известны геометрические параметры корпуса. В настоящее время представлено достаточно большое количество инструментов по автоматизации расчётов ходкости судна, которые условно можно разделить на специализированные и общие. К специализированным, пожалуй, можно отнести NavCad, SwiftCraft, модуль «HYDRO» для TRIBON и др. К общим относятся такие популярные программы, как Excel, входящий в пакет Microsoft Office, и Calc, входящий в пакет LibreOffice. Специализированные программы являются дорогими и требуют определённых навыков по владению, вследствие чего их могут себе позволить только проектные бюро. Общие системы наиболее востребованы из-за низкой цены, свободного распространения и простоты использования. Данные инструменты широко применяются студентами и различными инженерами для упрощения проведения громоздких расчётов. Однако в этом случае остаётся проблема с графиками и диаграммами, напечатанными на бумаге, работа с которыми отличается трудоёмкостью и неточностью. Поэтому уже давно выработался иной подход работы с данными материалами - их оцифровка. Результатом процесса оцифровки является функция, которая приближенно описывает график, изображённый на бумажном носителе. В последующем полученную функцию можно использовать в алгоритмах для выполнения расчётов. Оцифровка графиков и диаграмм предполагает различные трудности как в процессе ручной оцифровки, так и в алгоритмах автоматической оцифровки. Большинство имеющихся программ, таких как GetData Graph Digitizer, Graph2Digit, Chard Reader, Graph и пр., согласно [2, 3] имеют ручной режим оцифровки графиков, и во многих из них встречаются такие проблемы, как большая погрешность, неудобный интерфейс, невозможность сохранить процесс оцифровки, использование специфичных исходных форматов файлов, отсутствие встроенного растрового редактора изображений. Сложней решить вопросы, которые касаются алгоритмов автоматической оцифровки. Также приходится сталкиваться со следующими проблемами: плохое или низкое качество изображений (наличие шумов); несколько линий на одном графике и пр. С целью решения вышеописанной проблемы студентами Астраханского государственного технического университета была разработана программа на основе алгоритма из работы [4] для оцифровки графиков и диаграмм Wizard DXF Digitizer. Описание программы по оцифровке графиков и диаграмм Программа Wizard DXF Digitizer написана на языке программирования C# в среде разработки Microsoft Visual Studio 2005 Express Edition. В ходе разработки для проведения отладки и тестирований программы были использованы следующие CAD-системы: AutoCAD, КОМПАС-3D, nanoCAD, LibreCAD. Программа Wizard DXF Digitizer имеет следующие минимальные системные требования: - операционная система Microsoft® Windows® XP/Vista (SP2)/7 (SP1)/8/8.1/10; - процессор с тактовой частотой 1 ГГц; - оперативная память - 512 МБ; - дисковое пространство - 4,5 ГБ; - NET Framework 4 и выше. Интерфейс программы Wizard DXF Digitizer предельно прост (рис. 1) и состоит из следующих элементов: 1) «Выбор исходного файла». Необходимо выбрать файл в формате DXF R14 или в более новом, т. к. алгоритм обработки DXF-файлов построен на более новой спецификации формата от 2010 г.; 2) «Область параметров контрольных линий». Здесь необходимо задать координаты линий масштабирования данных, информацию о которых необходимо взять из самого изображения графика или диаграммы; 3) «Область вывода отчёта работы программы». В данной области выводятся результаты работы программы: имя (полный путь) обрабатываемого файла, успешная/неудачная попытка извлечения данных, количество найденных полилиний, соответствие/несоответствие масштабируемых линий необходимым требованиям, имя (полный путь) сохранённого файла с результатами обработки исходного файла; 4) «Обработка файла». При успешной обработке DXF-файла программа сразу предложит сохранить результат в формате CSV. Рис. 1. Интерфейс программы Wizard DXF Digitizer Процесс оцифровки заключается в построении графика в CAD-системе с последующим преобразованием полученного DXF-файла в разработанной программе. Применение программы для оцифровки диаграммы по определению коэффициента остаточного сопротивления воды движению судна Ниже приведена последовательность процесса оцифровки диаграммы зависимости CR0(δ; Fr) для V-образной формы носовой оконечности судна, которая была получена В. М. Штумфом в результате систематических исследований влияния форм обводов на сопротивление морских судов [5, с. 101], на примере CAD-системы nanoCAD (версия 5.1). 1. Необходимо вставить (импортировать) изображение в используемую CAD-систему (рис. 2) посредством выполнения команд «Вставка» - «Ссылка на растр». Рис. 2. Импорт изображения в системе nanoCAD 2. Задать четыре прямых линии, с помощью которых будет осуществляться масштабирование данных (рис. 3). Для этого также можно начертить прямоугольник (инструмент «Прямоугольник»), разбив его в последующем на линии (инструмент «Разрушить»). Рис. 3. Линии масштабирования данных 3. Построить диаграмму с помощью полилиний (инструмент «Ломаная») (рис. 4). Для удобства можно воспользоваться инструментом «Сплайн» и затем с помощью команды «PEDIT» преобразовать сплайны в полилинии. Рис. 4. Итоговый вариант диаграммы, полученной в системе nanoCAD 4. Сохранить файл в формате DXF R14 или в более новом формате, т. к. алгоритм обработки DXF-файлов построен на более новой спецификации формата от 2010 г. 5. Открыть полученный файл в программе Wizard DXF Digitizer, задать параметры контрольных линий и нажать на кнопку «Получить данные». Затем программа предложит сохранить данные при успешной обработке файла (рис. 5). Рис. 5. Результат работы программы Wizard DXF Digitizer 6. Завершающим этапом оцифровки диаграммы является обработка полученных данных. Так как Wizard DXF Digitizer производит только извлечение координат линий графиков и их масштабирование в зависимости от указанных минимальных и максимальных значений координатных осей, последний этап обработки данных заключается в их аппроксимации, то есть нахождении тех функций, которые наиболее близко проходили бы около данных точек. С помощью программы Excel, опытным путём, на примере графика Fr = 0,35 было установлено, что наибольшую достоверность (R2 = 0,9999926) и наименьшую относительную ошибку аппроксимации (0,051075 %) имеет полиномиальная функция 6-й степени. Общий вид полинома 6-й степени представлен в виде Коэффициенты полиномов, полученных в программе Excel, представлены в табл. 1. Получение аппроксимирующих функций можно упростить определением соответствующих коэффициентов полиномов 6-й степени и автоматизацией их получения с помощью свободной системы для математических вычислений GNU Octave. Алгоритм, написанный на языке программирования Octave для определения коэффициентов полиномов 6-й степени, выглядит следующим образом: 1) #Чтение файла data.csv с разделителем ';'; 2) data = dlmread('data.csv',';'); 3) #Количество линий; 4) countLines = 0; 5) #Массивы с координатами полилинии по осям X и Y; 6) xLine = []; 7) yLine = []; 8) #Цикл, считывающий матрицу data; 9) for i = 2:1:rows(data); 10) #Значение по оси X; 11) x = data(i,1); 12) #Значение по оси Y; 13) y = data(i,2); 14) #Если значения равны нулю, то начинаются данные следующей линии; 15) if ((x == 0) && (y == 0)) || (i == rows(data)); 16) #Увеличиваем количество линий на 1; 17) countLines++; 18) #Номер полинома; 19) countPolynomial = {strcat('Polynomial #', num2str(countLines))}; 20) #Запись номера полинома; 21) dlmwrite('outputData.csv', cell2mat(countPolynomial), '', '-append'); 22) #Поиск коэффициентов полинома 6-й степени; 23) k = polyfit(xLine, yLine, 6); 24) #Запись коэффициентов полинома в файл; 25) dlmwrite('outputData.csv', k, ';', '-append'); 26) #Сбрасываем данные координат полилинии по осям X и Y; 27) xLine = []; 28) yLine = []; 29) else; 30) xLine = [xLine x]; 31) yLine = [yLine y]; 32) endif; 33) endfor. При помощи данного алгоритма можно с лёгкостью получить коэффициенты полиномов для каждой кривой на диаграмме (табл. 2). Если провести сравнение аппроксимирующих функций, полученных при ручном построении аппроксимирующей функции по точкам в программе Excel и полученных коэффициентов полинома из алгоритма, написанного на языке программирования Octave, на примере графика Fr = 0,35, то получим разницу относительной ошибки аппроксимации 16 · 10-10 %. Поэтому использование алгоритма, написанного на языке программирования Octave, позволяет получить функцию, не уступающую по точности функции, построенной по точкам в программе Excel, значительно уменьшает трудоёмкость получения итоговых функций диаграммы. Заключение Таким образом, на основе вышеперечисленного можно выделить следующие преимущества программы Wizard DXF Digitizer по сравнению с другими средствами оцифровки графиков и диаграмм: - уменьшение времени оцифровки графиков и повышение точности результатов за счёт применения различных инструментов CAD-систем; - возможность сохранять результат процесса оцифровки; - удобные интерфейсы CAD-систем. Однако программа Wizard DXF Digitizer не лишена недостатков: - ручная оцифровка; - приходится учитывать некоторые особенности каждой CAD-системы. Следует отметить, что программа в том виде, в котором она сейчас существует, совместно с алгоритмом, написанным на языке программирования Octave, позволяют значительно упростить задачу по оцифровке графиков и диаграмм в отличие от использования иных свободно распространённых средств по оцифровке графиков, а её дальнейшее развитие поспособствует улучшению этого результата. Приведённые выше возможности, преимущества и результаты программы в совокупности позволяют интегрировать её в качестве одного из наиболее эффективных компонентов в общую систему по автоматизации расчётов сопротивления движения судна, а через неё - в автоматизацию расчётов ходкости судна и, возможно, в дальнейшем - в автоматизацию расчётов мореходных качеств судна в целом.