الاسم
CG_3DBuffer — تحسب نطاقًا عازلًا ثلاثي الأبعاد حول شكل هندسي.
المختصر
geometry CG_3DBuffer(geometry geom, float8 radius, integer segments, integer buffer_type);
الوصف
تولّد نطاقًا عازلًا ثلاثي الأبعاد حول الشكل الهندسي المُدخَل geom بنصف قطر محدد radius. يُبنى النطاق العازل في الفضاء الثلاثي الأبعاد، فيُنشئ تمثيلًا حجميًا لمحيط الشكل الهندسي. يحدد المعامل segments عدد القطع المستخدمة لتقريب الأجزاء المنحنية من النطاق العازل، مع حدّ أدنى مطلوب قدره 4 قطع. ويحدد buffer_type نوع النطاق العازل المراد إنشاؤه: 0: نطاق عازل مستدير (افتراضي) 1: نطاق عازل مسطّح 2: نطاق عازل مربّع
يجب أن يكون الشكل الهندسي المُدخَل نقطة (Point) أو خطًا (LineString).
متاحة منذ: 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.
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);
|