幾何計算って何?(三角関数編)

はじめに

こんにちは、meviyのPMIチームで開発をしている横田です。

前回は幾何計算の外積について解説と活用例をお話ししました。
今回は三角関数の活用例についてご紹介します。

三角関数とは?

三角関数を大まかに説明すると「三角形の角度と各辺の長さの関係性を定めたもの」です。
また、定義についての詳細な解説は省きますが、今回は逆三角関数もあわせて扱います。
逆三角関数も大まかに説明すると「辺の比から角度を逆算するもの」です。

三角関数について

今回はmeviyにおける角度測定の実装例として、3Dモデルの情報から角度を得る方法をご紹介します。

活用例

角度測定について

加工するにあたり、図のような角を削る際の角度を指定したい場合があります。
meviyでは、このような角度を成す部分に対して角度PMIを追加できます。

公差追加の方法 角度PMIの追加

実際の物体に対しては、測定用の道具を用いて指定した角度になっているか確認すると思います。
一方で、3DViewerでこの値を求めるには、モデルの情報から数値を算出する必要があります。
このような場合に、三角関数(逆三角関数)を利用して求めることができます。

加工の例

角度の求め方

角度を成すそれぞれの面の法線から、外積を利用して図のようなベクトルを得ます。
(外積については過去の記事をご参照ください:幾何計算って何?(外積編))

法線同士の外積

次に、この外積のベクトルとそれぞれの法線の外積を得ます。
これにより、求めたい角度を成す2つのベクトルが得られます。

外積とそれぞれの法線の外積 得られたベクトル2つ

「三角関数とこのベクトルにどんな関係があるのか?」と思われる方もいらっしゃるかもしれませんが、今度は内積が役立ちます。
内積の定義は下記の通りです。

 A \cdot B = |A||B|\cosθ

(内積については過去の記事をご参照ください:幾何計算って何?(内積編))

前述のベクトルを単位ベクトルにすると、ベクトルの大きさは1となり、以下のシンプルな式になります。

 A \cdot B = \cosθ

つまり、単位ベクトル同士の内積の結果はそのまま \cosθの値になることがわかります。
これを逆三角関数を使って θを求める式に変換(逆算)します。

 θ = \arccos(A \cdot B)

そして、2つのベクトルの内積の結果を逆三角関数に与えることで、角度θを得ることができます。 3DViewerではこのようにして求めた角度を、測定結果の表示や角度PMIの追加に用いたりしています。

角度測定_30°

また、ここまでは削る部分の角度について着目してきましたが、一方で削り残す部分の角度が欲しい場合もあります。

角度測定_150°

meviyではどちらの角度でも指定できるように、PMIの追加時にマウス操作で角度を簡単に選択できます。

角度表記の変更

おわりに

今回は幾何計算の例として、三角関数についてご紹介しました。
三角関数のごく一部のみの活用事例でしたが、他にも角度から座標を計算してPMIの文字を適切な位置に配置したりなど、三角関数はさまざまな場面で活躍します。

引き続きmeviyのPMI表示に関する技術的な話題を発信していければと思いますので、今後ともよろしくお願いします!