private Line2D extendWall(Line2D wall){
		double x1 = wall.getX1();
		double x2 = wall.getX2();
		double y1 = wall.getY1();
		double y2 = wall.getY2();
		double c = 0.04;
		log.trace("Before : " + wall.getP1() + " " + wall.getP2());
		if (GeometryUtils.equals(x1, x2)){
			if (y1 < y2)
				wall.setLine(new Point2D.Double(x1,y1-c), new Point2D.Double(x2,y2+c));
			else
				wall.setLine(new Point2D.Double(x1,y1+c), new Point2D.Double(x2,y2-c));
			log.trace("After : " + wall.getP1() + " " + wall.getP2());
			return wall;
		}
	/*	if (GeometryUtils.equals(y1, y2)){
			if (x1 < x2)
				wall.setLine(new Point2D.Double(x1-c,y1), new Point2D.Double(x2+c,y2));
			else
				wall.setLine(new Point2D.Double(x1+c,y1), new Point2D.Double(x2-c,y2));
			log.trace("After : " + wall.getP1() + " " + wall.getP2());
			return wall;
		}*/
	
		double m = (y2-y1)/(x2-x1);
		if (x1 < x2 && y1 < y2)
			wall.setLine(new Point2D.Double(x1-pointExtend(m), y1-pointExtend(m)*m), new Point2D.Double(x2+pointExtend(m), y2+pointExtend(m)*m));
		else if (x1 > x2 && y1 < y2)
			wall.setLine(new Point2D.Double(x1+pointExtend(m), y1-pointExtend(m)*m), new Point2D.Double(x2-pointExtend(m), y2+pointExtend(m)*m));
		else if (x1 < x2 && y1 > y2)
			wall.setLine(new Point2D.Double(x1-pointExtend(m), y1+pointExtend(m)*m), new Point2D.Double(x2+pointExtend(m), y2-pointExtend(m)*m));
		else // if (x1 > x2 && y1 > y2)
			wall.setLine(new Point2D.Double(x1+pointExtend(m), y1+pointExtend(m)*m), new Point2D.Double(x2-pointExtend(m), y2-pointExtend(m)*m));
		
		log.trace("After : " + wall.getP1() + " " + wall.getP2());
		return wall; 
	}