Расчёт глубины резкости (Citizen)

В своём творчестве фотографы часто используют вещи, которые никакого отношения к фотографии, казалось бы, не имеют. Причём часто встречаются очень оригинальные решения. Предлагаю использовать калькулятор как дополнение к механическому фотоаппарату, не обременённому излишней электроникой.

Приведённые ниже программы писались и тестировались на ПМК CITIZEN srp-175. Он дает возможность ввести четыре программы с общим числом шагов – 128. На сайте Citizen я нашёл информацию ещё о двух программируемых моделях: srp-45N и srp-145T. У них одно поле программы и всего 40 шагов памяти.

1. Расчёт ближнего и дальнего расстояний (58 шагов памяти).

Входные данные:

  • фокусное расстояние (м);
  • значение диафрагмы;
  • расстояние по шкале.

Выходные данные:

  • ближнее расстояние;
  • дальнее расстояние;
  • гиперфокальное расстояние.
01..15 [x] STO 1 [x] STO 2 1/X * 1 7 2 0 * RCL 0
16..29 = STO 3 * RCL 1 / ( RCL 3 - RCL 1 +
30..44 RCL 0 ) = STO 4 RCL 3 * RCL 1 / ( RCL 3
45..58 + RCL 1 - RCL 0 ) = a RCL 4 b R® P P® R

Перед первым запуском программы, а также после каждой смены объектива фокусное расстояние (м) заносится в регистр памяти 0. Например:

0 . 1 3 5 STO 0

После запуска программы (у меня RUN 9):
* на запрос -001- вводить расстояние по шкале, например, 7;
* RUN;
* на запрос -002- ставить значение диафрагмы, например, 5.6;
* RUN;
на экране получаем ближайшее расстояние: 6.005675351 (занесено в переменную a), нажимаем b - читаем 8.388901505. Теперь можно, нажимая a и b, смотреть соответственно ближнее и дальнее расстояния. иперфокальное расстояние лежит в ячейке памяти 3:

RCL 3 ® 41.46428571.

Для дальнейших вычислений повторить абзац сначала.

2. Расчёт расстояния по шкале и значения диафрагмы (49 шагов памяти).

Входные данные:

  • фокусное расстояние (м);
  • ближнее расстояние;
  • дальнее расстояние.

Выходные данные:

  • значение диафрагмы;
  • расстояние по шкале.
01..10 2 * [x] STO 1 * [x] STO 2 / ( RCL 1 +
15..30 RCL 2 ) = STO 3 - RCL 1 = * 1 7 2 0 /
31..43 RCL 1 / ( RCL 3 / RCL 0 - 1 ) =
44..49 b RCL 3 a R® P P® R

Перед первым запуском программы, а также после каждой смены объектива фокусное расстояние (м) заносится в регистр памяти 0. Например,

0 . 0 5 0 STO 0

После запуска программы (у меня RUN 6)
* на запрос -001- вводить ближнее расстояние, например, 5;
* RUN;
* на запрос -002- ставить дальнее расстояние, например, 10;
* RUN;
на экране получаем расстояние по шкале 6.666666667 (занесено в переменную a), нажимаем b - читаем 4.332493703 (значение диафрагмы). Теперь можно, нажимая a и b, смотреть эти значения поочерёдно.

Для дальнейших вычислений повторить абзац сначала.

Для вычислений использовались формулы:
G = 1720 * f / d
m1 = G * m / ( G + ( m – f ) )
m2 = G * m / ( G – ( m – f ) )
m = 2 * m1 * m2 / ( m1 + m2 )
d = 1720 * ( m – m1 ) / m1 / ( m / f – 1 )

(последние две формулы выведены из первых трёх)
G – гиперфокальное расстояние;
m1 – ближнее расстояние;
m2 – дальнее расстояние;
f – фокусное расстояние объектива;
d – значение диафрагмы.

Из-за очень малого объёма памяти и неразвитой системы условных переходов, в программах отсутствует любая проверка корректности данных. Полученное отрицательное значение m2 означает бесконечность.

Несколько рекомендаций:

  • после входа в режим программирования (на дисплее lrn) стоит очистить память – INV ON;
  • при наборе программ после команды [x] необходимо подставить значения переменных;
  • если во второй программе нужно ввести m2 = бесконечность, вводите очень большое число, например, EXP 99 (1*1099);
  • чтобы уменьшить формат выводимых значений, например, до трёх знаков после запятой, введите команду TAB 3; возврат в обычное состояние калькулятора – TAB . (точка).

Статья подготовлена Иваном Савоченко.

Undefined

Комментарии

А ещё такое же программирование имеет мой CITIZEN SRP-265. Наверное, эти программы пойдут и на нём.

Наверняка. Судя по коду, и для МК-152 будет трансляция почти один-в-один. К тому же автор соблюдает правила хорошего тона и описывает матмодель.

Как это - почти один-в-один? Ведь у МК-152 - обратная польская запись команд, а у ситизенов, вроде, обычная...

Поэтому и "почти". Придется скобки раскрывать.