高校数学10分プログラミング(数学Ⅱ編 3.三角関数)12日目「内心、内接円を再考する」解説
マガジンリスト > 数学Ⅱ編 3.三角関数 > 12日目 解説
本日の課題、おつかれさまでした。
課題の内心と内接円を描くプログラムの書き換えはうまくできたでしょうか。
解答例
今回の課題の内心と内接円を描くプログラムの書き換え例を示します。
// 辺の長さの比が4,5,6の三角形に内心と内接円を描く
void setup(){
size(650,650); // キャンバスの大きさを指定する
translate(width/2, height/2); // 座標の中心をキャンバスの中心に移動する
scale(1,-1); // y軸正の向きを下向きから上向きに反転する
background(255,255,255); // 背景を白色にする
noFill(); // 図形の塗りつぶしなし
noLoop(); // 繰り返し処理をしない
// 三角形の辺の長さ
float a, b, c;
a = 200.0;
b = 250.0;
c = 300.0;
// 三角形の頂点の座標
float A_x, A_y, B_x, B_y, C_x, C_y;
A_x = 0.0;
A_y = 0.0;
B_x = c;
B_y = 0.0;
C_x = (c*c + b*b - a*a) / 2.0 / c;
C_y = sqrt( (a+b+c) * (-a+b+c) * (a-b+c) * (a+b-c) ) / 2.0 / c;
// 三角形を描く
triangle(A_x, A_y, B_x, B_y, C_x, C_y);
// 内角Aの半分の角度αと内角Bの半分の角度βのタンジェントの値
float tan_alpha, tan_beta;
tan_alpha = (b-C_x)/C_y;
tan_beta = (a-c+C_x)/C_y;
// 内心の座標
float I_x, I_y;
I_x = c * tan_beta / ( tan_alpha + tan_beta );
I_y = c * tan_alpha * tan_beta / ( tan_alpha + tan_beta );
// 内接円の半径
float I_r;
I_r = I_y;
// 内接円を描画する
stroke(0,0,255);
circle(I_x, I_y, 2.0*I_r);
// 内心を描画する
strokeWeight(5.0);
point(I_x, I_y);
}
ソースコード2 三角形の内心、内接円を描くプログラム(書き換え版)
このソースコード2をProcessingの開発環境ウィンドウを開いて(スケッチ名を「drawInscribedCircle2」としています)、テキストエディタ部分に書いて実行すると、実行ウィンドウのキャンバス上に三角形(黒色)とその内心と内接円(青色)が描かれます(図4)。この結果は、図1と同じ図形となります。
以下で、内心$${\mathrm{I}}$$の座標を求める手順について説明します。
内角Aの二等分線
タンジェントに対する2倍角の公式を利用すると、
$$
\tan \mathrm{A} = \frac{2 \tan \alpha}{1-\tan^2 \alpha}
$$
となるので、この式から、
$$
\tan \alpha= \frac{\sqrt{1+\tan^2 \mathrm{A}} -1}{\tan \mathrm{A}}
$$
が得られます。一方、頂点$${\mathrm{C}}$$の座標$${(x_C, y_C)}$$を利用すると、
$$
\tan \mathrm{A} = \frac{y_C}{x_C}
$$
と表すことができます。したがって、
$$
\tan \alpha = \frac{\sqrt{x_C^2+y_C^2}-x_C}{y_C}=\frac{b-x_C}{y_C}
$$
となります。この$${\tan \alpha}$$は、内角$${\mathrm{A}}$$の二等分線の傾きとなります。点$${\mathrm{A}}$$を原点としているので、内角$${\mathrm{A}}$$の二等分線の方程式は
$$
y=\tan \alpha x = \frac{b-x_C}{y_C}x
$$
となります。
内角Bの二等分線
内角$${\mathrm{A}}$$の二等分線を求めたときと同様に、タンジェントに対する2倍角の公式を利用すると、
$$
\tan \mathrm{B} = \frac{2 \tan \beta}{1-\tan^2 \beta}
$$
となるので、この式から、
$$
\tan \beta= \frac{\sqrt{1+\tan^2 \mathrm{B}} -1}{\tan \mathrm{B}}
$$
が得られます。一方、頂点$${\mathrm{C}}$$の座標$${(x_C,y_C)}$$の値を利用して、
$$
\tan \mathrm{B} = \frac{y_C}{c-x_C}
$$
と表すことができます。したがって、
$$
\tan \beta = \frac{\sqrt{(c-x_C)^2+y_C^2} -c+x_C}{y_C}=\frac{a-c+x_C}{y_C}
$$
となります。この$${\tan \beta}$$を利用すると、内角$${\mathrm{B}}$$の二等分線の傾きは$${-\tan \beta}$$と表すことができます。内角$${\mathrm{B}}$$の二等分線が点$${(c,0)}$$を通ることを考慮すると、内角$${\mathrm{B}}$$の二等分線の方程式は
$$
y=-\tan \beta(x-c) = \frac{a-c+x_C}{y_C}(c-x)
$$
となります。
内心Iの座標位置
内角$${\mathrm{A}}$$の二等分線の方程式と内角$${\mathrm{B}}$$の二等分線の方程式を求めることができたので、それらの直線の交点である内心$${\mathrm{I}}$$の座標$${(x_I, y_I)}$$を求めることができます。
$$
x_I = \frac{c \tan \beta}{\tan \alpha + \tan \beta}, \ \ y_I = \frac{c \tan \alpha \tan \beta}{\tan \alpha + \tan \beta}
$$
なお、以上の手順の結果は、ソースコード2の
// 内角Aの半分の角度αと内角Bの半分の角度βのタンジェントの値
float tan_alpha, tan_beta;
tan_alpha = (b-C_x)/C_y;
tan_beta = (a-c+C_x)/C_y;
// 内心の座標
float I_x, I_y;
I_x = c * tan_beta / ( tan_alpha + tan_beta );
I_y = c * tan_alpha * tan_beta / ( tan_alpha + tan_beta );
の部分に対応しています。
本日は以上です。
明日は、三角関数の積を和に変換する公式について考えていきます。
明日もよろしくお願いします。
※今回の課題とその解答例について質問や疑問がある方は、本記事の下部にあるコメント欄からお願いします。
MK’s papa