Objekt über einem anderen Objekt



  • Ich habe zwei Objekte die übereinander liegen.
    Nach diesem Prinzip. Beide Objekte werden jeweils von der unteren linken Ecke gezeichnet. Das zweite Objekte wird dabei von den Werten des unteren gezeichnet. Also OPosX = UPosX und OPosY = UPosY + UHöhe
    jetzt habe ich zwei Probleme:
    Das erste:

    22222
    22222
    11111
    11111

    Jetzt möchte ich die Objekte mit Hilfe von glRotatef() rotieren lassen. Wenn ich das jetzt jedoch tuhe, dann rotiert er zwar beide Objekte nur die liegen nicht mehr übereinander. Das sieht dann in etwa so aus.

    2222
    -2222
    1111
    -1111

    (Die - Zeichen sollen Platzhalter sein)
    Dabei sollen die beiden eine Linie bilden. Sprich das obere Objekt müsste siene X-Position verändern. Nur wie berechne ich diesen Unterschied?

    Jetzt möchte ich außerdem mit glScalef() die Objekte scallieren. Nur wenn ich das tuhe, dann verändert er zwar bei beiden die größe aber er macht immer einen riesigen Abstand zwischen den beiden. Das hängt dann wohl damit zusammen, das er bei der Berechnung der Y-Position die Y-Position des untern + die Höhe nimmt.

    Habt ihr eine Ahnung wie ich beide Probleme lösen kann?



  • Du verschiebst die Objekte zunaechst so, dass sie einen gemeinsamen Nullpunkt (und damit gemeinsames Rotations- & Skalierungszentrum) haben.



  • du könntest das eine als vererbtes objekt des anderen machen und dann in dem parent-objekt eine rotate-methode erstellen, die automatisch auch alle ihrer kinder mitrotiert. Also quasi ein einfacher Scene-graph


Log in to reply