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

Génère un tampon 3D autour de la géométrie d'entrée geom avec un radius spécifié . Le tampon est construit dans l'espace 3D, créant une représentation volumétrique de l'environnement de la géométrie. Le paramètre segments définit le nombre de segments utilisés pour approximer les sections courbes du tampon. Le paramètre buffer_type spécifie le type de tampon à créer : 0 : tampon arrondi (par défaut) 1 : tampon plat 2 : tampon carré

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

Cette méthode nécessite le backend SFCGAL.

Cette fonction prend en charge la 3D et ne supprime pas l'indice z.

Cette fonction prend en charge les surfaces Polyhedral.

Cette fonction prend en charge les triangles et les réseaux irréguliers triangulés (TIN).

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);