Приложение А. Фотометрические координаты
Исследователи, занимающиеся вопросами поверхностной фотометрии планет, часто используют так называемую фотометрическую систему координат, в которой фотометрические условия наблюдения в каждой точке на поверхности планеты определяются фотометрической широтой j, фотометрической долготой l и углом фазы a. Такое представление эквивалентно более распространённому, когда фотометрические условия наблюдения определяются более наглядными параметрами: i – угол падения света, e - угол отражения (рассеяния, наблюдения) и y - разность азимутов падающего и отраженного лучей. Эти два набора параметров связаны следующими соотношениями:
| (А.1) |
,
| (А.2) |
,
| (А.3) |
.
Геометрический смысл фотометрических координат заключается в том, что при наблюдении планеты с бесконечного расстояния они являются полноправными сферическими координатами (широтой и долготой) на поверхности планеты, отсчитываемыми от условного фотометрического экватора, проходящего через поднаблюдательную (где e=0) и подсолнечную (где i=0) точки. При этом долгота отсчитывается от поднаблюдательной точки в направлении подсолнечной точки, а широта – от фотометрического экватора вдоль меридиана, проходящего через наблюдаемую точку.
При наблюдении же планеты с конечного расстояния фотометрические координаты можно лишь условно называть широтой и долготой, а связь их с планетографическими координатами необходимо осуществлять, используя уравнения, описывающие перспективную проекцию, в которой находится изображение планеты (см. Приложение Б). Однако, несмотря на это, при исследовании закона отражения света фотометрические координаты часто являются наиболее удобным представлением условий наблюдения, как это имеет место, например, в данной диссертационной работе.
Приложение Б. Косая внешняя перспективная проекция
При обработке данных панорамных наблюдений планет исследователи, как правило, имеют дело с изображениями планет, представленными, в общем случае, в косой внешней перспективной картографической проекции [52] (в основном, это касается наблюдений Луны и Солнца, к которому в данном случае будем тоже применять термин "планета", а также наблюдений других планет с приближающихся к ним космических аппаратов).
Как правило, цифровые изображения объектов в такой проекции представляют собой прямоугольные матрицы точек с координатами на плоскости x, y (пусть для определенности ось x направлена вправо, а ось y – вверх). Однако часто бывает нужно вычислить планетографические или фотометрические координаты точки с заданными координатами x, y или, наоборот, вычислить x и y по заданным планетографическим или фотометрическим координатам. Приведём точные формулы для таких вычислений, представив их в виде, наиболее удобном для программирования. При этом будем считать, что планета имеет форму шара (этого вполне достаточно для Луны). Также будем подразумевать, что косая перспективная проекция задана с помощью следующего набора параметров: x0, y0 – координаты поднаблюдательной точки на плоскости проекции, R – радиус изображения планеты (например, в пикселах), D – расстояние от центра планеты до наблюдателя (в радиусах планеты), b0, l0 – планетографические координаты поднаблюдательной точки, x - позиционный угол центрального меридиана планеты, отсчитываемый от положения "север – вверху" и увеличивающийся при повороте изображения против часовой стрелки. Для вычисления фотометрических координат также понадобятся планетографические координаты подсолнечной точки bS и lS. Отметим, что параметры b0, l0, bS и lS можно взять из Астрономического ежегодника, а остальные параметры нужно находить при определении положения планеты на изображении.
Переход от прямоугольных координат на плоскости перспективной проекции к планетографическим координатам. Пересчет координат удобнее всего проводить поэтапно:
1. Переход от системы координат на плоскости проекции к системе прямоугольных координат x1, y1, z1, центр которой находится в центре планеты, ось z1 направлена на наблюдателя, а оси x1 и y1 параллельны и сонаправлены осям x и y на плоскости проекции соответственно:
| (Б.1) |
,
где
,
,
,
,
| (Б.2) |
,
| (Б.3) |
,
где
(величины x, y, x0, y0, R,
, r, d измеряются в пикселах, а величины D, rd,
r0, x1, y1, z1 – безразмерные и
представляют собой расстояния, нормированные на радиус планеты).
2. Переход к системе x2, y2, z2, осуществляемый путём поворота системы координат на позиционный угол x вокруг оси z1 с тем, чтобы ось y2 оказалась направленной вдоль центрального планетографического меридиана:
| (Б.4) |
,
| (Б.5) |
,
| (Б.6) |
.
3. Переход к системе x3, y3, z3, осуществляемый путём поворота системы координат на угол b0 вокруг оси x2 (лежащей в плоскости экватора планеты) с тем, чтобы ось y3 оказалось направленной на северный полюс планеты:
| (Б.7) |
,
| (Б.8) |
,
| (Б.9) |
.
4. Переход от прямоугольных координат к сферическим:
| (Б.10) |
,
| (Б.11) |
,
причём, если z3 отрицательно, то l в (Б.11) следует увеличить или уменьшить на 180°, устранив тем самым неоднозначность функции arctg.
Переход от планетографических координат к прямоугольным координатам на плоскости перспективной проекции. Здесь произведём те же этапы преобразований, но в обратном направлении:
1. Переход от сферических координат к прямоугольным:
| (Б.12) |
,
| (Б.13) |
,
| (Б.14) |
.
2. Переход к системе x2, y2, z2, осуществляемый путём поворота системы координат на угол b0 вокруг оси x3 (лежащей в плоскости экватора планеты) с тем, чтобы ось z2 оказалось направленной на наблюдателя:
| (Б.15) |
,
| (Б.16) |
,
| (Б.17) |
.
3. Переход к системе x1, y1, z1, осуществляемый путём поворота системы координат на позиционный угол x вокруг оси z2 с тем, чтобы оси x2 и y2 оказались параллельными и сонаправленными осям x и y на плоскости проекции соответственно:
| (Б.18) |
,
| (Б.19) |
,
| (Б.20) |
.
4. Переход к системе координат на плоскости проекции:
| (Б.21) |
,
| (Б.22) |
,
где
,
. Причём, если z1>1/D, то рассматриваемая
точка находится на видимой стороне планеты, в противном случае – на обратной.
Переход от прямоугольных координат на плоскости перспективной проекции к фотометрическим координатам. Пересчет координат опять будем проводить поэтапно:
1. Переход от системы координат на плоскости проекции к углам e (угол отражения) и DA (разность азимутов рассматриваемой и подсолнечной точек в поднаблюдательной точке):
| (Б.23) |
,
| (Б.24) |
,
где
,
,
. Причем, если y<0, то DA
следует увеличить или уменьшить на 180°, устранив
тем самым неоднозначность функции arctg. Азимут подсолнечной точки AS
можно вычислить следующим образом:
| (Б.25) |
,
| (Б.26) |
,
где a0 – угол фазы для центра планеты. Причём, если угол lS-l0 находится в интервале от 180° до 360°, то у AS следует изменить знак на противоположный, устранив тем самым неоднозначность функции arccos.
2. Переход от углов e и DA к фотометрическим координатам j и l:
| (Б.27) |
,
| (Б.28) |
,
причем, если угол DA находится в интервале от 180° до 360°, то у l следует изменить знак на противоположный, устранив тем самым неоднозначность функции arccos. Здесь также может быть вычислен угол фазы a для рассматриваемой точки, который отличается от угла фазы для центра планеты a0 из-за конечности расстояния D. Точные формулы для его вычисления достаточно громоздки, поэтому приводить их здесь не будем. Тем более что в большинстве задач отличием a от a0 можно пренебречь.
Переход от фотометрических координат к прямоугольным координатам на плоскости перспективной проекции. Здесь произведём те же этапы преобразований, но в обратном направлении:
1. Переход от фотометрических координат j и l к углам e и DA:
| (Б.29) |
,
| (Б.30) |
,
причем, если угол l находится в интервале от 180° до 360°, то значение DA следует заменить на 180°-DA, устранив тем самым неоднозначность функции arcsin.
2. Переход от углов e и DA к координатам на плоскости проекции:
| (Б.31) |
,
| (Б.32) |
,
где
,
,
, а AS вычисляется по формуле (Б.26).
Приложение В. Редактор заголовков HeadEdit
Один из компонентов системы IRIS – приложение HeadEdit – был полностью разработан автором диссертации [23].
Редактор HeadEdit - составная часть системы IRIS. Он предназначен для отображения и редактирования сопроводительной информации к данным. Эта информация может содержаться как в текстовых файлах (тогда HeadEdit выступает в качестве текстового редактора), так и в заголовках файлов данных. Обладая всеми основными возможностями текстового редактора, HeadEdit также позволяет редактировать заголовки файлов данных различных форматов. В первую очередь это формат FITS [24,101], на который ориентирована система IRIS.
FITS (Flexible Image Transport System) - принятый в астрономии международный формат файлов данных (N-мерных массивов, в том числе изображений; расширения файлов .fts, .fit, .fits). FITS-файл обычно состоит из заголовка и массива данных (изображения). Заголовок содержит информацию об изображении (размеры, тип данных и т.д.), в том числе информацию астрономического характера (эфемериды, информацию об объекте, наблюдателе и т.п.).
Формат заголовка - текстовый, но с жёсткими ограничениями. Поэтому обычные текстовые редакторы не могут корректно работать с ним. HeadEdit позволяет редактировать FITS-заголовки в обычном текстовом виде, не обращая внимания на длину строк, их количество и т.п. Кроме этого, в редакторе предусмотрена проверка синтаксиса, что позволяет пользователю быть уверенным в соответствии сохранённых файлов формату FITS.
HeadEdit обеспечивает все основные возможности текстового редактора для работы с FITS-заголовками, а также обладает дополнительными возможностями. Редактор позволяет записать заголовок FITS-файла в виде отдельного текстового файла (расширение .hdr), с которым затем можно работать в любом редакторе. Также есть возможность сменить заголовок FITS, вставив его из другого FITS-файла или из текстового файла, в том числе из сохранённого в HeadEdit hdr-файла. Это бывает удобно при обработке наблюдательных данных.
Помимо формата FITS в HeadEdit имеется возможность редактировать заголовки файлов произвольного формата. Принцип открытости архитектуры, положенный в основу разработки системы IRIS, даёт возможность пользователю самому подключать новые форматы к системе.
HeadEdit имеет встроенный OLE-сервер, позволяющий другим программам, в т.ч. IRIS, конвертировать файлы в FITS-формат и обратно. OLE-функции поддерживают все форматы, подключенные в HeadEdit.
OLE-сервер HeadEdit также позволяет другим приложениям вести журнал работы. В частности, это можно делать из макропрограмм IRIS.
HeadEdit, являющийся составной частью IRIS, тем не менее выступает в качестве модуля расширения к системе, выполняющего определённый набор функций. Далее приведен OLE-интерфейс программы HeadEdit, использование которого может позволить разработчикам Windows-программ использовать все функции HeadEdit, в том числе конвертацию файлов в различные форматы.
OLE-интерфейс. HeadEdit содержит три интерфейса, два из которых (ICytegSrv и IIrisSrv) являются обязательными для модулей расширения IRIS, а третий (IMain) – содержит специфические функции самого HeadEdit. Доступ к функциям этих интерфейсов может быть получен по соответствующим именам классов: 'HeadEdit.CytegSrv', 'HeadEdit.IrisSrv' и 'HeadEdit.Main'. Описание первых двух интерфейсов можно найти в документации к IRIS, третий же интерфейс имеет следующий вид (на языке Object Pascal):
IMain = interface(IDispatch)
[ uuid '{35A19262-2D3A-11D2-9BCD-00403396C84D}',
version 1.0,
helpstring 'Dispatch interface for HeadEdit.Main Object',
dual, oleautomation ]
function CytegSrv: IDispatch [propget, dispid $00000001]; safecall; //ссылка на интерфейс ICytegSrv
function IrisSrv: IDispatch [propget, dispid $00000002]; safecall; //ссылка на интерфейс IIrisSrv
procedure ScrollDown [dispid $00000003]; safecall; //показать последнюю строку текста
function OpenLog(FileName: WideString; Show: OleVariant): Integer [dispid $00000004]; safecall; //открыть лог-файл с именем FileName; Show – отображать ли его содержимое в окне редактора (Boolean); результат – ID нового лог-файла
procedure CloseLog(LogIndex: Integer) [dispid $00000005]; safecall; //закрать лог-файл с указанным ID (LogIndex)
function AddToLog(LogIndex: Integer; Text: WideString; Color: Integer): OleVariant [dispid $00000006]; safecall; //добавить текст (Text) в лог-файл с указанным ID (LogIndex); Color – цвет для отображения текста; результат – завершилась ли функция удачно (Boolean)
function FormatOf(FileName: WideString): WideString [dispid $00000007]; safecall; //выдает формат указанного файла
function ConvertToFITS(Format, Source, Destination: WideString): WideString [dispid $00000008]; safecall; //конвертировать файл Source формата Format в FITS и записать его под именем Destination; результат – имя файла-результата, если Destination=''
function ConvertFITSTo(Format, Source, Destination: WideString): WideString [dispid $00000009]; safecall; //конвертировать FITS-файл Source в формат Format и записать его под именем Destination; результат – имя файла-результата, если Destination=''
function FormatSetup: OleVariant [dispid $0000000A]; safecall; //отобразить окно настроек форматов в IRIS
function GetFormats: OleVariant [dispid $0000000B]; safecall; //выдает список зарегистрированных в IRIS форматов; результат – массив строк
end;
Приложение Г. Описание FITS-заголовка
При работе с FITS-заголовками автор диссертации использовал, кроме стандартного набора переменных [101], переменные, предложенные В. В. Корохиным [30], а также переменные, введенные самим автором. Здесь приведен полный набор этих переменных, использующийся при фотометрических исследованиях планет.
Все переменные имеют вещественный тип, кроме тех, для которых в скобках указан другой. Все угловые переменные измеряются в градусах.
Параметры фотометрии.
'KHAO OBJ_PHAS' – угол фазы
'KHAO OBS_OLAT' – планетографическая широта наблюдателя
'KHAO OBS_OLON' – планетографическая долгота наблюдателя
'KHAO SOL_OLAT' – планетографическая широта Солнца
'KHAO SOL_OLON' – планетографическая долгота Солнца
'KHAO OBJ_DIST' – расстояние от наблюдателя до планеты (в радиусах планеты)
Параметры изображения.
'KHAO OBJ_IR ' – радиус изображения планеты (в пикселах)
'KHAO OBJ_IP0 ' – позиционный угол изображения планеты
'KHAO OBJ_ID ' – расстояние от наблюдателя до планеты как параметр перспективной проекции (в радиусах планеты)
'KHAO OBJ_IB0 ' – планетографическая широта центра перспективной проекции
'KHAO OBJ_IL0 ' – планетографическая долгота центра перспективной проекции
'KHAO OBJ_IX0 ' – прямоугольная координата X центра перспективной проекции (в пикселах)
'KHAO OBJ_IY0 ' – прямоугольная координата Y центра перспективной проекции (в пикселах)
'KHAO OBJ_ISX ' – масштаб изображения по оси X (R/Rx)
'KHAO OBJ_ISY ' – масштаб изображения по оси Y (R/Ry)
Параметры совмещения изображений.
'KHAO COMB_ET ' (строка) – имя файла-эталона
'KHAO COMB_ANG' – относительный позиционный угол
'KHAO COMB_DX ' – смещение по оси X (в пикселах)
'KHAO COMB_DY ' – смещение по оси Y (в пикселах)
'KHAO COMB_M ' – относительный масштаб
'KHAO COMB_DXX',
'KHAO COMB_DYY',
'KHAO COMB_DXY',
'KHAO COMB_DYX' – коэффициенты матрицы бесконечно малых линейных преобразований
Параметры отождествления опорных точек.
'KHAO BP_Nxxxx' (строка) – координаты опорной точки № xxxx (например, BP_N0064), представленные в текстовом виде (например, 'x=438.0, y=488.0')