Ещё зарубочка на нос. Вспоминал сегодня алгебру, 6 класс. Задача на расчёты нахлёстов перекрывающихся отрезков. Это может быть хоть черепица, хоть перекрытие кадров (frame overlapping) в видео при переходах (transitions). Мне, собственно для последнего. Например, это может быть использовано для автоматического изменения длительности слайд-шоу в зависимости от длины звуковой дорожки. То ли плохо искал, то ли за очевидностью никто не парится формулы публиковать, пришлось учебник вспоминать и на бумажке считать. Задача собственно такая: есть n перекрывающихся отрезков одинаковой длины a c одинаковыми нахлёстами длины b, которые относятся друг к другу как c, нужно найти общую длину L, либо — а главное — при изменении известной общей длины L и (или) числа отрезков n найти как изменятся a и b в предположении, что изменятся они будут пропорционально, с сохранением соотношения c.
a <—————————————> | | ----------+++++ 1 +++++-----+++++ 2 | | <———> +++++-----+++++ … b +++++---------- n | | <———————————————————————————————————————————> L
L = n * a - b * (n - 1)
или
L = n * (a - b) + b — общая длина всех отрезков с перекрытием, где:
n — количество отрезков;
a — длина отрезка;
b — длина перекрытия (overlap).
Предполагается, что все отрезки и все перекрытия имеют постоянный размер.
Отсюда
a = (L + b * (n - 1)) / n
b = (n * a - L) / (n - 1)
Если длины отрезков a и перекрытий b относятся друг к другу как c,
a / b = c
то
a = L * c / (n * (c - 1) + 1)
b = L / (n * (c - 1) + 1)
Вроде похоже на правду, если нигде не промахнулся. Однако всё хорошо, пока арифметика вещественная. А вот с целочисленной малость фигня выходит, кадры только целые бывают и на двух-трёхминутный ролик набегает довольно прилично разницы, до нескольких секунд — впрочем, сильно от вводных зависит, причём набегает вверх, длительность видео больше длительности аудио. Чего с этим делать — не очень понятно. Либо плюнуть на растягивание нахлёстов, зафиксировать их и менять только длительность составляющих клипов — это по идее более точное приближение даст, либо как-то более по-хитрому считать.
UPD. Впрочем насчёт «набегает вверх» наверное поторопился — вниз тоже набегает при каких-то условиях.