private boolean bitmaskIntersect(Entity e) {
		BufferedImage mask1 = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
		Graphics2D g = mask1.createGraphics();
		g.rotate(radians, width / 2, height / 2);
		g.fillPolygon(entity);

		BufferedImage mask2 = new BufferedImage(e.width, e.height, BufferedImage.TYPE_BYTE_BINARY);
		g = mask2.createGraphics();
		g.rotate(e.radians, e.width / 2, e.height / 2);
		g.fillPolygon(e.entity);

		g.dispose();

		for (int x = 0; x < width; x++) {

			int x2 = (int) (x + this.x - e.x);
			if (x2 >= e.width || x2 < 0)
				continue;

			for (int y = 0; y < height; y++) {

				int y2 = (int) (y + this.y - e.y);
				if (y2 >= e.height || y2 < 0)
					continue;

				if (mask1.getRGB(x, y) == -1 && mask2.getRGB(x2, y2) == -1) {
					return true;
				}
			}
		}

		return false;
	}