public Set<TrapezoidLine> naiveMap(int height, int width) {

		Set<TrapezoidLine> trapezoidMap = new HashSet<TrapezoidLine>();

		// Add the borders of the window as temporary shapes
		Shape border = new Shape();
		Shape border2 = new Shape();

		border.getPoints().add(new Point(0, 0));
		border.getPoints().add(new Point(width, 0));

		border2.getPoints().add(new Point(0, height));
		border2.getPoints().add(new Point(width, height));

		shapes.add(border);
		shapes.add(border2);

		// Step through each shape
		Iterator<Shape> s = shapes.iterator();
		while (s.hasNext()) {
			Shape sh = s.next();
			// Ignore the border shapes so their points do not appear as part of
			// the trapezoidal map
			if (sh.equals(border) || sh.equals(border2))
				continue;
			// Step through the points in the current shape
			Iterator<Point> p = sh.getPoints().iterator();
			while (p.hasNext()) {
				Point pt = p.next();
				// Generate two trapezoidal lines for each point (up and down)
				TrapezoidLine t = new TrapezoidLine(pt, height + 1, true);
				TrapezoidLine t2 = new TrapezoidLine(pt, height + 1, false);

				// Debug
				// System.out.println("Point: ("+pt.x+","+pt.y+")");

				// Iterate over all shapes, intersecting the trapezoidal lines
				// with each of the shapes
				Iterator<Shape> s2 = shapes.iterator();
				while (s2.hasNext()) {
					Shape sh2 = s2.next();

					// if(!sh.equals(sh2)) {
					// If the intersection yields a positive difference that is
					// smaller than the previous length, update t
					if (t.getStart().y - sh2.intersect(t, height + 1) > 0) {
						t.setLength(Math.min((int) (t.getStart().y - sh2
								.intersect(t, height + 1)), t.getLength()));
					}
					// if the intersection yields a negative difference that is
					// absolutely smaller than the previous length, update t2
					else if (t2.getStart().y - sh2.intersect(t2, height + 1) < 0) {
						t2.setLength(Math.min((int) Math.abs(t2.getStart().y
								- sh2.intersect(t2, height + 1)), t2
								.getLength()));
					}
					// }

				}
				// If the lengths have been updated to a reasonable value, add
				// them
				if (t.getLength() < height) {
					trapezoidMap.add(t);
				}
				if (t2.getLength() < height) {
					trapezoidMap.add(t2);
				}
			}
		}

		// Remove the borders so they are not displayed
		shapes.remove(border);
		shapes.remove(border2);

		return trapezoidMap;
	}