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

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

댓글을 달려면 로그인하십시오.

답변 (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!