private Image warpImage(String imagePath){
		BufferedImage image = null;
		//load image
		try {
			image = ImageIO.read(this.getClass().getResource(imagePath));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//wrap image in the transformer object
		javaxt.io.Image warped = new javaxt.io.Image(image);
		int width = warped.getWidth();
		int height = warped.getHeight();

		//apply the transform
		if (surface.roomView.sidePassage){
			//here we use skew to slide the far away edge towards the center (side passages only)
			int closeWidth = (int) (width * 0.8);
			int farWidth = (int) (width * 0.4);
			if (surface.roomView.sidePassageLeft){
				//we are in a side passage, so have to skew to one side
				//left side
				if (ceiling){
					warped.setCorners(0, 0, //UL
							closeWidth, 0, //UR
							width, height, //LR
							width - farWidth, height);//LL
				} else {
					//floor
					warped.setCorners(width - farWidth, 0, //UL
							width, 0, //UR
							closeWidth, height, //LR
							0, height);//LL
				}
			} else {
				//right side
				if (ceiling){
					warped.setCorners(width - closeWidth, 0, //UL
							closeWidth, 0, //UR
							farWidth, height, //LR
							0, height);//LL
				} else {
					//floor
					warped.setCorners(0, 0, //UL
							farWidth, 0, //UR
							width, height, //LR
							width - closeWidth, height);//LL
				}
			}
		} else {
			//normal transform, just have to shrink the far edge
			if (ceiling){
				warped.setCorners(0, 0, //UL
						width, 0, //UR
						(3 * (width / 4)), height, //LR
						(width / 4), height);//LL
			} else {
				//floor
				warped.setCorners((3 * (width / 4)), 0, //UL
						(width / 4), 0, //UR
						0, height, //LR
						width, height);//LL
			}
		}
		return warped.getImage();
	}