スタートページJavascriptCANVAS物理等

幾何 正方形ビリヤード台


中心(0,0), 辺の長さ2の正方形のビリヤード台があります。(x0,y0) にある自分の青球を突いて、(xg,yg) にある相手の赤球に当てるには、どの角度に打てばよいかという問題です。
 直接当てるのなら簡単ですが、辺に2回反射させてから当てる、全ての辺で反射させてから当てるのどの条件をつけることにより、次第に難しい問題にすることができます。
 ここで、角度とは水平右方向を0とする傾き( y = ax + b での a )とし、最初は右側に打つことにします。辺では入射角と反射角は等しい( a が -a になる)こととし、当たるとは、点(xg,yg)と直線の最短距離 r が 0.1 以下になることとします。
 青球がポケットに入ったとき、青球が辺に10回当たったら終了します。

赤球 xg = yg =  青球位置 x0 = y0 =  方向 a =
 結果 =