Name

CG_3DBuffer — Calcule un tampon 3D autour d'une géométrie.

Synopsis

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

Description

Generates a 3D buffer around the input geometry geom with a specified radius. The buffer is constructed in 3D space, creating a volumetric representation of the geometry's surroundings. The segments parameter defines the number of segments used to approximate the curved sections of the buffer, with a minimum value of 4 segments required. The buffer_type specifies the type of buffer to create: 0: Rounded buffer (default) 1: Flat buffer 2: Square buffer

Input geometry must be a Point or LineString.

Disponibilité : 3.6.0 - nécessite SFCGAL >= 2.0.0

Cette méthode nécessite le backend SFCGAL.

Exemples

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)), ... )

Les images suivantes ont été obtenues en collant le résultat de la requête ST_AsX3D dans 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 (tampon arrondi)

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

5 segments arrondis

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

32 segments, ronds

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

32 segments, carrés

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