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

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

Sign in to comment.

Answers (2)

Akira Agata
Akira Agata on 12 May 2022
順を追って説明します。
まず、ベクトル 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 Comment
耕太郎 山崎
耕太郎 山崎 on 12 May 2022
わかりやすい回答ありがとうございます。助かりました。

Sign in to comment.


Hernia Baby
Hernia Baby on 12 May 2022
外積と内積の式を使います
@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

Categories

Find more on 行列計算 in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!