#geometry #physics #angle
#геометрия #физика #угол
Вопрос:
Я работаю над данными о походке, которые имеют 3D-координаты положения для 15 суставов на кадр. Я пытаюсь оценить скорость голеностопного сустава, но я не знаю, как найти по кадрам. Заданная частота кадров составляет 30 кадров в секунду. Также я хочу найти углы между двумя сегментами, скажем, бедром и голенью одной и той же ноги.
Комментарии:
1. для скорости вычислите среднюю точку
p(i) = (p0(i) p1(i))/2
кости, которую вы хотите для каждого кадраi
, а затемvel(i) = (p(i)-p(i-1))*30.0;
измените угол между кадрамиacos(dot( p1(i)-p0(i) , p1(i-1)-p0(i-1) ));
, однако, если вам нужен знак, используйте atan2 для каждого последующего кадра (i, i-1) отдельно и вычтите результаты…2. @Spektre Спасибо. Я пытался использовать acos (точка (v1, v2) / норма (v1) * норма (v2)), но у него нет подписанных углов. Но я думаю, что atan2 даст мне лучшие углы. Для скорости предложенный метод имеет смысл для меня сейчас.
3. хм, на втором уроке
atan2
не будет работать в 3D… поэтому вам нужно использоватьacos(dot...
и определять направление по-разному… однако в 3D это не так просто, сначала вам нужно определить, что означает положительный и отрицательный угол, исходя из того, что используется точка или перекрестное произведение… итак, сначала вам понадобится дополнительная информация, например, некоторая опорная плоскость или правило…4. @Spektre Я прочитал несколько статей по анализу походки, в которых рассматриваются сагиттальная, корональная и поперечная плоскости, расположенные в центре тела. Но чтобы убрать эти плоскости, я не знаю, с чего начать. Я могу взять перекрестные произведения, чтобы найти нормали к плоскости, но между какими векторами я должен взять перекрестное произведение? Также что касается расчета скорости, должен ли я брать расстояние между двумя кадрами, расположенными на расстоянии 30 (начиная с 30 кадров в секунду), или просто расстояние между двумя последовательными кадрами (например, между 3-м и 4-м кадрами)?
5. 1. вам нужно что-то зафиксировать. На что зависит от того, что вы делаете и какова ваша система координат… например, вы можете использовать нормаль к плоскости земли и правило правой руки или вектор вверх или что-то еще… существует бесконечное количество возможностей, и ни одна из них не является неправильной или правильной, это просто вопрос того, что вы будете рассматривать как положительный и отрицательный угол. 2. два последовательных кадра, поскольку вы получили 30 кадров в секунду, что означает, что период (или время обновления) между кадрами равен
1/30 [sec]
иvel = delta_pos / delta_time = (p(i)-p(i-1))/(1/30.0) = (p(i)-p(i-1))*30.0;