Boost.Geometryを使って2Dゲーム当たり判定で楽をしたい

メモ:
参考:https://sites.google.com/site/boostjp/tips/geometry

線同士の交点を求める

namespace bg = boost::geometry;
typedef bg::model::d2::point_xy<double> point;
bg::model::linestring<point> line1 = boost::assign::list_of<point>(0, 200)(300, 400);
bg::model::linestring<point> line2 = boost::assign::list_of<point>(100, 0)(100, 400);
std::deque<point> out;
bg::intersection( line1, line2, out); // 交点(100, 266.666687):point型がoutにpush_backされる
bg::intersection( line1, line2, out); // 同上。2つ目のpointがpush_backされる

参考:http://www.boost.org/doc/libs/1_47_0/libs/geometry/doc/html/geometry/reference/algorithms/intersection.html

追記

動的ゲームで実用するのは難しいかもしれない。
毎フレーム実行するには判定部分が若干重すぎる感がある(交点求めてる付近)。
これでアルゴリズムの動作確認して、それ用に特化したクラスを自分で作る、といった手法はいい感じかもしれない。

追追記

上記の線の交点を求める的な判定部分を手で書いた場合、大体10〜20倍の高速化が実現できた。
やはりリアルタイムの処理に使うのは厳しそう。