高校数学10分プログラミング(26日目、2024年7月8日)
おはようございます。
今日は、高校数学10分プログラミングの26日目です。
本日の課題は、三角形の外心を求めて外接円と共に描くプログラムを作成することです。
課題
図1のような、辺の比が$${a:b:c=200:250:300}$$となる三角形$${\mathrm{ABC}}$$の外心と外接円の半径を求め、外心と外接円をキャンバス上に描くプログラムを作成してください。
ヒント
$${\triangle \mathrm{ABC}}$$は、24日目(2024年7月4日分)の課題で作成した$${a:b:c=200:250:300}$$となる三角形を利用し、また三角形の頂点の座標位置の設定も、そのまま利用します(図2)。
この設定のもとで、辺の長さ$${a,b,c}$$や頂点$${\mathrm{C}}$$の座標位置$${(x_C,y_C)}$$などを利用して、外心$${\mathrm{O}}$$の座標位置$${(x_O,y_O)}$$を表す式を求めてください。また、外接円の半径$${r_O}$$も求めてください。
なお、三角形の外心の定義をあらためて記載しておきます。
三角形の外心は「3辺の垂直二等分線が交わる点」となります(図3)。
三角形の外心はその三角形の外接円の中心となります。
以下のソースコード1は、$${\triangle \mathrm{ABC}}$$に外心と外接円を描くプログラムになります。ただし、このままでは動きません。
// 辺の長さの比が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);
// 外心の座標
float O_x, O_y;
O_x =
O_y =
// 外接円の半径
float O_r;
O_r =
// 外接円を描画する
stroke(0,0,255);
circle(O_x, O_y, 2.0*O_r);
// 外心を描画する
strokeWeight(5.0);
point(O_x, O_y);
}
ソースコード1 $${\triangle \mathrm{ABC}}$$に外心と外接円を描くプログラム(未完成)
上記で求めた外心$${\mathrm{O}}$$の座標$${(x_O,y_O)}$$を表す式と外接円の半径$${r_O}$$の式を、それぞれソースコード1の
O_x =
O_y =
の部分と
O_r =
の部分に追記してプログラムを完成させてください。
それでは、よろしくお願いします。
MK's papa
この記事が気に入ったらサポートをしてみませんか?