目次ページ  前ページ  次ページ

3. 図形要素間の演算

3.6 連結を扱う演算の約束


3.6.3 二円の共通接線を求める

 二円の共通接線を求めることは二円を線分で連結すると解釈して、演算子記号 @ を使う約束を決めました。図3.2に例示したように、二円の接線は図形的には四通りありますので、どこに接線を引くかを一意に決める方法が必要です。このために、円に向きの約束を持つデータ型を考えました。それは円の半径データに正負の符号を付け、円を周回する向きを左周り(正)、右回り(負)とします。仮に、円を一方通行の自動車道路として、一方の円道路から他方の円道路を繋ぐ接線パス路を考えると、接線を引く位置と接線の向きが一意に決まります。図3.2は四通りの接線を引く例題です。文番号の50の代入文「CA=CA: CB=CB」は、左側の小円と右側の大円の作図命令です。「E1=CA @ CB」が円の連結で接線の線分を求めます。このときの二円はどちらも左回りのデータになっています。左小円を左回りの一方通行とし、右大円の左回りの一方通行と繋ぐ順路は、図では一番下の接線です。文番号70では、関数REV(CB)で、大円を右回りの性質に変えて繋ぎますので、左下から右上に向かう、たすきがけの接線が得られます。図3.2では四通りの接線を描きますが、線分のデータ型は向きを持ちますので、線分の向きまで考えると、接線は八種類あります。なお、半径が0になった円は点ですので、点から円に接線線分を引く演算にも、演算子 @ を使います。
10 REM -- 二つの円の共通接線  CommonTangent
20 CLG
30 DEF2CR C : DEF2ED E
40 LET CA,CB=-200,0,80,100,0,150
50 CA=CA: CB=CB
60 E1 = CA @ CB
70 E2 = CA @ REV(CB)
80 E3 = REV(CA) @ CB 
90 E4 = REV(CA) @ REV(CB)

図3.2 二円を結ぶ4種類の共通接線

GBASICのプログラム
2008.3 橋梁&都市PROJECT

前ページ  次ページ