Effacer les filtres
Effacer les filtres

2つのベクトルがなす​​角度、角速度、角加​速度を求めるための方​​法が分からないので​す​が、どういった計​算方​法があるでしょ​うか?

28 vues (au cours des 30 derniers jours)
幸汰 吉川
幸汰 吉川 le 26 Déc 2022
Modifié(e) : covao le 21 Mar 2023
今、ダーツの動作解析を行おうとしており、肩と肘、手首、親指と4箇所にマーカをつけ、それぞれの単位ベクトルx,y,zを作成しました。そこで、肘関節の屈曲/伸展角度を求め、その後、角速度と角加速度を求めたいのですがよくわかりません。どなたかわかる方がいらっしゃいましたらお願いいたします。

Réponses (1)

covao
covao le 21 Mar 2023
Modifié(e) : covao le 21 Mar 2023
次のステップで算出できます。
  1. 2つの3次元ベクトルvec1, vec2から角度を算出
  2. 算出した角度の時系列データから、角速度、各加速度を算出
下記は、計算例です
vec1 = [1 0 0;0 1 0;0 0 1];
vec2 = [0 1 0;0 0 1;1 0 0];
t = [0 1 2]';
angle = compute_angle(vec1, vec2)';
angle = 1×3
1.5708 1.5708 1.5708
angle_velocity = compute_velocity(t, angle);
angle_acceleration = compute_velocity(t, angle_velocity);
angle,angle_velocity,angle_acceleration
angle = 3×1
1.5708 1.5708 1.5708
angle_velocity = 3×1
0 0 0
angle_acceleration = 3×1
0 0 0
function angle = compute_angle(vec1, vec2)
% Compute the angle between the two vectors
angle=[];
for(i=1:height(vec1))
angle = [angle; subspace(vec1(i,:)',vec2(i,:)')];
end
angle = angle'
end
function velocity_data = compute_velocity(t, x)
%compute velocity
delta_t = diff(t);
velocity = diff(x) ./ delta_t;
velocity_data = [0; velocity]; % Initial velocity = 0
end
2つのベクトルがなす角度については、下記の回答例に解説があります

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!