public PConcavePolygonShape(float[] xvers, float[] yvers, float density) {
			fig = new PFigure();
			tri = new PTriangulator();
			poly = new PPolygonizer();
			numVertices = xvers.Length;
			localVers = new Vector2f[numVertices];
			vers = new Vector2f[numVertices];
			_dens = density;
			for (int i = 0; i < numVertices; i++) {
				localVers[i] = new Vector2f(xvers[i], yvers[i]);
				vers[i] = new Vector2f(xvers[i], yvers[i]);
			}
	
			fig.Figure(localVers, numVertices);
			numVertices = fig.numVertices;
			localVers = new Vector2f[numVertices];
			vers = new Vector2f[numVertices];
			for (int i_0 = 0; i_0 < numVertices; i_0++) {
				localVers[i_0] = new Vector2f(fig.done[i_0].x, fig.done[i_0].y);
				vers[i_0] = new Vector2f(fig.done[i_0].x, fig.done[i_0].y);
			}
			tri.Triangulate(fig.done, fig.numVertices);
			poly.Polygonize(tri.triangles, tri.numTriangles);
			convexes = new PConvexPolygonShape[1024];
			for (int i_1 = 0; i_1 < poly.numPolygons; i_1++) {
				convexes[i_1] = new PConvexPolygonShape(poly.polygons[i_1].xs,
						poly.polygons[i_1].ys, _dens);
			}
			numConvexes = poly.numPolygons;
			CalcMassData();
			_type = PShapeType.CONCAVE_SHAPE;
		}
        public PConcavePolygonShape(float[] xvers, float[] yvers, float density)
        {
            fig         = new PFigure();
            tri         = new PTriangulator();
            poly        = new PPolygonizer();
            numVertices = xvers.Length;
            localVers   = new Vector2f[numVertices];
            vers        = new Vector2f[numVertices];
            _dens       = density;
            for (int i = 0; i < numVertices; i++)
            {
                localVers[i] = new Vector2f(xvers[i], yvers[i]);
                vers[i]      = new Vector2f(xvers[i], yvers[i]);
            }

            fig.Figure(localVers, numVertices);
            numVertices = fig.numVertices;
            localVers   = new Vector2f[numVertices];
            vers        = new Vector2f[numVertices];
            for (int i_0 = 0; i_0 < numVertices; i_0++)
            {
                localVers[i_0] = new Vector2f(fig.done[i_0].x, fig.done[i_0].y);
                vers[i_0]      = new Vector2f(fig.done[i_0].x, fig.done[i_0].y);
            }
            tri.Triangulate(fig.done, fig.numVertices);
            poly.Polygonize(tri.triangles, tri.numTriangles);
            convexes = new PConvexPolygonShape[1024];
            for (int i_1 = 0; i_1 < poly.numPolygons; i_1++)
            {
                convexes[i_1] = new PConvexPolygonShape(poly.polygons[i_1].xs,
                                                        poly.polygons[i_1].ys, _dens);
            }
            numConvexes = poly.numPolygons;
            CalcMassData();
            _type = PShapeType.CONCAVE_SHAPE;
        }