Даниил, кроме эволюционного изменения мне ничего не приходит в голову. Именно брать исходные точки и начинать двигать, проверяя на каждом шаге тождественность Делоне.
Диаграмма Вороного не поможет. Двигая точки в рамках своих островков, можно образовать новых ближайших соседей, которых быть не должно.
Уточните: почти-случайно нужно расположить именно вершины этого графа?
Т.е. можно именно его положить на плоскость, случайно повернуть, увеличить-уменьшить. И затем каждую точку чуть сдвинуть на какуют-то незначительную малую величину?
swyt, обрезать может только по ключевым кадрам. Скажем, если там 1-й кадр ключевой, 2-й нет, 3-й опять ключевой. Он не сможет отрезать , начиная со 2. Только с 3-го. Отсюда, наверное, и 0.08 вместо 0.04
Про FPS – как смотрите? Некоторые могут просто округлять число.
Может, по-другому чуть. Число всех вообще элементов – это число тиков, на которые делится отрезок.
Для каждого тика прописать желающих в него попасть. Но с разными приоритетами. Для 100-100 будет 200 отрезков. На первый попадает А и сто единичных. Но у А приоритет высокий: ему надо попасть на этот или на следующий железно. А у каждого из единичных приоритет низкий: им годится вообще любой из 200.
Так получится, в первую попадёт А, во вторую один из единичных. В третью, следующий А (опять высокий приоритет), в 4 один из единичных. И т.д.
Даниил, если хочется оптимальной для каждого случая расстановки элементов – то задача становится больше похожей на оптимальную упаковку (упаковку рюкзака). В примере с 100 и 100 интуитивно понятно, что 100 одиночек должны быть каждый по 1 между двумя из сотни. Это следует из нового требования «равномерности»: минимизации вариативности расстояния между элементами одной группы после сериализации. Т.е. что первая сотня должна идти как можно более «ритмично».
Контрпример для усложнения тут взаимно простые числа длин серий. Например 3,5,7,11. Как их расставить?
adil16, ключи могут быть и строковые и числовые вперемешку. Можно взять все значения array_values(), у этого массива уже взять последний ключ (там точно все численные) и прибавить 1.