2

ポリゴンの分解ができるライブラリを探しています。ここに示すように、ポリゴンをフラグメント化する方向または線を定義したいと思います。

内部に細分割線がある不規則な多角形で、垂直な部分とそうでない部分があります

小さなポリゴンを取得するようにします。これをサポートするライブラリを知っている人はいますか?

または何かアイデアはありますか?

4

2 に答える 2

1

どの言語を使用しているかわかりません。私の目的のために書かれたライブラリがあり、指定されたラインセットによって完全なパーティションを取得し、結果としてポリゴンを返すことができます。それは PHP で書かれ、ディメンションと呼ばれ、それを使用して、次のような方法で質問を解決できます。

  1. 一連の線 LineSet_2D または Polygon_2D で多角形を定義します
  2. Line_2D からも分割線を定義する
  3. LineSet_2D メソッド getPolygons を使用してすべてのポリゴンを検​​索します

私は例を書いた:

//define or polygon. Note that Polygon_2D can also be used
$rPolygon = new LineSet_2D(
    new Line_2D( 0, 3, 1, 1),
    new Line_2D( 1, 1, 3, 0),
    new Line_2D( 3, 0, 1,-1),
    new Line_2D( 1,-1, 0,-3),
    new Line_2D( 0,-3,-1,-1),
    new Line_2D(-1,-1,-3,0),
    new Line_2D(-3, 0,-1, 1),
    new Line_2D(-1, 1, 0, 3)
);
//define partition line set
$rPartition = new LineSet_2D(
    new Line_2D(-1, 1, 1,-1),
    new Line_2D(-1,-1, 1, 1)
);
//result line set:
$rResultSet    = LineSet_2D::createFromArray(array_merge(
    $rPolygon->getLines(), 
    $rPartition->getLines()
));
//for example, dump plain result:
var_dump($rResultSet->getPolygons());

この例もここで見つけることができますが、私の LineSet_2D クラスはすべてのループ ポリゴンを返すため (つまり、「ピース」だけでなく)、質問に対する正確な解決策ではないと思います。

于 2013-08-06T09:15:52.087 に答える