Ich bin im Moment am schreiben einer simplen "Grafikkarte", welche eine
16x16 RGB LED Matrix ansteuert. Die Ansteuerung selbst geht, also fange
ich jetzt mit den Grafikfunktionen (Linie, Viereck etc.) an. Da ich die
Linienfunktion so einfach bedienbar wie möglich halten wollte, sollte
die Reihenfolge der Koordinaten egal sein. Also fragt meine Funktion
einfach ab welche Zahl grösser ist, und dreht sie bei bedarf.
Das habe ich so gelöst:
1 | int x1 = 0;
|
2 | int x2 = 0;
|
3 | int y1 = 3;
|
4 | int y2 = 7;
|
5 |
|
6 | if (y2 >> y1)
|
7 | {
|
8 | int temp = y1; // das hier vertauscht y1 und y2, falls y2 grösser ist.
|
9 | y1 = y2;
|
10 | y2 = temp;
|
11 | }
|
12 | if (y1 == 7 && y2 == 3)
|
13 | {
|
14 | pixel(30,30,0,7,7); // ausgabe auf display
|
15 | }
|
eigentlich sollte die Abfrage "if (y1 == 7 && y2 == 3)" wahr sein, egal
ob
y1 = 3; und y2 = 7;
oder ob
y1 = 7; und y2 = 3;
da es im ersten fall ja vertauscht wird. Bei mir funktioniert das
vertauschen aber komischerweise nur, wenn y1 kleiner 3 ist. Das heisst
so wie oben, wird das pixel(30,30,0,7,7); nie erreicht, wenn ich aber
alle 3`s durch 2, 1 oder 0 ersetze (so:)
1 | int x1 = 0;
|
2 | int x2 = 0;
|
3 | int y1 = 2;
|
4 | int y2 = 7;
|
5 |
|
6 | if (y2 >> y1)
|
7 | {
|
8 | int temp = y1; // das hier vertauscht y1 und y2, falls y2 grösser ist.
|
9 | y1 = y2;
|
10 | y2 = temp;
|
11 | }
|
12 | if (y1 == 7 && y2 == 2)
|
13 | {
|
14 | pixel(30,30,0,7,7); // ausgabe auf display
|
15 | }
|
dann geht es!
Ich weiss echt nicht mehr weiter, ich hoffe mal es war ein einfacher
Fehler, und jemand kann mir sagen, warum dass nicht geht.
LG, Sean