Вы можете найти документацию в формате файла collada в Kronos Group .
Blender использует библиотеку OpenCollada для импорта и экспорта файлов collada.
Если вы хотите начать с чего-то более легкого, вы можете взглянуть на экспортера collada , сделанного разработчиками движка игры Godot.
ОП запросил
рассчитать разницу, а затем в конечном итоге кумулятивную сумму разностей переменной. Расчеты [...] необходимо начинать заново, когда коэффициент чередуется взад-вперед.
blockquote>Вычисление различий
Функцию
rleid()
из пакета data.table можно использовать для выявления изменений вant
:library(data.table) setDT(test)[, diff := c(0, diff(x)), by = rleid(ant)] test
blockquote>x ant diff 1: 1.64 n 0.00 2: 2.54 n 0.90 3: 3.53 s 0.00 4: 3.82 s 0.29 5: 4.28 s 0.46 6: 4.74 s 0.46 7: 4.86 n 0.00 8: 5.11 s 0.00 9: 5.53 s 0.42 10: 5.95 n 0.00 11: 6.38 s 0.00 12: 6.73 n 0.00 13: 7.40 s 0.00 14: 8.51 s 1.11 15: 8.52 s 0.01 16: 8.57 n 0.00 17: 8.91 s 0.00 18: 9.33 n 0.00 19: 9.57 s 0.00 20: 9.83 s 0.26
Или, используя
shift()
:setDT(test)[, diff := x - shift(x, fill = x[1]), by = rleid(ant)]
Вычисление совокупных сумм напрямую
Если я правильно понимаю, вычисление Различия подразумевались только в качестве промежуточного шага к окончательному вычислению совокупных сумм, которые необходимо начинать заново, когда коэффициент чередуется взад-вперед .
Это может быть сделано непосредственно, потому что совокупная сумма разностей
x
равнаx
минус первое значениеx
для каждой серии идентичных значенийant
:< blockquote>setDT(test)[, cumsum := x - x[1L], by = rleid(ant)] test
blockquote>x ant diff cumsum 1: 1.64 n 0.00 0.00 2: 2.54 n 0.90 0.90 3: 3.53 s 0.00 0.00 4: 3.82 s 0.29 0.29 5: 4.28 s 0.46 0.75 6: 4.74 s 0.46 1.21 7: 4.86 n 0.00 0.00 8: 5.11 s 0.00 0.00 9: 5.53 s 0.42 0.42 10: 5.95 n 0.00 0.00 11: 6.38 s 0.00 0.00 12: 6.73 n 0.00 0.00 13: 7.40 s 0.00 0.00 14: 8.51 s 1.11 1.11 15: 8.52 s 0.01 1.12 16: 8.57 n 0.00 0.00 17: 8.91 s 0.00 0.00 18: 9.33 n 0.00 0.00 19: 9.57 s 0.00 0.00 20: 9.83 s 0.26 0.26