void ExerciseN_ABXY::clipping(vec2 line[2],const vec2 edge[]){ //festsetzen der Arraygröße für die Clipkanten //wird hier noch manuell gemacht, ich weiss noch nicht so recht wie in c++ //die Arraygröße zur laufzeit festgestellt wird //anscheinend gehts mit size = sizeof (array) / sizeof(array[0]) //gesamtgröße des arrays durch ein element, hatte aber in meinen tests nich so geklappt int size = 4; // k = n+1 der clipkante int k = 0; // richtungsvektor der strecke vec2 dirLine = line[1]-line[0]; //für jede clipkante werden die clippoints der strecke bestimmt for(int i = 0; i normalenvektor = (-b,a) easy vec2 *norm = new vec2( -dirEdge.y , dirEdge.x ); //skalarprodukt aus normalenvektor der clipkante und richtungsvektor der strecke double nd = norm->dotProduct(*norm, dirLine); //falls n != 0 dann strecke nicht parallel zur clipkante if(nd!=0){ //berechne t für die Strecke double t = - ( (norm->dotProduct(*norm, ( line[0]-edge[i])) ) / nd ); //falls t nicht größer als 1 oder kleiner als 0 dann muss geclipped werden: if(t>=0||t<=1){ //falls nd<0 -> Eintrittspunkt if(nd<0&&t>0){ vec2 clipPointA = line[0] + t * dirLine; line[0] = clipPointA; } //falls nd>0 Austrittspunkt if(nd>0&&t<1){ vec2 clipPointB = line[0] + t * dirLine; line[1] = clipPointB; } } else{ //hier fehlt noch das komplette ausschneiden } } }