Minkowski sum of a LineString and a circular polygon. The line crosses the polygon, and the result sweeps the polygon along the line.
WITH data AS (
SELECT ST_MakeLine(ST_Point(10, 10), ST_Point(100, 100)) AS line,
ST_Buffer('POINT(50 50)'::geometry, 30) AS circle
)
SELECT line AS input_line,
circle AS input_circle,
CG_MinkowskiSum(line, circle) AS minkowski_sum
FROM data;
LINESTRING(10 10,100 100) | POLYGON((80 50,79.424 44.147,77.716 38.519,74.944 33.333,71.213 28.787,66.667 25.056,61.481 22.284,55.853 20.576,50 20,44.147 20.576,38.519 22.284,33.333 25.056,28.787 28.787,25.056 33.333,22.284 38.519,20.576 44.147,20 50,20.576 55.853,22.284 61.481,25.056 66.667,28.787 71.213,33.333 74.944,38.519 77.716,44.147 79.424,50 80,55.853 79.424,61.481 77.716,66.667 74.944,71.213 71.213,74.944 66.667,77.716 61.481,79.424 55.853,80 50)) | MULTIPOLYGON(((179.424 155.853,177.716 161.481,174.944 166.667,171.213 171.213,166.667 174.944,161.481 177.716,155.853 179.424,150 180,144.147 179.424,138.519 177.716,133.333 174.944,128.787 171.213,38.787 81.213,35.056 76.667,32.284 71.481,30.576 65.853,30 60,30.576 54.147,32.284 48.519,35.056 43.333,38.787 38.787,43.333 35.056,48.519 32.284,54.147 30.576,60 30,65.853 30.576,71.481 32.284,76.667 35.056,81.213 38.787,171.213 128.787,174.944 133.333,177.716 138.519,179.424 144.147,180 150,179.424 155.853)))
0102000000020000000000000000002440000000000000244000000000000059400000000000005940 | 0103000000010000002100000000000000000054400000000000004940B9F9BD941BDB53408B9EEB68DA1246401CD98F44D96D53404D10EFE07E424340E26D9FF16BBC5240E23EF63C9CAA404004D20520A5CD5140F1B7E87F6BC93C408FE084E1B1AA504077488239500E3940B4EF101F81BD4E408E9BC0ED9A4836407661149725ED4B401B1908AD91933440000000000000494000000000000034408B9EEB68DA1246401B1908AD919334404D10EFE07E4243408E9BC0ED9A483640E33EF63C9CAA404075488239500E3940F1B7E87F6BC93C40F0B7E87F6BC93C4076488239500E3940E23EF63C9CAA40408E9BC0ED9A4836404C10EFE07E4243401B1908AD91933440899EEB68DA124640000000000000344000000000000049401B1908AD919334407661149725ED4B408D9BC0ED9A483640B3EF101F81BD4E4075488239500E39408EE084E1B1AA5040EFB7E87F6BC93C4004D20520A5CD5140E23EF63C9CAA4040E26D9FF16BBC52404A10EFE07E4243401CD98F44D96D5340899EEB68DA124640B9F9BD941BDB5340000000000000494000000000000054407561149725ED4B40B9F9BD941BDB5340B4EF101F81BD4E401CD98F44D96D53408EE084E1B1AA5040E36D9FF16BBC524004D20520A5CD514004D20520A5CD5140E26D9FF16BBC52408FE084E1B1AA50401CD98F44D96D5340B6EF101F81BD4E40B9F9BD941BDB53407761149725ED4B4000000000000054400000000000004940 | 01060000000100000001030000000100000023000000DCFC5ECA8D6D66405E18C565497B63408EEC47A2EC366640EE3BC447602F6440F1B6CFF835DE65404870C2F058D5644002E90290D266654002E90290D26665404770C2F058D56440F2B6CFF835DE6540ED3BC447602F64408EEC47A2EC3666405E18C565497B6340DCFC5ECA8D6D66400000000000C062400000000000806640A2E73A9AB6046240DCFC5ECA8D6D664012C43BB89F5061408EEC47A2EC366640B88F3D0FA7AA6040F1B6CFF835DE6540FE16FD6F2D19604002E90290D2666540F85BF4BFB564434004D20520A54D54403A24C11C288741408EE084E1B12A5340C64DE0764D244040DA77888FC0DE51401B1908AD91933E40BB308ACB927650400000000000003E400000000000004E401B1908AD91933E40899EEB68DA124B40C74DE0764D2440404C10EFE07E4248403B24C11C28874140E23EF63C9CAA4540F85BF4BFB5644340F85BF4BFB5644340E33EF63C9CAA45403A24C11C288741404D10EFE07E424840C74DE0764D2440408B9EEB68DA124B401B1908AD91933E400000000000004E400000000000003E40BB308ACB927650401B1908AD91933E40DA77888FC0DE5140C74DE0764D2440408FE084E1B12A53403C24C11C2887414004D20520A54D5440F85BF4BFB564434002E90290D2666540FE16FD6F2D196040F1B6CFF835DE6540B88F3D0FA7AA60408EEC47A2EC36664014C43BB89F506140DCFC5ECA8D6D6640A2E73A9AB604624000000000008066400000000000C06240DCFC5ECA8D6D66405E18C565497B6340
Minkowski sum of a MultiPoint and a polygon. The result contains one translated copy of the polygon for each point.
WITH data AS (
SELECT 'MULTIPOINT(25 50,70 25)'::geometry AS points,
'POLYGON((130 150,20 40,50 60,125 100,130 150))'::geometry AS polygon
)
SELECT points AS input_points,
polygon AS input_polygon,
CG_MinkowskiSum(points, polygon) AS minkowski_sum
FROM data;
MULTIPOINT((25 50),(70 25)) | POLYGON((130 150,20 40,50 60,125 100,130 150)) | MULTIPOLYGON(((45 90,75 110,150 150,155 200,45 90)),((90 65,120 85,195 125,200 175,90 65)))
010400000002000000010100000000000000000039400000000000004940010100000000000000008051400000000000003940 | 0103000000010000000500000000000000004060400000000000C062400000000000003440000000000000444000000000000049400000000000004E400000000000405F40000000000000594000000000004060400000000000C06240 | 01060000000200000001030000000100000005000000000000000080464000000000008056400000000000C052400000000000805B400000000000C062400000000000C06240000000000060634000000000000069400000000000804640000000000080564001030000000100000005000000000000000080564000000000004050400000000000005E40000000000040554000000000006068400000000000405F4000000000000069400000000000E0654000000000008056400000000000405040