28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE
28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE
28. BWINF, Runde 1, Aufgabe 3: Wegfehler - Matthias Springer .DE
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Aufgabe</strong> 3<br />
Stefan Hansch, Markus Wirsing, <strong>Matthias</strong> <strong>Springer</strong><br />
356<br />
357 // Naechste Zeile lesen, da es die aktuelle Zeile ein Kommentar ist<br />
358 readLine(file_handle);<br />
359 }<br />
360 else<br />
361 {<br />
362 int counter = 0;<br />
363 // Erstes Zeichen der Zeile einlesen<br />
364 // fread(currentLine + 1, 1, 1, file_handle);<br />
365<br />
366 while (currentLine[counter] != 10)<br />
367 {<br />
368 // Zeichen fuer Zeichen bis zum Zeilensprung einlesen<br />
369 counter++;<br />
370 fread(currentLine + counter, 1, 1, file_handle);<br />
371 }<br />
372<br />
373 currentLine[counter] = 0;<br />
374 }<br />
375 }<br />
376<br />
377 /// *************************************************<br />
378 /// * Zeichnet einen dicken Punkt auf die Map. *<br />
379 /// *************************************************<br />
380 void paintDot(int x, int y)<br />
381 {<br />
382 // Ueberpruefe, ob der Punkt ueberhalb auf die Karte gezeichnet werden<br />
kann<br />
383<br />
384 if ((x > -1) && (x < proportions[0]) && (y > -1) && (y < proportions[1]))<br />
385 {<br />
386 setPixel(x, y, 0, 0, 0);<br />
387<br />
388 // Zeichne einen dicken Punkt<br />
389 setPixel(x - 1, y, 0, 0, 0);<br />
390 setPixel(x + 1, y, 0, 0, 0);<br />
391 setPixel(x, y - 1, 0, 0, 0);<br />
392 setPixel(x, y + 1, 0, 0, 0);<br />
393 }<br />
394 else<br />
395 {<br />
396 printf("[W] Punkt kann nicht gezeichnet werden, da ausserhalb der<br />
Landkarte! Pixel(%d | %d).\n", x, y);<br />
397 }<br />
398 }<br />
399<br />
400 /// *************************************************<br />
401 /// * Zeichnet eine Linie auf die Map. *<br />
402 /// *************************************************<br />
403 void paintLine(int x1, int x2, int y1, int y2, int r, int g, int b)<br />
404 {<br />
405 // Startpunkte der Linien zeichen<br />
406 paintDot(x1, y1);<br />
407 paintDot(x2, y2);<br />
408<br />
409 // Ueberprufe, ob die Stecke ueberhaupt gezeichnet werden kann<br />
410 if ((x1 > -1) && (x2 > -1) && (y1 > -1) && (y2 > -1) && (x1 < proportions<br />
[0]) && (x2 < proportions[0]) && (y1 < proportions[1]) && (y2 <<br />
proportions[1]))<br />
411 {<br />
412 // Alles in Ordnung!<br />
413 }<br />
414 else<br />
415 {<br />
416 printf("[W] Linie kann nicht gezeichnet werden, da ausserhalb der<br />
Landkarte! Zeichne nur den sichtbaren Bereich ein!\n");<br />
417 }<br />
418<br />
419 // Zeichen Linie<br />
420 double vector_direction[2]; // Der Richtungsvektor der Gerade<br />
421 vector_direction[0] = x2 - x1;<br />
422 vector_direction[1] = y2 - y1;<br />
423 // Richtungsvektor zum Einheitsvektor (Laenge 1) machen<br />
424 double vector_length = sqrt(vector_direction[0] * vector_direction[0] +<br />
23