Name

CG_3DBuffer — ジオメトリの周りの3次元バッファを計算します。

Synopsis

geometry CG_3DBuffer(geometry geom, float8 radius, integer segments, integer buffer_type);

説明

入力ジオメトリgeom まわりにradiusで指定した3次元バッファを生成します。バッファは3次元空間に構築され、ジオメトリの周囲の立体表現を生成します。 segmentsパラメータでバッファの曲線の近似に使われる辺の数を決めます。4辺分割が最低値として必要です。buffer_typeで生成バッファのタイプを指定します。0: 円バッファ (デフォルト) 1: 平面バッファ 2: 正方形バッファ

入力ジオメトリはPOINTまたはLINESTRINGでなければなりません。

Availability: 3.6.0 - SFCGAL >= 2.0.0が必要です

このメソッドにはSFCGALバックエンドが必要です。

SELECT ST_AsText(CG_3DBuffer('POINT(0 0 0)', 1, 8, 0));
-- Result: POLYHEDRALSURFACE Z (((0 0 1, 0.5 -0.5 0.71, 0 -0.71 0.71, 0 0 1)), ... )

次の画像はST_AsX3Dクエリの出力をX3D Viewerに貼り付けて描画したものです。

SELECT string_agg('<Shape
>' || ST_AsX3D(cgbuffer3d_output)  || '<Appearance>
          <Material diffuseColor="0 0.8 0.2" specularColor="0 1 0"/>
        </Appearance>
    </Shape
>', '');

segments=32 (球形バッファ)

SELECT CG_3DBuffer(ST_GeomFromText('POINT(100 90)'), 50,32,0);

5辺 球形

SELECT CG_3DBuffer(
 ST_GeomFromText('POINT(100 90)'),
 50,5,0);
            

32辺 球形

SELECT CG_3DBuffer(
  ST_GeomFromText(
    'LINESTRING(50 50,150 150,150 50)'
    ),
 10,32,0);
            

32辺 四角形

SELECT CG_3DBuffer(
  ST_GeomFromText(
    'LINESTRING(50 50,150 150,150 50)'
    ),
 10,32,2);