Российская программа 3DField (field.hypermart.net) имеет аналогичное предназначение, однако меньший набор доступных средств и при этом обладает более приятным интерфейсом. Другая система научной графики TecPlot (http://www.amtec.com/) , имеет широкие возможности визуализации различных (не только двумерных) данных. В частности, система позволяет строить поверхности, векторные поля, визуализировать объекты, заданные в виде конечных элементов. К сожалению, при всех своих достоинствах она имеет явно перегруженный интерфейс. При всей красоте этих систем, следует заметить, что они более полезны для подготовки к печати статьи или отчета, нежели для повседневной работы исследователя. Но работу по представлению данных в виде, готовом для печати, эти системы выполняют на высоком уровне. К сожалению, такие программы рассчитаны на сравнительно небольшие объемы данных, что ограничивает область их применения.
Стоит также упомянуть о такой программе как Origin – она используется для визуализации различных инженерных расчетов, в том числе и расчетов в микроэлектронике.
Хотя в области микроэлектронных технологий большую популярность имеют визуализаторы, интегрированные в САПР для ИМС, такие как Cadence, ISE, но все-таки инженеры часто используют свои программы для моделирования приборов и возникает необходимость в визуализаторах их расчетов. В этом случае можно помимо вышеназванного Originупомянуть о пакете фирмы Compaq – ArrayVisualizer. Этот пакет хорош тем, что может быть как интегрированным в среду разработки программ VisualStudio и работать с такими языками как VisualBasic, VisualC++, CompaqVisualFortran (CVF), так и быть отдельной программой. Помимо этого он включает ActiveX-компоненты, которые могут быть использованы для WIN32 приложений.
Помимо этих – WINDOWS-пакетов, есть еще DOS-пакеты, например Mapple. Так как он является приложением DOS, то имеет недружелюбный интерфейс, однако является достаточно мощным.
Кроме вышеназванных пакетов и программ есть еще множество других средств для визуализации инженерных и научных расчетов – от сложных и универсальных, до простых, узкоспециальных. Но для своих специфических применений разработчики отдельных подсистем САПР разрабатывают свои пакеты или покупают и настраивают уже существующие стандартные пакеты.
1.2 Описание визуализатора CompaqArrayVisulizer.
ArrayVisualizer (AV) фирмы Compaq позволяет наблюдать как данные числовых массивов, так и их графическое представление. AV содержит в качестве ядра графическую библиотеку OpenGL процедуры которой обеспечивают графический вывод. Дополнительно AV позволяет манипулировать графическими данными, предоставляя возможности для перемещения, поворота и масштабирования изображения, а также для изменения способа его представления на экране. AV содержит:
1. автономно запускаемое приложение, выполняющее отображение данных
2. библиотеку Aview процедур, вызываемых из приложений Фортрана и предназначенных для управления ОМ
3. ActiveX-процедуры библиотек Avis2D и AvisGrid
4. дополнительные визуальные средства
Массив, переданный AV, отображается в двух видах:
1. в виде числовой таблицы, выводимой в верхней части окна AV
2. в графическом виде как трехмерное изображение (3D-вид), или как цветовая карта, или как векторные граф, или как рисунок на плоскости.
Процедуры библиотеки Aview позволяют приложениям CVF или VisualC++ отображать (посредством OLE-автоматизации) данные массива, применяя AV. Также данные массива можно сохранить в виде файла, который загружается в AV в процессе его автономного использования.
ActiveX-процедуры (OCX) библиотек Avis2D и AvisGrid могут быть использованы любой поддерживающей автоматизацию средой, например VisualC++, VisualBasic или CVF, для отображения массивов в разнообразных графических видах. Процедуры Avis2D обеспечивают при выполнении графического вывода более 100 свойств, методов и событий; процедуры AvisGrid применяются для создания представляющих массивы таблиц и предоставляют около 30 свойств, методов и событий.
Возможны несколько вариантов употребления AV. Они, а также присущие им преимущества и недостатки перечислены в следующей таблице:
Вариант | Преимущества | Недостатки |
Загрузка agl-файла, созданного ранее выполненным приложением | Не требует написания специального кода для вызова AV | Нет возможности автоматизировать изменение отображаемых данных |
Использование отладчика CVF | Не требует написания специального кода, работает с проектом любого типа | Требует ручного задания свойств массива и настройки AV; не может быть использован в VisualC++ или VisualBasic, а также в Release-режиме CVF. |
Использование fagl-подпрограмм или в случае С – agl-функций | Небольшое число процедур и , следовательно небольшие затраты на программирование, процедуры работают с проектами любого типа и в Debug-, и в Release-режиме. | Требует ручного задания свойств массива и настройки AV |
Использование fagl- и fav- подпрограмм или в случае C++ - agl-функций и функций класса CAViewer. | Можно программно задавать свойства массива и выполнять настройки AV; процедуры работают с проектами любого типа; последовательно в одном экземпляре AV можно отображать несколько массивов. | Потребуется освоить большое число процедур (более 100); функции класса CAViewer нельзя применять в C (необходим C++). |
Использование ActiveX-процедур библиотек Avis2D и/или AvisGrid | Дает возможность выводить создаваемые AV графические образы и таблицы данных без вызова AV; обеспечивает более быстрое | Употребляется только в Windows-приложениях Фортрана или MFC в случае VisualC++. Заметим, что в VisualBasic большинство |
Воспроизведение образов и больше возможностей для настройки параметров | EXE-проектов могут использовать процедуры библиотек Avis2D и AvisGrid; потребуется освоить большое число Avis2D/AvisGrid-процедур; Avis2D и AvisGrid процедуры не могут отображать HDF и текстовые файлы. |
Отображение массивов.
Массивы отображаются в следующих видах:
1) 3-D видили Height Plot (рис 1):
1. Растровая карта (контрастная заливка) или ImageMap(рис 2):
2.
рис. 3
3. График или PlaneView (рис 3):
Перечисленные режимы могут быть заданы как в AV непосредственно, так и в программе, из которой AV запускается. В AV переключение режима выполняется либо из меню, либо в результате выбора соответствующей иконки.
Для вращения изображения достаточно разместить мышь на поле графического вывода, нажать левую кнопку мыши и затем, оставаясь на поле вывода, перемещать мышь в произвольном направлении.
1.3 Описание библиотеки функций ArrayVisualizer.
Ввиду сложности создания Windows-приложений, а также того, что ActiveX-компонента Avis2D не корректно отображает одномерные массивы было решено использовать непосредственно оболочку ArrayViewer в совокупности с программой, расширяющей его возможности, а так же служащей более простым интерфейсом между программой инженера и AV. Для создания программы был применен подход с использованием fagl- и fav- процедур. Программа писалась на языке CVFv6.5.
Опишем процедуры APIAV, встраивание которых в приложение позволяет запускать AV, передавать ему массив, управлять изображением.
FAGL - подпрограммы.
Синтаксис подпрограммы | Описание |
faglClose(array,status) | Закрывает экземпляр AV. Если затем возникает потребность отобразить массив array снова, то достаточно вызвать лишь faglShow; вызова faglStartWatch выполнять не нужно |
faglEndWatch (array, status) | Удаляет массив array из списка отображаемых массивов и освобождает ресурсы, связанные с array и используемые подпрограммами библиотеки. |
faglGetShareName (array, filename, status) | Строка filename, возвращаемая этой подпрограммой, может быть передана процедурам Avis2D и AvisGrid как свойство FileName. |
faglHide(array, status) | Делает экземпляр AV невидимым. Экземпляр AV станет видимым, если затем вызвать faglShow. Однако если экземпляр AV создан посредством favStartViewer, то вместо faglShow следует употреблять favShowWindow |
faglLBound (array, lbnd, status) | Устанавливает левые границы измерений отображаемого массива в видах Data или GraphViewsAV. По умолчанию массив отображается с границами, равными единице. |
faglSaveAsFile (array, filename, status) | Сохраняет текущий массив в файле с расширением AGL. Такой файл может быть загружен и отображен в AV. |
faglShow (array, | Создает экземпляр AV и отображает данные |
status) | массива array. Так же делает экземпляр AV видимым. |
faglStartWatch (array, status) | Добавляет массив array в список отображаемых массивов и возвращает дескриптор hv, который используется для доступа к массиву другими подпрограммами библиотеки. Фактически faglStartWatch использует системные ресурсы для приведения array к виду, необходимому для faglShow. Чтобы освободить эти ресурсы, следует вызвать faglEndWatch. |
FaglUpdate(array, status) | Приводит в соответствие изображение с данными, хранящимися в массиве array. Употребляется, если приложение изменило отображаемый массив array с момента последнего вызова faglUpdate или faglShow и если есть необходимость обновить изображение. Если же экземпляр AV ассоциируется с массивом, созданным favStartViewer, а не faglShow, то вместо faglUpdate нужно вызвать favUpdate. |
Параметры fagl подпрограмм: