Next: Bibliography
Up: Что такое image и
Previous: Графический дисплей и графический
Хорошее знание пакета визуализации в MIDAS (работа с image и графическим
дисплеями)
избавляет пользователя-астронома
практически полностью от необходимости работать с другими внешними
пакетами при подготовке рисунков для статей. Вы как бы погружены в
единую среду, в который производится как обработка данных
(или расчет моделей), так и подготовка к выдаче Ваших результатов "наружу".
Конечно, существует ряд рисунков, которые очень трудно создать в MIDAS,
и поэтому я не берусь утверждать, что этот пакет есть панацея от всех бед.
Но грамотный пользователь
очень легко расширяет его возможности путем написания командных файлов.
ВНИМАНИЕ :При создании рисунков для статей ОБЯЗАТЕЛЬНО оформляйте их в виде
командных файлов: один рисунок -- один командный файл. Храните
этот командный файл и данные для него в одном месте. При необходимости
переделать/доделать рисунок Вы просто слегка модифицируете
имеющийся командный файл.
Я хотел бы привести в пример два командных файла
с результатами их
работы, конечно. Как будет говориться в дальнейшем, командный файл
в MIDAS обычно имеет расширение ".prg" и, если он находится в текущей
директории, вызывается на исполнение MIDAS-монитора
командой @@ ИМЯ_ФАЙЛА. При разборе приведенных
примеров учтите, что графический и image-дисплей я уже создал
до исполнения командных файлов.
Пример : |
Есть изображение h038Rbffm.bdf с прямым снимком галактики.
Необходимо его нарисовать для статьи, наложив контуры на
центральную часть галактики. На рисунке надо показать масштаб.
Я написал командый файл, который назвал 2D.prg и
вызвал его командой @@ 2D.
Ниже даны краткие пояснения некоторым командам, а полной разбор строки
со всеми параметрами оставлен интересующимся.
Результат работы данной программы приведен на Рисунке 1. |
- LOAD/IMA h038Rbffm 0 4 1002,1060 cuts=11300,11650
- -- визуализуем изображение в черно-белом цвете;
- LOAD/ITT neg
- -- устанавливаем ITT-таблицу, которая выбирает светлый цвет (белый)
для фона и темный (черный) для галактики;
- @a vertlut ? black 10 f5.0
- -- рисуем вертикальный бар с распределением цвета в зависимости от
интенсивности (при этом
стандартная команда выводит на дисплей (в оверлейный канал)
значения уровней);
- CLEAR/CHANEL OVER
- -- очищаем оверлейный канал, чтобы этих надписей не было;
- ASS/GRA d,0
- -- переназначаем вывод графики на image-дисплей;
- SET/GRAPH tsize=0 ssize=0
- -- чтобы следующая команда не рисовала ничего лишнего, устанавливаем
нулевые размеры для линий и букв;
- PLOT/AXES [<,<:>,>
- ]
-- совмещаем визуализованное изображение с оверлейной памятью;
ВНИМАНИЕ :Эта команда есть тайное знание, которым я делюсь со всеми!
Помните о ней! И всегда используйте,
если Вы хотите, чтобы нарисованная контурная карта лежала
поверх визуализованного изображения, а не стояла задумчиво в стороне.
- SET/GRA tsize=1 ssize=1
- -- возвращаем исходные числа;
- DRAW/LINE 100,50,200,50 S ? black
- -- рисуем горизонтальный бар. Чтобы он выглядел достаточно
"жирным" (мы ведь потом будем рисунок сжимать), проводим три линии
с легким сдвигом одна относительно другой. Рисуем командами для
работы с оверлеем (а не с графикой), поскольку эти команды
работают в единицах экрана, а не изображения (которое я загрузил
с увеличением 4), значит сдвиг на один в координатах изображения
-- это сдвиг на 4 в координатах экрана, и мой трюк с тремя линиями
не сработает (можете попробовать);
DRAW/LINE 100,51,200,51 S ? black
DRAW/LINE 100,52,200,52 S ? black
- DRAW/LINE 99,46,99,56 S ? black
- -- рисуем вертикальную черту на левом конце бара. Используем тот же
самый прием;
DRAW/LINE 100,46,100,56 S ? black
DRAW/LINE 101,46,101,56 S ? black
- DRAW/LINE 199,46,199,56 S ? black
- -- рисуем вертикальную черту на правом конце бара;
DRAW/LINE 200,46,200,56 S ? black
DRAW/LINE 201,46,201,56 S ? black
- LABEL/DIS "5" 55,145 ? black 2
- -- рисуем надпись рядом с баром, показывающим масштаб. Работаем в
координатах экрана (для однообразия);
LABEL/DIS "'" 57,157 ? black 2
LABEL/DIS "'" 57,162 ? black 2
LABEL/DIS "303 pc" 25,112 ? black 2
- SET/GRA lwidth=3 color=8
- -- устанавливаем цвет и ширину линий, которыми будем рисовать контуры;
- OVERPLOT/CONT h038Rbffm ? 11700,11800:15000:600 LTYPE
- -- рисуем контуры только некоторой центральной (самой яркой) части;
- SET/GRA lwidth=1 color=1
- -- возвращаем исходные числа;
- COPY/DIS p3=P p5=noprint p6=PC8NZ
- -- копируем получившийся результат в PostScript-файл;
- $mv screen10.ps HS0822+3542R_direct.ps
- -- переименовываем стандартный файл в нужное имя.
Пример : |
Есть таблица qq.tbl со значениями измеренных скоростей
для различных областей одной галактики и расстояниями для этих
областей от центра галактики.
Необходимо нарисовать для статьи эти точки, посчитать и наложить на рисунок
получающуюся кривую скоростей (линейное приближение).
Показать точки, не совпадающие с этой кривой скоростей.
Я написал командный файл, который назвал Rot.prg, и
вызываю его командой @@ Rot.
Результат работы данной программы приведен на Рисунке 2. |
Figure:
Изображение галактики HS 0822+3542 с наложенными на его центральную
часть контурами. Показан масштаб.
Figure:
Кривая вращения для галактики UGC 10806. Звездочками отмечены
скорости для областей из удаляющегося, а квадратиками --
из приближающегося рукава этой галактики.
Вертикальными барами выделены ошибки для каждой точки.
Сплошная линия показывает приближение наблюдаемых точек полиномом
первой степени. Отмечены положения HS 1717+4955 и области A2,
не использованные при построении кривой вращения.
|
- SET/GRA ssize=1.5 tsize=1.3 font=1 twidth=2 stype=3
- -- производим настройки графического пакета для рисования линий и символов;
- PLOT/AXES 0,50 950,1250 ? "
+
1 Distance (arcsec)" "
+
1 Velocity (km/s)"
- -- рисуем оси вместе с подписями;
- SELECT/TAB qq :POS_C.lt.0
- -- выделяем в таблице все точки по одну сторону от центра галактики;
- OVERPLOT/TAB qq :POS_CRA :VEL_C
- -- рисуем их пустыми квадратиками;
- SET/GRA stype=8
- -- меняем тип рисуемых символов на звездочки;
- SELECT/TAB qq :PO_C.gt.0
- -- выделяем в таблице все точки по другую сторону от центра галактики;
- OVERPLOT/TAB qq :POS_CRA :VEL_C
- -- рисуем их звездочками;
- SELECT/TAB qq all
- -- выделяем в таблице все точки;
- OVERPLOT/ERROR qq :POS_CRA :VEL_C :Err
- -- рисуем бары ошибок для всех точек;
- REGRESSION/POLYNOM qq1 :VEL_C :POS_CRA 1
- -- я заранее скопировал во вторую таблицу qq1.tbl
все точки, за исключением двух, которые сильно отклоняются.
Используя точки из этой второй таблицы, я приближаю их полиномом
первой степени;
- SAVE/REGRES qq1 coef
- -- запоминаю полученные коэффициенты;
- COMP/REGRES qq1 :fit = coef
- -- считаю положения точек в соответствии с полученным приближением;
- CREATE/IMA ref 1,40 4,1 nodata
- -- это мой "ход конем". Мне не нравится вид прямой, проведенной по
шести точкам, когда я просто пытаюсь использовать PLOT/TABLE,
установив перед этим SET/GRAPH STYPE=0 LTYPE=1. К тому же
MIDAS рисует в этом случае только до положений крайних точек.
Поэтому я решил построить модель линейного приближения
в виде одномерного изображения. Как первый шаг я строю так называемое
reference-изображение (в нем нет данных, но есть размерность, шаг и т.д.);
- CONVERT/TABLE vel = qq1 :POS_CRA :fit ref POLY 1
- -- преобразую колонку таблицы в изображение vel.bdf, используя
число точек, размерность и шаг;
- SET/GRA lwidth=3
- -- устанавливаю тип линии для рисования;
- OVER/ROW vel
- -- разрисовываю построенную модель;
- SET/GRA ssize=1 tsize=1
- -- возвращаю исходные установки для части параметров;
- LABEL/GRA "A2" 28.5,1025 ? 1
- -- делаю надписи, указав место на рисунке;
LABEL/GRA "HS 1717+4955" 41,1005 ? 1
- SET/GRA ssize=1 tsize=1 twidth=1 stype=5 lwidth=1
- -- возвращаю исходные установки для всех параметров;
- COPY/GRA postscript
- -- копирую полученный рисунок в PostScript-файл;
- $mv postscript.ps HS1717_rot.ps
- -- переименовываю стандартный файл.
И это конец третьей сказки о MIDAS.
Next: Bibliography
Up: Что такое image и
Previous: Графический дисплей и графический
Willy Kniazev
2000-01-31