これは,単なる好奇心とC言語プログラミングの練習のためです。厳密な計算ではありません。
ブラックホールは光を曲げます。天体の背面にある光源は,通常天体に遮られるため見えません。ところが,ブラックホールでは光を曲げ,回り込むようにして目に届きます。図に背面の3点ほどの光源から出た光の軌道を示します。一番左の光源から出た光は曲げられて目に届きます。人には,その光の来た方向を延長したところに光源があるように見えます。すなわち,見える位置は実際の光源より矢印で示しただけずれて見えます。もうちょっと離れた2番目の光源からの光はブラックホールから離れるので,大きくは曲げられず,見える位置のずれはあまり大きくありません。3番目の様にもっと離れるとほとんど曲げられません。
このプログラムを作るのに,目に入る中心からの距離と実際の光源の位置との関係の関数を考える必要があります。上に述べた通り,中心からある程度離れると両者は一致する必要があります。ブラックホールの縁に近づくと中心に近いところを指すようにならなければなりません。そこでまず考えたのが,反比例の式を45°回転させた
y=(x^2-a^2)^(1/2) (^はべき乗,aはy=0の時のxの値)
です。それは下のグラフの青線になります。中心から離れると赤線に一致しなければなりませんが,近づくのが遅いです。そこで
y=(x^4-a^4)^(1/4)
という,関数を描いてみました(黒線)。その結果,考えている関数にピタリになりました。
プログラムは,また時間のある時に完成させたいと思います。