
高校数学10分プログラミング(数学Ⅱ編 3.三角関数)9日目「2直線のなす角を求める」解説
マガジンリスト > 数学Ⅱ編 3.三角関数 > 9日目 解説
本日の課題、おつかれさまでした。
2直線のなす角を求めるプログラムを作成することができたでしょうか。
解答例
今回の課題の2直線のなす角を求めるプログラム例を示します。
// 2直線のなす角を求める
void setup(){
// 2直線の傾きと切片
float m1, n1, m2, n2;
// (1)
m1 = 3.0/2.0;
n1 = 0.0;
m2 = -5.0;
n2 = 0.0;
float theta1 = calc_formed_angle(m1,m2);
println("(1):", theta1 + "°");
// (2)
m1 = 2.0;
n1 = 0.0;
m2 = -3.0;
n2 = 2.0;
float theta2 = calc_formed_angle(m1,m2);
println("(2):", theta2 + "°");
}
// 2直線のなす角を求める関数
float calc_formed_angle(
float m1, // 1つ目の直線の傾き
float m2 // 2つ目の直線の傾き
){
float t = abs( (m1-m2)/(1.0+m1*m2) ); // tan θ
float theta = atan(t); // なす角θ
return degrees(theta);
}
ソースコード1 2直線のなす角を求めるプログラム
ソースコード1で、2直線のなす角を求める関数 calc_formed_angle は、2つの直線の傾きを引数とし、返り値として2直線のなす角を度数(°)で返すようにしています。
Processingの開発環境ウィンドウを開いて(スケッチ名を「calc_formed_angles」としています)、ソースコード1をテキストエディタ部分に書いて実行すると、開発環境ウィンドウのコンソールに
(1): 45.0°
(2): 45.0°
と出力されます(図2)。

本日は以上です。
明日は、2倍角の公式を確かめるプログラムについて考えていきます。
明日もよろしくお願いします。
※今回の課題とその解答例について質問や疑問がある方は、本記事の下部にあるコメント欄からお願いします。
MK’s papa