見出し画像

高校数学10分プログラミング(数学Ⅰ編 2.図形と計量)4日目「正弦定理、余弦定理を利用する」

マガジンリスト > 数学Ⅰ編 2.図形と計量 > 4日目 課題

おはようございます。

本日は、高校数学10分プログラミング(数学I編 2.図形と計量)の4日目です。

本日の課題は、正弦定理や余弦定理を利用して三角形の外接円を描くプログラムを作成することです。


正弦定理と余弦定理

図1の$${\triangle \mathrm{ABC}}$$を例として正弦定理と余弦定理について復習しておきます。

図1 △ABCの設定

正弦定理

$$
\frac{a}{\sin \mathrm{A}} = \frac{b}{\sin \mathrm{B}} = \frac{c}{\sin \mathrm{C}} = 2R
$$

ここで、$${R}$$は$${\triangle \mathrm{ABC}}$$の外接円の半径を表しています。

余弦定理

$$
a^2 = b^2 + c^2 - 2bc \cos \mathrm{A}, b^2 = c^2 + a^2 -2ca \cos \mathrm{B}, c^2 = a^2 + b^2 -2ab \cos \mathrm{C}
$$

$$
\cos \mathrm{A} = \frac{b^2 + c^2 - a^2}{2bc}, \cos \mathrm{B} = \frac{c^2 + a^2 - b^2}{2ca}, \cos \mathrm{C} = \frac{a^2 + b^2 - c^2}{2ab}
$$


課題

$${\triangle \mathrm{ABC}}$$に対して外接円を描くプログラムを作成してください。なお、$${a=200, b=250, c=300}$$とします。


ヒント

次の手順で考えてください。

① 図2のように、$${\triangle \mathrm{ABC}}$$を$${xy}$$座標平面上に置きます。

図2 △ABCを座標平面上に置く

その結果、頂点$${\mathrm{A}}$$の座標は$${(0,0)}$$、頂点$${\mathrm{B}}$$の座標は$${(c,0)}$$となります。頂点$${\mathrm{C}}$$の座標は$${(b \cos \mathrm{A}, b \sin \mathrm{A})}$$となりますので、あとは余弦定理を用いて、$${\cos \mathrm{A}}$$を求めてください。$${\cos \mathrm{A}}$$が求まれば、$${\sin \mathrm{A}}$$は$${\sin^2 \mathrm{A} + \cos^2 \mathrm{A} = 1}$$より、

$$
\sin \mathrm{A} = \sqrt{ 1 - \cos^2 \mathrm{A} }
$$

で求めることができます。

② 手順①で$${\sin \mathrm{A}}$$を求めたので、これを利用して正弦定理から、外接円の半径$${R}$$を求めてください。

③ 外心の定義は「$${\triangle \mathrm{ABC}}$$の3辺の垂直二等分線が交わる点」でしたので、外心$${\mathrm{O}}$$から辺$${\mathrm{AB}}$$に下した垂線が交わる点を$${\mathrm{D}}$$として直角三角形$${\mathrm{ADO}}$$を考える(図3)と、外心$${\mathrm{O}}$$の座標$${(x_O, y_O)}$$は、三平方の定理から

$$
x_O = \frac{c}{2}, \ \ y_O = \sqrt{R^2-\frac{c^2}{4}}
$$

となります。

図3 外心の導出


④ 以上のことから、$${\triangle \mathrm{ABC}}$$に対して外接円を描くプログラムはソースコード1のようになります。

// 辺の長さの比が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;
  
  // cosA, sinA(余弦定理より)
  float cA = 
  float sA = sqrt( 1.0-cA*cA );
  
  // 三角形の頂点の座標
  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 = b * cA;
  C_y = b * sA;
  
  // 三角形を描く
  triangle(A_x, A_y, B_x, B_y, C_x, C_y);

  // 外接円の半径(正弦定理より)
  float R = 

  // 外心の座標
  float O_x, O_y;
  O_x = c / 2.0;
  O_y = sqrt(R*R-c*c/4.0);


  // 外接円を描画する
  stroke(0,0,255);
  circle(O_x, O_y, 2.0*R);
  // 外心を描画する
  strokeWeight(5.0);
  point(O_x, O_y);

}

ソースコード1 $${\triangle \mathrm{ABC}}$$に対して外接円を描くプログラム(未完成)

手順①と②の結果を用いて、ソースコード1の

  // cosA, sinA(余弦定理より)
  float cA = 

の部分と、

  // 外接円の半径(正弦定理より)
  float R = 

の部分を追記して、プログラムを完成させてください。


それでは、よろしくお願いします。

MK's papa

この記事が気に入ったらサポートをしてみませんか?