@Override
 public Polygon construct(
     Polygon out, float x, float y, float z, float width, float height, Plane plane) {
   Vector pos = new Vector(x, y, z);
   for (int i = 0; i < lod; i++) {
     Vector v = plane.map(width * trigs[lod + i], height * trigs[i]);
     v = Vector.add(v, pos, v);
     out.vertices[i] = new Vertex3D(v);
   }
   return out;
 }
 @Override
 public Polygon construct(
     Polygon out,
     Image texture,
     float x,
     float y,
     float z,
     float width,
     float height,
     Plane plane) {
   Vector pos = new Vector(x, y, z);
   for (int i = 0; i < lod; i++) {
     Vector v = plane.map(width * trigs[lod + i], height * trigs[i]);
     Vector2 texV = new Vector2(0.5f + (trigs[lod + i] / 2), 0.5f + (trigs[i] / 2));
     v = Vector.add(v, pos, v);
     texV = texture.transformCoords(texV, texV);
     out.vertices[i] = new Vertex3D(v, texV);
   }
   return out;
 }