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

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

Connectez-vous pour commenter.

Réponses (2)

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

Connectez-vous pour commenter.


Hernia Baby
Hernia Baby le 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

Catégories

En savoir plus sur Mathematics and Optimization dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!