2011-08-03から1日間の記事一覧
Polygon Clipping: a Wrapper, a Benchmark 2011年4月なのでもうけっこう古いですが(Boost.Geometryは開発スピード早いので…)。 それと、このベンチマーク周りのBoost.Geometryの議論など: Problems with the difference between two polygons
#5747 - 未使用変数警告 #5748 - ドキュメント用のコードでインクルード洩れ
@lucifuges さんが「Boost.Geometryでゲームエンジンを書く!」宣言をしてたので、応援の意味を兼ねてストックしてたBoost.Geometryのネタを放出しました。 もうネタがすっからかんなので、明日からまたがんばります。
envelope()は、図形の包絡線を計算するアルゴリズムです。 第1引数として渡した図形の包絡線を、Box Conceptの型として第2引数で返します。 #include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/geometry/geometries/box.hpp> #include </boost/geometry/geometries/box.hpp></boost/geometry/geometries/polygon.hpp></boost/geometry/geometries/point_xy.hpp></boost/geometry.hpp></iostream>
expand()は、他の図形でBoxを拡張していくアルゴリズムです。 第2引数の図形で、第1引数のBoxを拡張します。 expand()は、envelope()の実装などで使われます。 #include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/box.hpp> namespace bg = boost::geometry; typedef bg::model:</boost/geometry/geometries/box.hpp></boost/geometry/geometries/point_xy.hpp></boost/geometry.hpp></iostream>…
union_()は、2つの図形の和を計算するアルゴリズムです。 第3引数で出力結果が返されます。 #include <iostream> #include <vector> #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/geometry/geometries/box.hpp> #include <boost/assign/list_of.hpp> nam…</boost/assign/list_of.hpp></boost/geometry/geometries/box.hpp></boost/geometry/geometries/polygon.hpp></boost/geometry/geometries/point_xy.hpp></boost/geometry.hpp></vector></iostream>
difference()は、2つの図形の差を計算するアルゴリズムです。 difference(a, b, out)と書くと、「a - bを計算し、outに出力する」という意味になるので、第1引数と第2引数を逆にすると結果が変わります。 #include <iostream> #include <vector> #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/polygon.hpp></boost/geometry/geometries/polygon.hpp></boost/geometry/geometries/point_xy.hpp></boost/geometry.hpp></vector></iostream>…
distance()は、2つの図形の距離を計算するアルゴリズムです。 基本的な点と点の距離を計算するだけでなく、三角形などとの距離も計算できます。 点と点以外の距離の計算では、その図形を構成する全ての点のうち、最短距離を求めるものとなっています。 点と…
correct()は、向きが逆だったり、終了点が足りなかったりする図形を修正してくれるアルゴリズムです。 図形の参照を引数として渡します。 #include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/assign/list_of.hpp> namespace bg = boost::geometry; int main() { …</boost/assign/list_of.hpp></boost/geometry/geometries/point_xy.hpp></boost/geometry/geometries/polygon.hpp></boost/geometry.hpp></iostream>
convex_hull()は、図形の凸包を計算する関数です。 第1引数として渡した図形の凸包図形を第2引数で参照として返してくれます。 #include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/assign/list_of.hpp> int main() { namespace bg = boost::geometry; ty…</boost/assign/list_of.hpp></boost/geometry/geometries/point_xy.hpp></boost/geometry/geometries/polygon.hpp></boost/geometry.hpp></iostream>
convert()は、Geometryコンセプトを満たす型の間で、他の型に変換する関数です。 第1引数の図形を、第2引数の型に変換します。 以下は、boxをpolygonに変換する処理: #include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/geometry/geometries/box.hpp> namespace bg…</boost/geometry/geometries/box.hpp></boost/geometry/geometries/polygon.hpp></boost/geometry/geometries/point_xy.hpp></boost/geometry.hpp></iostream>