docs: function(options) {
              var alpha = CSG.parseOptionAsFloat(options, "angle", 360);
              var resolution = CSG.parseOptionAsInt(options, "resolution", CSG.defaultResolution3D);
  
              var EPS = 1e-5;
  
              alpha = alpha > 360 ? alpha % 360 : alpha;
              var origin = [0, 0, 0];
              var axisV = CSG.Vector3D.Create(0, 1, 0);
              var normalV = [0, 0, 1];
              var polygons = [];
              // planes only needed if alpha > 0
              var connS = new CSG.Connector(origin, axisV, normalV);
              if (alpha > 0 && alpha < 360) {
                  // we need to rotate negative to satisfy wall function condition of
                  // building in the direction of axis vector
                  var connE = new CSG.Connector(origin, axisV.rotateZ(-alpha), normalV);
                  polygons = polygons.concat(
                      this._toPlanePolygons({toConnector: connS, flipped: true}));
                  polygons = polygons.concat(
                      this._toPlanePolygons({toConnector: connE}));
              }
              var connT1 = connS, connT2;
              var step = alpha/resolution;
              for (var a = step; a <= alpha + EPS; a += step) {
                  connT2 = new CSG.Connector(origin, axisV.rotateZ(-a), normalV);
                  polygons = polygons.concat(this._toWallPolygons(
                      {toConnector1: connT1, toConnector2: connT2}));
                  connT1 = connT2;
              }
              return CSG.fromPolygons(polygons).reTesselated();
          }