public static float[] getHole(Vector<int[]> Lines, float[] g, float degrees, float steps)
	{
		//Funktion bekommt die Anfangsgerade und den aktuellen Winkel, da so Rechenungenauigkeiten vermieden werden
		//steps gibt an in welchen Schritten sich der Winkel aendert
		//Rueckgabe ist entweder ein Punkt der aus einem "Loch" fuehrt oder -1/-1 wenn kein Loch da ist
		
		//Gedrehte Vektoren der Geraden
		float[] a = null;
		float[] b = null;
		int l1 = 0;		//Bande1
		int l2 = 0;		//Bande2
		float[] p = new float[2];	//Rueckgabepunkt
		float step = degrees + steps;
		
		//Strahl auf Bandenwechsel testen
			//Gerade auf aktuellen Winkel drehen
		a = Mat.rotateVector(new float[]{g[2],g[3]}, degrees);
			//Bande des Winkels speichern
		l1 = getClosestLine(Lines,new float[]{g[0],g[1],a[0],a[1]});		
			//Gerade um "steps" weiter drehen
		b = Mat.rotateVector(new float[]{g[2],g[3]}, step);
			//2. Bande speichern
		l2 = getClosestLine(Lines,new float[]{g[0],g[1],b[0],b[1]});
		
		//Wenn Banden sich nicht wechseln oder ein Schnittpunkt vorliegt wird hier abgebrochen
		float[] cp = Mat.getCrossPointLL(Lines.elementAt(l1), Lines.elementAt(l2));
		if(l1 == l2 ||
		   cp[0] != -1)
		{
			p[0] = -1;
			p[1] = -1;
			return(p);
		}
		
		//Welche Bande ist weiter weg? Abstand zu den Banden ausrechnen
		float[] a1 = null;
		float[] a2 = null;
		a1 = Mat.getCrossPointSL(new float[]{g[0],g[1],a[0],a[1]}, Lines.elementAt(l1));
		a2 = Mat.getCrossPointSL(new float[]{g[0],g[1],b[0],b[1]}, Lines.elementAt(l2));		
		float d1 = Mat.getDistance(a1, new float[]{g[0],g[1]});
		float d2 = Mat.getDistance(a2, new float[]{g[0],g[1]});
						
		//Wenn der Abstand zu a1 größer als der zu a2 ist
		if(d1 > d2)
		{
			/*bestpoint[0] = a1[0];
			bestpoint[1] = a1[1];
			direction[0] = a[0] * (-1);
			direction[1] = a[1] * (-1);
			lin[0] = Lines.elementAt(l1)[0];
			lin[1] = Lines.elementAt(l1)[1];
			lin[2] = Lines.elementAt(l1)[2];
			lin[3] = Lines.elementAt(l1)[3];*/			
			//Punkt darf nicht auf der Linie sitzen, da sonst keine Abstandspruefung funktioniert
			/*a1[0] -= 0.1 * a[0];
			a1[1] -= 0.1 * a[1];
			return(a1);*/
			
			//Debug
			Mat.unifyVector(a);
			a1[0] -= a[0];
			a1[1] -= a[1];
			return(a1);
			//Debug Ende
		}
		else
		{
			/*bestpoint[0] = a2[0];
			bestpoint[1] = a2[1];
			direction[0] = b[0] * (-1);
			direction[1] = b[1] * (-1);
			lin[0] = Lines.elementAt(l2)[0];
			lin[1] = Lines.elementAt(l2)[1];
			lin[2] = Lines.elementAt(l2)[2];
			lin[3] = Lines.elementAt(l2)[3];*/
			//Punkt darf nicht auf der Linie sitzen, da sonst keine Abstandspruefung funktioniert
			/*a2[0] -= 0.1 * b[0];
			a2[1] -= 0.1 * b[1];
			return(a2);*/
			
			//Debug
			Mat.unifyVector(b);
			a2[0] -= b[0];
			a2[1] -= b[1];
			return(a2);
			//Debug Ende
		}
		
		//Debug		
		//Schnittpunkt orthogonal zur Linie zurückverschieben, damit dr Ball nicht auf die Linie kommt
		//Punkt etwas zurückverschieben, da sonst die richtung des orthogonalen Vektors nicht bestimmt werden kann
		/*float[] tp = new float[2];
		tp[0] = (float) (bestpoint[0] + (direction[0]*1));
		tp[1] = (float) (bestpoint[1] + (direction[1]*1));
		
		//Vektor berechnen
		float[] vec = Mat.getOrthogonalVTP(new float[]{lin[0], lin[1], lin[2]-lin[0], lin[3]-lin[1]}, tp);
		
		//Vektor normen
		vec = Mat.getUnitVector(vec);
		
		//Position verschieben
		bestpoint[0] += (vec[0]*2);
		bestpoint[1] += (vec[1]*2);
		return(bestpoint);*/		
		//Debug Ende
	}