ベクトルと平面のなす角の算出

75 次查看(过去 30 天)
耕太郎 山崎
耕太郎 山崎 2022-5-12
任意の3次元ベクトルv=[a,b,c]に対して、x-y平面、x-z平面、y-z平面とのなす角をそれぞれ算出したいです。
回転行列からの逆算で計算できないかなと思ったのですがうまくいかず・・・
コーディングというよりは線形代数の根本的な理論の質問になってしまうのですが、どなたかご教示いただけないでしょうか?

回答(2 个)

Akira Agata
Akira Agata 2022-5-12
順を追って説明します。
まず、ベクトル ab のなす角は以下の式で求められます。
では平面とベクトル a のなす角は??というご質問ですが、考えてみると平面の法線ベクトルを使って求められそうです。
たとえば平面の法線ベクトルを n とすると、na がなす角は上の式で求められます。
一方、平面と法線ベクトル n のなす角は定義より [rad] なので、ベクトル a と平面のなす角を ϕ とすると
- (na がなす角) [rad]
として求めることができます。
たとえば x-y 平面とベクトル a のなす角 [rad] をMATLABで求めると、以下のようになります。
% x-y 平面の法線ベクトル
n = [0 0 1];
% テキトーなベクトル a
a = [1 2 3];
% ベクトル a と x-y 平面がなす角 [rad]
phi = (pi/2) - acos(dot(a,n)/(norm(a)*norm(n)));
% 度に変換
phi_deg = rad2deg(phi);
% 表示
fprintf('%f [rad] (%f [deg])', phi, phi_deg)
0.930274 [rad] (53.300775 [deg])
  1 个评论
耕太郎 山崎
耕太郎 山崎 2022-5-12
わかりやすい回答ありがとうございます。助かりました。

请先登录,再进行评论。


Hernia Baby
Hernia Baby 2022-5-12
外積と内積の式を使います
@Akira Agata の法線ベクトルを使用します。
pi/2から引くのは、平面の法線ベクトルなので90°回転させる必要があるからです。
a = [1 2 3];
b = [0 0 1];
angle = rad2deg(pi/2 - atan2(norm(cross(a,b)), dot(a,b)))
angle = 53.3008

类别

Help CenterFile Exchange 中查找有关 スプラインの後処理 的更多信息

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!