PDA

View Full Version : [FRAGE] - speichern in clipped[][]


Cheez
20-10-2004, 15:43
kann mir jemand erklären wie man folgenden C code in java implemnetiert:

pOut[*cnt]=iPt; (*cnt)++

??
danke

8-Bit
20-10-2004, 16:05
clipped[cnt][X] = iPt.x;
clipped[cnt][Y] = iPt.y;
cnt++;


die z koordinaten musst du noch in depth ablegen

segfault
20-10-2004, 16:08
kann mir jemand erklären wie man folgenden C code in java implemnetiert:

pOut[*cnt]=iPt; (*cnt)++

??
danke

clipped[cnt][X] = iPt.x;
clipped[cnt][Y] = iPt.y;
cnt++;

vertigo
21-10-2004, 16:06
clipped[cnt][X] = iPt.x;
clipped[cnt][Y] = iPt.y;


nach langem herumprobieren und screenshots-übereinander-legen kann ich dir sagen dass bei dem code ein rundungsfehler entsteht. is zwar nur ein pixel und wahrscheinlich total wurscht, aber ganz richtig wäre:

clipped[cnt][X] = (int) Math.round(iPt.x);
clipped[cnt][Y] = (int) Math.round(iPt.y);

major
21-10-2004, 17:15
hallo.

kann mir jemand erklaeren was genau in diesem array steht.
Ich versteh den Hintergrund dieses Arrays nicht.
Wozu sind [X] und [Y]?

Kann mir jemand ein Beispiel mit Werten fuer clipped geben?

danke
lg
major

burny
21-10-2004, 17:16
kann mir jemand erklären wie man folgenden C code in java implemnetiert:

pOut[*cnt]=iPt; (*cnt)++

??
danke

ich hab das so gelöst:
Vector clippedPoints = new Vector();
...
clippedPoints.add(point); // point enthält alle koordinaten
...
for (int i=0; i < clippedPoints.size(); i++) {
clipped[i][0] = clippedPoints(i).x;
clipped[i][1] = clippedPoints(i).y;
depth[i] = clippedPoints(i).z;
}
cnt = clippedPoints.size();

vielleicht nicht die schnellste lösung, aber ich glaub dafür recht sauber.

burny
21-10-2004, 17:29
hallo.

kann mir jemand erklaeren was genau in diesem array steht.
Ich versteh den Hintergrund dieses Arrays nicht.
Wozu sind [X] und [Y]?

Kann mir jemand ein Beispiel mit Werten fuer clipped geben?

danke
lg
major

bei clipped[i][X|Y] gibt dir die erste dimension den punkt an (z.b. i=7 => punkt 8), und die zweite dimension die x-y-koordinaten.
wenn du dir die definition anschaust:
clipped = new int[2 * unclipped + 1][2] // erste dimension hab ich nimma im kopf
erkennst du dass recht gut.
da hier nur für 2 koordinaten platz ist (x, y) muss die dritte (z) in depth[i] gespeichert werden

8-Bit
21-10-2004, 19:16
ich hab das so gelöst:
Vector clippedPoints = new Vector();
...
clippedPoints.add(point); // point enthält alle koordinaten
...
for (int i=0; i < clippedPoints.size(); i++) {
clipped[i][0] = clippedPoints(i).x;
clipped[i][1] = clippedPoints(i).y;
depth[i] = clippedPoints(i).z;
}
cnt = clippedPoints.size();

vielleicht nicht die schnellste lösung, aber ich glaub dafür recht sauber.

das ist ja voll unnötig, dass du die Koordinaten zuerst in einen Vector reinspeicherst, und gleich darauf in das Array oder?