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

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

Antworten (2)

Akira Agata
Akira Agata am 12 Mai 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 Kommentar
耕太郎 山崎
耕太郎 山崎 am 12 Mai 2022
わかりやすい回答ありがとうございます。助かりました。

Melden Sie sich an, um zu kommentieren.


Hernia Baby
Hernia Baby am 12 Mai 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

Kategorien

Mehr zu スプラインの後処理 finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!