mirror of
https://github.com/eddyem/bta-image-model.git
synced 2026-03-20 08:40:59 +03:00
add my own simple JSON parser instead of json-c
This commit is contained in:
22
mask/README.fmt.RU
Normal file
22
mask/README.fmt.RU
Normal file
@@ -0,0 +1,22 @@
|
||||
формат JSON для файла описания диафрагмы:
|
||||
|
||||
Файл состоит из некоторого количества глобальных параметров и одного массива с описанием отверстий
|
||||
в диафрагме
|
||||
В глобальных объектах обязательно должен находиться параметр "Z" или "maskz" (это одно и то же) -
|
||||
координата Z (от вершины зеркала) расположения диафрагмы Гартманна
|
||||
Также можно объявить глобальные параметры - одну или несколько характеристик отверстий диафрагмы,
|
||||
в этом случае в тех отверстиях массива, где данный параметр опущен, он будет браться из глобальных.
|
||||
|
||||
Центр диафрагмы располагается на оптической оси зеркала. Считается, что диафрагма строго
|
||||
перпендикулярна оптической оси.
|
||||
|
||||
Массив, задающий параметры отверстий диафрагмы, именуется "holes", каждый член массива может
|
||||
содержать следующие поля (они могут быть и описаны в глобальных):
|
||||
"shape" - форма отверстия ("square" - квадрат, "round" -круг, "ellipse" - эллипс)
|
||||
"radius" - скаляр или массив из двух значений - радиус отверстия
|
||||
"center" - массив из двух значений - координаты центра отверстия (относительно центра диафрагмы)
|
||||
"bbox" - массив из четырех значений - координаты двух противоположных углов прямоугольника, описывающего отверстие
|
||||
|
||||
Независимо от формы отверстия его можно задать двумя способами: либо комбинацией "radius" и "center",
|
||||
либо одним полем "bbox". Если заданы оба параметра, учитывается лишь первый.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"maskz": 20.0,
|
||||
"maskz": 20.017,
|
||||
"shape": "round", "radius": 0.007500,
|
||||
"holes": [
|
||||
{ "ring": 0, "number": 0, "center": [ 0.1742, 0.0172 ] },
|
||||
@@ -258,7 +258,7 @@
|
||||
{ "ring": 7, "number": 29, "center": [ 0.4216, -0.2253 ] },
|
||||
{ "ring": 7, "number": 30, "center": [ 0.4574, -0.1388 ] },
|
||||
{ "ring": 7, "number": 31, "center": [ 0.4757, -0.0469 ] },
|
||||
{ "mark": 1, "number": 0, "center": [ 0.3141, -0.1301 ] },
|
||||
{ "mark": 1, "number": 1, "center": [ 0.0933, -0.4688 ] },
|
||||
{ "mark": 1, "number": 0, "center": [ 0.4416, -0.1829 ] },
|
||||
{ "mark": 1, "number": 1, "center": [ 0.0576, -0.2893 ] },
|
||||
]
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ function make_mask()
|
||||
% ÐÏÓÔÒÏÅÎÉÅ ÇÁÒÔÍÁÎÏ×ÓËÏÊ ÍÁÓËÉ
|
||||
% SS - ÒÁÚÍÅÒ ÍÁÓËÉ
|
||||
f = fopen("holes.json", "w");
|
||||
X = []; Y = [];
|
||||
R = [175 247 295 340 379 414 448 478] * 1e-3; % ÒÁÄÉÕÓÙ ËÏÌÅÃ ÎÁ ÇÁÒÔÍÁÎÏÇÒÁÍÍÅ
|
||||
HoleR = 7.5e-3; % ÒÁÄÉÕÓ ÏÔ×ÅÒÓÔÉÊ - 7.5ÍÍ
|
||||
R0 = .6; % ÒÁÄÉÕÓ ÓÁÍÏÊ ÇÁÒÔÍÁÎÏÇÒÁÍÍÙ
|
||||
@@ -11,20 +12,23 @@ function make_mask()
|
||||
% ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÒÁÚÍÅÓÔÉÔØ ÎÁ ÍÁÓËÅ ÏËÒÕÖÎÏÓÔÉ, ÓÏÚÄÁÄÉÍ ÍÁÓËÕ
|
||||
% ÏËÒÕÖÎÏÓÔÉ: zeros(15) Ó ÅÄÉÎÉÃÁÍÉ ÔÁÍ, ÇÄÅ ÄÏÌÖÎÁ ÂÙÔØ ÄÙÒËÁ. úÁÔÅÍ
|
||||
% ÐÏÍÅÔÉÍ ÅÄÉÎÉÃÁÍÉ × mask ÔÅ ÔÏÞËÉ, ËÕÄÁ ÄÏÌÖÅÎ ÐÏÐÁÄÁÔØ ÌÅ×ÙÊ ×ÅÒÈÎÉÊ
|
||||
fprintf(f, "{\n\t\"shape\": \"round\", \"radius\": %f,\n\t\"holes\": [\n" , HoleR);
|
||||
fprintf(f, "{\n\t\"maskz\": 20.017,\n\t\"shape\": \"round\", \"radius\": %f,\n\t\"holes\": [\n" , HoleR);
|
||||
for i = [1 : size(R,2)] % ÃÉËÌ ÐÏ ËÏÌØÃÁÍ
|
||||
x = R(i) * cos(Angles);
|
||||
y = R(i) * sin(Angles);
|
||||
X = [X x]; Y = [Y y];
|
||||
%fprintf(f, "\t\t{\"ring\": %d, \"center\": [%f, %f]\n", i, x[j], y[j]]);
|
||||
printR(f, sprintf("\"ring\": %d", i-1), x, y);
|
||||
endfor
|
||||
% ÐÏÍÅÞÁÅÍ ÍÁÒËÅÒÙ
|
||||
x = R([4 8]) .* cos([-2 -7]* 2 * alpha0);
|
||||
y = R([4 8]) .* sin([-2 -7]* 2 * alpha0);
|
||||
x = R([8 3]) .* cos([-2 -7]* 2 * alpha0);
|
||||
y = R([8 3]) .* sin([-2 -7]* 2 * alpha0);
|
||||
X = [X x]; Y = [Y y];
|
||||
%fprintf(f, "\t\t{\"marker\", \"center\": [%f, %f]\n", x, y);
|
||||
printR(f, sprintf("\"mark\": 1"), x, y);
|
||||
fprintf(f, "\t]\n}\n");
|
||||
fclose(f);
|
||||
plot(X, Y, 'o'); axis square;
|
||||
endfunction
|
||||
|
||||
function printR(f, msg, x, y)
|
||||
|
||||
Reference in New Issue
Block a user