Zylinder Mesh kaputt

Hey Leute.

Ich wollte gerade einen Zylinder mit Opengl rendern. Dazu schrieb ich mir folgenden Algorithmus:

    for(int xDivision = 0; xDivision < xDivisionCount; xDivision++){
        float line[] = getVboLine(xDivision, yDivision, radius, height, xDivisionCount, yDivisionCount);
        string.append(line[0] + ", " + line[1] + ", " + line[2] + ", " + line[3] + ", " + line[4] + ", ");
    }
}

public float[] getVboLine(int xDivision, int yDivision, float radius, float height, int xDivisionCount, int yDivisionCount){
    float xDegrees = 360.0f / xDivisionCount * xDivision;
    float xRadian = (float) Math.toRadians(xDegrees);
    float x = (float) Math.sin(xRadian) * radius;
    float z = (float) Math.cos(xRadian) * radius;
    float y = (float) yDivision * (height / (yDivisionCount - 1));
    float s = xDegrees * (1.0f / 360.0f);
    float t = yDivision * (1.0f / (yDivisionCount - 1));
    return new float[]{
            x, y, z, s, t
    };
}```

Das Problem ist, das bei bestimmten inputs für xDivisionCount und yDivisionCount einfach ein Punkt im Mesh fehlt. Das sieht dann so aus, hier parameter: 200, 100:



Wenn ich das ganze mit Triangle Strips render ist halt ein loch im objekt... 
woher kommt das? Gibts nen fehler im code?

Ach ja: Ich hab das ganze vor ein paar stunden auf SO gepostet, aber dort scheint niemand was zu wissen... [link](http://stackoverflow.com/questions/26086402/strange-thing-with-cylinder-algorithm?noredirect=1#comment40876082_26086402)

das Bild ist der Anfang, aber danach muss doch nicht gleich das Forum kommen,
wenn die Methode getVboLine() und der StringBuffer/ StringBuilder? ‚string‘ etwas damit zu tun hat,
dann wäre etwas Untersuchung dort angebracht

„The Problem is i can’t really check this, because with small values for the divisions the doesn’t appear…“ im Link klingt leicht mysteriös,
was genau kommt denn heraus an Beispielwerten,
wie viele Werte gibt es, wie hoch ist yDivisionCount, xDivisionCount?

ist die Übertragung ins Bild zu überschauen oder beliebig automatisiert fortgetragen,
kannst du abzählen, durch Farben oder kleine Modifikationen herausfinden, welche Stelle im Array/ string genau der fehlende Punkt ist?

setze z.B. an Position 50 testweise statt der errechneten Werte 0 ein oder hohe Werte oder was auch immer,
bekommst du dann eine neue Lücke oder geht schlicht alles kaputt?
teste auch kleine Abweichungen, bisschen was verschoben?

taste dich dann heran so dass dieser Fehler letztlich ein Punkt daneben liegt (auch testen ob ein Punkt danach, nicht dass du noch in falscher Zeile bist und 20 Index-Positionen entfernt) usw.

dann untersuche den gefundenen konkreten Punkt, im Vergleich zum vorherigen und nachfolgenden, gib deren Werte aus


poste auch ruhig alle benötigten Variablen, nur radius, height, xDivisionCount, yDivisionCount
(edit: ach ja, du schreibst „Das sieht dann so aus, hier parameter: 200, 100“, na bringt dann wohl nicht genug)

habe mir gerade den Code mit Werten 1,1,36,36 angeschaut,
if (Math.abs(x) > 1 || Math.abs(y) > 1 || Math.abs(z) > 1) System.out.println("large values");
springt nicht an, aber manche kleine Werte sind „1.1924881E-8“, so geht das in den string, kann die Verarbeitung damit etwas anfangen?
mit static DecimalFormat df = new DecimalFormat("0.0#####",new DecimalFormatSymbols(Locale.ENGLISH)); käme „0.0“

s und t scheinen nicht so große Bedeutung zu haben, behaupte ich einfach mal so, setze die testweise auf irgendeinen mittleren Wert,
bleibt der Anzeigefehler? wenn ja dann unerheblich, wenn Fehler weg, dann diese umso interessanter :wink: , Pech wäre nicht mehr zu untersuchendes Bild/ Zustand

usw., einfache Untersuchungen

edit: ein Weg ist auch immer Reduzierung, was ist bei 5,5, überschaubarer Punktanzahl?
ruhig einiges einzeln ausprobieren, ob bei einer niedrigen Kombination auch schon Fehler, dort könntest du alle Punkte ausgeben