Кошечка

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску
Кадр из мультфильма «Кошечка»

Кошечка — один из первых советских компьютерных мультфильмов. В фильме показано передвижение теневой проекции (силуэта) кошки, воспроизведённое на бумаге принтером АЦПУ-128, модель которой была создана на машине БЭСМ-4 группой программистов под руководством Н.Н.Константинова.

Созданный в 1968-м году, фильм, длительностью 84 секунды, демонстрирует зрителю возможности машины по моделированию механизмов и их движения. Механизм, которым выступает модель кошки, представлен в виде брусков — шестигранных (число граней в частных случаях может быть меньше) частей, задающихся своими размерами/формами, углами поворота и координатами. Бруски объединены в иерархическую структуру — дерево, элементом которого является формула — совокупность ссылки (адреса) на брусок и ссылки на массив подчинённых элементов. Походка кошки записана при помощи дифференциальных уравнений (как правило, второго порядка) относительно переменных, определяющих позу кошки. Решая эти уравнения шагами, программа на каждом шагу выдаёт ответ в виде изображения модели кошки.

Описание[править | править код]

В 1972-м году авторы послали в редакцию журнала «Проблемы кибернетики» описание программы (напечатано в 1974-м году), в котором рассказывали, каким образом и с какими целями они создали первую в стране компьютерную графику. Содержание его следующее:

  • Предисловие
В нём авторы разбирают возможности применения разработанной ими программы, рассказывают, как и где она была разработана.
  • 1. Что такое брусок
Даётся математическое определение элементам, из которых будет состоять кошка, называемым брусками.
  • 2. Кошка как дерево или формула
Объясняется порядок объединения брусков в систему.
  • 3. Немного о некоторых технических деталях
О реализации программы на машине БЭСМ-4.
  • 4. Чтение дерева
Описывается рекурсивный алгоритм чтения дерева кошки.
  • 5. Моделирование движения кошки
Описание системы дифференциальных уравнений, а также порядка их решения.
  • 6. Координация движения различных лап
Описывается алгоритм координации движения всех лап.

Исходных текстов программы, по всей видимости, не сохранилось.

Уравнения, решаемые программой[править | править код]

Дифференциальные уравнения, описывающие движение ног кошки; решая их, программа получает информацию о текущем положении каждой лапы и всей кошки целиком.

Подпрограмма «Уравнение» занимается вычислением x x^{\prime\prime} , y y^{\prime\prime} по заданным t t , x ( t ) x(t) , y ( t ) y(t) , x ( t ) x^\prime(t) , y ( t ) y^\prime(t) , v ( t ) v(t) , v ( t ) v^\prime(t) .

<1> x ( t ) = v ( t ) x^{\prime\prime}(t)=v^\prime(t) y ( t ) = 0 y^{\prime\prime}(t)=0
<2> x ( t ) = M 1 x ( t ) | l ρ ( t ) | x^{\prime\prime}(t)=M_1\frac{-x(t)}{\left|l-\rho(t)\right|} y ( t ) = M 2 ( h 8 y ( t ) ) y^{\prime\prime}(t)=M_2\left(\frac{h}{8}-y(t)\right)
 1 
Если  x ( t ) 0  и  x ( t Δ t ) > 0 , то \mbox{Если }x^\prime(t)\leqslant 0\mbox{ и }x^\prime(t-\Delta t)>0\mbox{, то} K 1 = y ( t ) x ( t ) K_1=\frac{y^\prime(t)}{x(t)}   K 2 = | x ( t ) | K_2=|x(t)|   K 3 = ( y ( t ) ) 2 2 y ( t ) K_3=\frac{\left(y^\prime(t)\right)^2}{2y(t)}
<3> x ( t ) = π K 2 v ( t ) ( 1 1 2 π Δ φ ) x ( t ) x^{\prime\prime}(t)=\frac{\pi}{K_2}v(t)\left(1-\frac{1}{2\pi}\Delta\varphi\right)x(t) y ( t ) = K 1 x ( t ) y^{\prime\prime}(t)=K_1x^\prime(t)
<4> x ( t ) = 0 x^{\prime\prime}(t)=0 y ( t ) = K 3 y^{\prime\prime}(t)=-K_3
<5> x ( t ) = M 1 x ( t ) | l ρ ( t ) | x^{\prime\prime}(t)=M_1\frac{-x(t)}{\left|l-\rho(t)\right|} y ( t ) = K 1 x ( t ) y^{\prime\prime}(t)=K_1x^\prime(t)
 2 
Если  x ( t ) 0  и  x ( t Δ t ) \mbox{Если }x^\prime(t)\geqslant 0\mbox{ и }x^\prime(t-\Delta t) K 3 = ( y ( t ) ) 2 2 y ( t ) K_3=\frac{\left(y^\prime(t)\right)^2}{2y(t)}   K 4 = v ( t ) y ( t ) K_4=-\frac{v(t)}{y(t)}   K 5 = t K_5=t

K 6 = y ( t ) ( | x ( t ) | 5 M ) + 2 y ( t ) ( | x ( t ) | 5 M ) 3 K_6=\frac{y^\prime(t)\left(\frac{|x(t)|}{5M}\right)+2y(t)}{\left(\frac{|x(t)|}{5M}\right)^3}

K 7 = 2 y ( t ) ( | x ( t ) | 5 M ) + 3 y ( t ) ( | x ( t ) | 5 M ) 2 K_7=-\frac{2y^\prime(t)\left(\frac{|x(t)|}{5M}\right)+3y(t)}{\left(\frac{|x(t)|}{5M}\right)^2}

<6> x ( t ) = K 4 y ( t ) + v ( t ) x^{\prime\prime}(t)=K_4y^\prime(t)+v^\prime(t) y ( t ) = 6 K 6 ( t K 5 ) + 2 K 7 y^{\prime\prime}(t)=6K_6(t-K_5)+2K_7

Здесь t t — текущий момент времени, t Δ t t-\Delta t — предыдущий момент времени, v ( t ) v(t) — скорость движения кошки, l l — суммарная длина трёх верхних суставов лапы, ρ ( t ) \rho(t) — расстояние от плеча до конца третьего сустава ноги, Δ φ \Delta\varphi — параметр поправки расхождения ног, M M — число, заранее ограничивающее v ( t ) v(t) , M 1 M_1 , M 2 M_2 — постоянные.

Источники[править | править код]

Литература[править | править код]

  • Н.Н. Константинов, В.В. Минахин, В.Ю. Пономаренко. Программа, моделирующая механизм и рисующая мультфильм о нем // Проблемы кибернетики. 1974. Выпуск 28. С. 193-209