Rubik Cube, OpenGL und C



  • Hallo,
    ich bin nicht ganz sicher ob hier der richtige Ort ist, aber vielleicht kann mir ja jemand helfen.

    Ich habe vor (bzw. muss) den Rubik Cube (zauberwürfel, etc.) per OpenGL und C umzusetzen. Mir fehlt allerdings bis jetzt der richtige Punkt um überhaupt einzusteigen. Sprich, ich habe im Moment noch keine wirklich tolle Idee, wie ich den Würfel in C speichern soll. Hat hier jemand schon einmal so einen Rubik Cube programmiert? Vielleicht hat auch jemand ein tolles Tutorial gesehen. Über jegliche Hilfe wäre ich sehr dankbar. Vielen Dank.
    MfG
    Matze



  • Hallo,

    im Grunde ist das garnicht so schwer.
    Erstmal brauchst du einen kleinen Würfel (z.B. aus 8 Vertices). Diesen Würfel renderst du dann in jedem Frame mit jeweils entsprechender World(View)Matrix so oft, wie es der gesamte Zauberwürfel erfordert (bei nem Zauberwürfel mit 3 Würfeln auf jeder Kante also 3³=27 mal). Die Rotation einer Würfelreihe oder Würfelspalte löst du einfach, in dem du in die WorldTransformation der betroffenen Würfel eine Rotation um die jeweilige Achse mit aufnimmst.

    Die Details müssten dir automatisch klar werden, wenn du dich mit OpenGL beschäftigst.



  • ein fertiger kleinner würfel ist aus gluax zu erhalten.



  • Danke erstmal für die Antworten. Hilft mir jetzt leider noch nicht soooo viel weiter. Habe mich vielleicht auch etwas blöd ausgedrückt. Mir gehts nicht drum wie ich den Würfel in OpenGL darstelle, vielmehr wie ich den Würfel in C abbilde!!!! Sprich, wie soll meine Datenstruktur aussehen? Wie organisiere ich das am besten mit den Ebenen und und und ...

    Also wenn da noch jemand tolle Ideen oder Tutorial hat, wäre ich sehr dankbar.
    Grüße
    Matze



  • #define Farbe unsigned int

    struct Block {
    Farbe links;
    Farbe rechts;
    Farbe oben;
    Farbe unten;
    Farbe vorne;
    Farbe hinten; }

    Block Wuerfel[3][3][3]; oder Block ***Wuerfel = malloc(3 * 3 * ... 😃 👍



  • Sgt. Nukem schrieb:

    #define Farbe unsigned int

    struct Block {
    Farbe links;
    Farbe rechts;
    Farbe oben;
    Farbe unten;
    Farbe vorne;
    Farbe hinten; }

    Block Wuerfel[3][3][3]; oder Block ***Wuerfel = malloc(3 * 3 * ... 😃 👍

    Kein Kommentar

    @OP: Wo ist denn noch dein Problem? Wenn du dich nicht mit OpenGL beschäftigt hast, dann schaffst du es eh nicht. Wenn du dich mal damit beschäftigen würdest, dann wüsstest du automatisch wie die Datenstruktur aussehen müsste. Wie rapso bereits sagte, gibts sowieso fertige Funktionen, mit deren Hilfe du spielend leicht einen würfel rendern kannst:
    http://pyopengl.sourceforge.net/documentation/manual/glutSolidCube.3GLUT.html
    Und das mit den "Ebenen" sind einfach nur verschiedene Translationen/Rotationen.



  • interpreter schrieb:

    Sgt. Nukem schrieb:

    #define Farbe unsigned int

    struct Block {
    Farbe links;
    Farbe rechts;
    Farbe oben;
    Farbe unten;
    Farbe vorne;
    Farbe hinten; }

    Block Wuerfel[3][3][3]; oder Block ***Wuerfel = malloc(3 * 3 * ... 😃 👍

    Kein Kommentar

    Das war doch schon einer... 😃 👍



  • Ok, Danke für die Hinweise ...

    und auch wenn ich jetzt gleich total in ungnade falle, falls jemand ein tutorial zum rubik cube hat, würde ich mich sehr freuen über einen link. ich bin nunmal anfänger ... sowas solls ja auch geben...


Anmelden zum Antworten