public Ray[][] initializeRays(double x, double y, double z, Screen screen, int xres, int yres){
		Vector3D origin = new Vector3D(x,y,z);
		Ray[][] rays;
		//<= used as we want neat behaviour on bad exceptions rather than returning say a [50][0] array
		if (screen ==null || xres <=0 || yres <= 0){rays = new Ray[0][0];}
		else{
		rays = new Ray[xres][yres];
		for(int i =0; i < xres; i++){
			for(int j=0; j < yres; j++){
				Vector3D screenPoint = new Vector3D(SCALE,screen.getOrigin(),(((double)i)/xres)*screen.getL1(), screen.getV1(),(((double)j)/yres)*screen.getL2(),screen.getV2()); 
				//System.out.println(screenPoint.getX() + " " +screenPoint.getY() + " " +screenPoint.getZ());
				try{
				rays[i][j] = new Ray(origin, screenPoint.subtract(SCALE,origin));
				}catch (Exception e){System.out.println(e.toString());}
			}
		}
		}
		return rays;
	}