![見出し画像](https://assets.st-note.com/production/uploads/images/146336527/rectangle_large_type_2_846c0042ce9e084f091e13549ed2bacc.jpeg?width=1200)
高校数学10分プログラミング(35日目、2024年7月19日)
おはようございます。
今日は、高校数学10分プログラミングの35日目です。
本日の課題は、2つの円の位置関係を分類するプログラムを作成することです。
2つの円の位置関係
2つの円$${\mathrm{O}}$$と$${\mathrm{O}'}$$の半径をそれぞれ$${r}$$と$${r'}$$(ただし、$${r>r'}$$)とおきます。また、2つの円の中心間の距離を$${d}$$とします。
![](https://assets.st-note.com/img/1720204032725-3geLqTaOYU.jpg)
このとき、
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