頭の体操

問題:
点Aと点Bから点Cに線を引きます。
線ACの長さをL1,線BCの長さをL2とします。


L1とL2の長さの差dが一定となるようにCを置くと、Cは直線上(図の赤線)に並ぶでしょうか(曲線上に並ぶでしょうか)。

答え:
私は最初、直線上に並ぶと思い、5分もあれば直線の式が出るだろうと思って式を立ててみました。ところがその式には平方根が入ってきて、簡単に解けそうもありません。そこで、プログラムで点Cの軌跡を出してみました。

/*—
float mini=10000; int jj=0;
for(int c=0; c<100; c=c+20){
for(int i=0; i<200; i++){
for(int j=0; j<200; j++){
float l1= sqrt((float)(i*i+j*j));
float l2= sqrt((float)(i*i+(200-j)*(200-j)));
float gosa= abs((float)c-(l1-l2));
if(mini>gosa) {mini=gosa;jj=j;}
}
point(jj,i);
mini=1000.0;
}
}
—*/

結果は、次の通りで曲線でした。図の縦横の長さは200×200で、左上がA点、右上がB点です。曲線はCの取りうる位置で、d=0,20,40,60,80の場合について示しています。