PDA

View Full Version : [FRAGE] - Bsp. 2 - Komischer Stern!


Strath
22-10-2004, 14:34
Also ich schau jetzt mal meinen Code noch durch, vielleicht komm ich auf den Fehler. Ich kann ja nicht den ganzen Code posten, um zu sehen wo der Fehler liegt... args.

Vielleicht weiß jemand von euch durch den Screenshot, wo der Fehler sein könnte? :confused: *seufz*

Wenn ich's rausfinde, poste ich's hier.

J.Petso
22-10-2004, 15:03
Vielleicht weiß jemand von euch durch den Screenshot, wo der Fehler sein könnte? :confused: *seufz*
Also, nachdem beim Screenshot die Reihenfolge der Punkte eigentlich stimmt und insbesondere das Schneiden mit den Kanten links und rechts hinhaut, würde ich auf eine falsche Koordinatenberechnung in intersect() wetten.

Schau einmal, ob du beim switch(edge) { case BOTTOM: ... und case TOP: ... } wirklich alles richtig gemacht hast, meiner Meinung nach muss da der Fehler liegen.

Rovo
22-10-2004, 15:22
Schau einmal, ob du beim switch(edge) { case BOTTOM: ... und case TOP: ... } wirklich alles richtig gemacht hast, meiner Meinung nach muss da der Fehler liegen.
zumal hier ja ein unterschied aus dem c code zu dem java-code resultiert, da lt. c code y nach oben zeigt und in unserem fall y nach unten. du kannst also fast die gesamte intersect-methode 1:1 übernehmen musst jedoch bottom und top vertauschen

hoffe, dass es dein problem löst

lg,
roman

Thönu
22-10-2004, 15:37
Quote:
Originally Posted by J.Petso
Schau einmal, ob du beim switch(edge) { case BOTTOM: ... und case TOP: ... } wirklich alles richtig gemacht hast, meiner Meinung nach muss da der Fehler liegen.

zumal hier ja ein unterschied aus dem c code zu dem java-code resultiert, da lt. c code y nach oben zeigt und in unserem fall y nach unten. du kannst also fast die gesamte intersect-methode 1:1 übernehmen musst jedoch bottom und top vertauschen

bei mir funktioniert der Algorithmus, ohne Bottom und Top zu vertauschen. Versuche einfach mal die wMin und wMax variablen zu vertauschen in der Intersectmethode. Das Kreuz sollte dann auch funktionieren..

Rovo
22-10-2004, 15:46
bei mir funktioniert der Algorithmus, ohne Bottom und Top zu vertauschen. Versuche einfach mal die wMin und wMax variablen zu vertauschen in der Intersectmethode. Das Kreuz sollte dann auch funktionieren..
das kommt dem vertauschen von top mit bottom ja gleich, wenn du dir die beiden anweisungen mal genauer ansiehst ;)

lg,
roman

Strath
22-10-2004, 15:58
Interessant, ok, ich werd mir das mal ansehen.

Danke für die Hilfe! :D

rubinow
22-10-2004, 16:19
public static final int X = 0;
public static final int Y = 1;
public static final int Z = 2;wofür brauch ich diese drei obenstehenden, initialisierten variablen

Thönu
22-10-2004, 16:24
ja, stimmt eigentlich schon... ;)
...aber irgenwie,naja ich habs vom Buch abgetippt, und es funktioniert trotzdem, ohne das ich was vertauscht hab.

ChrisChiu
22-10-2004, 16:27
public static final int X = 0;
public static final int Y = 1;
public static final int Z = 2;wofür brauch ich diese drei obenstehenden, initialisierten variablen

Damit du bei den Arrays, die nicht auf CG1Point basieren, sondern für die drei Koordinaten halt ein dreidimensionales Array anlegen (oder für 2 Koordinaten ein zweidimensionales, wie bei clipped), schöner auf die Einzelkoordinaten zugreifen kannst. Braucht man nicht, macht aber den Quellcode besser lesbar. Das brauchst du z.B. beim clipped Array:

Folgendes:

clipped[i][X] = ... irgendwas ...
clipped[i][Y] = ... irgendwas ...

ist jedenfalls besser zu lesen als:

clipped[i][0] = ... irgendwas ....
clipped[i][1] = ... irgendwas ....

Also dient es rein zur besseren Lesbarkeit.

Das sind übrigens keine Variablen, sondern Konstanten :)

Rovo
22-10-2004, 16:29
public static final int X = 0;
public static final int Y = 1;
public static final int Z = 2;wofür brauch ich diese drei obenstehenden, initialisierten variablen
damit du zb bei clipped[i][X] bzw. clipped[i][Y] verständlicher zuweisen kannst

i gibt die laufvariable an und X bzw Y ob du nun die X-koordinate speicherst oder die Y-koordinate ;)

lg,
roman