poly-extrude

Extrude polygons/polylines. Born in maptalks.three project

Install

NPM

npm i poly-extrude

CDN

<script type="text/javascript" src="https://unpkg.com/poly-extrude/dist/poly-extrude.js"></script>

Use

  import {
      polygons,
      extrudePolygons,
      extrudePolygonsOnPath,
      extrudePolylines,
      cylinder,
      expandPaths,
      extrudeSlopes,
      expandTubes,
      plane
  } from 'poly-extrude';

  //if you use cdn,the namespace is polyextrude

  //   const {
  //       extrudePolygons,
  //       extrudePolylines
  //   } = window.polyextrude;

  const polygons = [
      //polygon
      [
          //outring
          [
              [x, y],
              [x, y],
              ...........
          ],
          //holes
          [
              [x, y],
              [x, y], ...........
          ],
          ........

      ],
      //other polygons
      ......
  ];

  const polylines = [
      // polyline
      [
          [x, y],
          [x, y],
          ...........
      ],
      //polyline
      [
          [x, y],
          [x, y],
          ...........
      ],
  ];

  const result = extrudePolygons(polygons, {
      depth: 2
  });
  const {
      positon,
      normal,
      uv,
      indices
  } = result;
  //do something

API

extrudePolygons(polygons, options)

  const result = extrudePolygons(polygons, {
      depth: 2
  });
  const {
      positon,
      normal,
      uv,
      indices
  } = result;
  //do something

building
buildings
china
muti polygon
ny buildings
custom shape


extrudePolygonsOnPath(polygons, options)

  const result = extrudePolygonsOnPath(polygons, {
      extrudePath: [
          [0, 0],
          [100, 0]
      ]
  });
  const {
      positon,
      normal,
      uv,
      indices
  } = result;
  //do something

base demo
wireframe demo
with holes
with holes by custom shape
polygonRotation
extrude along spring
extrude taihu lake
extrude by curve


extrudePolylines(lines, options)

   const result = extrudePolylines(polylines, {
       depth: 2,
       lineWidth: 2
   });
   const {
       positon,
       normal,
       uv,
       indices
   } = result;
   //do something

line
line uv
line pathUV
line cutcorner
brige
brige bottomStickGround
extrude brige
spring
wall
street


cylinder(center, options)

const center = [0, 0];
const result = cylinder(center, {

    radius: 1,
    height: 2,
    radialSegments: 6

});
const {
    positon,
    normal,
    uv,
    indices

} = result;
//do something

cylinder
___

expandPaths(lines, options)

const result = expandPaths(polylines, {

    cornerRadius: 0.5,
    lineWidth: 2

});
const {

    positon,
    normal,
    uv,
    indices

} = result;
//do something

paths
street paths
brige paths
___

extrudeSlopes(lines, options)

const result = extrudeSlopes(polylines, {

    depth: 1,
    side: 'left',
    sideDepth: 0,
    lineWidth: 2

});
const {

    positon,
    normal,
    uv,
    indices

} = result;
//do something

slope
extrudeSlopes pathUV demo
___

expandTubes(lines, options)

const result = expandTubes(polylines, {

    radius: 1,
    radialSegments: 8

});
const {

    positon,
    normal,
    uv,
    indices

} = result;
//do something

tube
___

plane(width, height,devideW,devideH)

const result = plane(100, 100, 10, 10);
const {

    positon,
    normal,
    uv,
    indices

} = result;
//do something

plane demo
custom terrain demo


polygons(polygons, options)

  const result = polygons(polygons, {

  });
  const {
      positon,
      normal,
      uv,
      indices
  } = result;
  //do something

polygons demo