CG_3DBuffer — Computes a 3D buffer around a geometry.
geometry CG_3DBuffer(
geometry geom, float8 radius, integer segments, integer buffer_type)
;
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.
The buffer_type
specifies the type of buffer to create:
0: Rounded buffer (default)
1: Flat buffer
2: Square buffer
Availability: 3.6.0 - requires SFCGAL >= 2.0.0
This method needs SFCGAL backend.
This function supports 3d and will not drop the z-index.
This function supports Polyhedral surfaces.
This function supports Triangles and Triangulated Irregular Network Surfaces (TIN).
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)), ... )
The following images were rendered pasting the output of the ST_AsX3D query into X3D Viewer.
SELECT string_agg('<Shape>' || ST_AsX3D(cgbuffer3d_output) || '<Appearance> <Material diffuseColor="0 0.8 0.2" specularColor="0 1 0"/> </Appearance> </Shape>', '');
SELECT CG_3DBuffer(ST_GeomFromText('POINT(100 90)'), 50,32,0);
|
SELECT CG_3DBuffer( ST_GeomFromText('POINT(100 90)'), 50,5,0);
|
SELECT CG_3DBuffer( ST_GeomFromText( 'LINESTRING(50 50,150 150,150 50)' ), 10,32,0);
|
SELECT CG_3DBuffer( ST_GeomFromText( 'LINESTRING(50 50,150 150,150 50)' ), 10,32,2);
|