見出し画像

高校数学10分プログラミング(35日目、2024年7月19日)

おはようございます。

今日は、高校数学10分プログラミングの35日目です。

本日の課題は、2つの円の位置関係を分類するプログラムを作成することです。

2つの円の位置関係

2つの円$${\mathrm{O}}$$と$${\mathrm{O}'}$$の半径をそれぞれ$${r}$$と$${r'}$$(ただし、$${r>r'}$$)とおきます。また、2つの円の中心間の距離を$${d}$$とします。

図1 2つの円の位置関係

このとき、

I.  $${d>r+r'}$$の場合、2つの円は互いに外部にあり、共通接線を4本もつ。
II.  $${d=r+r'}$$の場合、2つの円は外接し、共通接線を3本もつ。
III.  $${r-r' < d < r+r' }$$の場合、2つの円は2点で交わり、共通接線を2本もつ。
IV.  $${d=r-r' }$$の場合、2つの円は内接し、共通接線を1本もつ。
V.  $${d < r-r' }$$の場合、一方の円が他方の円の内部にあり、共通接線をもたない。

課題

2つの円の位置関係を分類して、その結果をコンソールに出力するプログラムを作成してください。


ヒント

大きい円$${\mathrm{O}}$$の半径を$${r=150}$$(プログラムでは変数名を r1 とします)、小さい円$${\mathrm{O}'}$$の半径$${r'=100}$$(プログラムでは変数名を r2 とします)とします。

プログラム

以下のソースコード1は、2つの円の位置関係を分類して、その結果をコンソールに出力するプログラムになります。ただし、このままでは動きません。

// 2つの円の位置関係
void setup(){

  // 円Oと円O'との距離d
  float d;
  d = 300.0;
  // 円Oの半径r1
  float r1;
  r1 = 150.0;
  // 円O'の半径r2(ただし、r2 < r1)
  float r2;
  r2 = 100.0;
    
  if(  ){
    println("互いに外部にある 共通接線は4本");
  } else if(  ){
    println("外接する 共通接線は3本");
  } else if(  ){
    println("2点で交わる 共通接線は2本");
  } else if(  ){
    println("内接する 共通接線は1本");
  } else {
    println("一方が他方の内部にある 共通接線はなし");
  }
}

ソースコード1 2つの円の位置関係を分類して、その結果をコンソールに出力するプログラム(未完成)

ソースコード1では、条件分岐(if文)の条件式を空欄にしていますので、空欄部分に条件式を入れてプログラムを完成させてください。

また、ソースコード1の

  // 円Oと円O'との距離d
  float d;
  d = 300.0;

の部分を$${d=300, 250, 125, 50, 25}$$のように値を変えて実行して、作成したプログラムが正しい分類結果をコンソールに出力するか、試してみてください。


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

MK's papa

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