°_° another ogl problem (rotation)
-
bei folgendem code
[konstrukt]glTranslatef(x,y,z) glRotatef(1.0f,1.0f,0.0f,0.0f); glBegin(GL_QUADS); glVertex3f(0.0f,0.0f,0); glVertex3f(0.0f+1.0f,0.0f,0); glVertex3f(0.0f+1.0f,0.0f+1.0f,0); glVertex3f(0.0f,0.0f+1.0f,0); glEnd();[/konstrukt]
rotiert ein quader um die x achse (jeweils 1 grad pro durchlauf dieses parts)
jedoch rotiert er nicht wie gewollt um seine eigene achse, sondern um eine die an der underen kante des quaders ist.
nun die frage: wie verschiebe ich den achsenmittelpunkt des quaders?
-
mmh, da gibst verschiede moeglichkeiten!
1. Schau mal ins redbook um die transformation (rot,scale,trans) zu verstehen, dann wurde sich das schon eruebrigen.
2. Du zeichnest dein quad von einer kante aus, also wird auch da rotated.
-> also entweder zeichen dein quad von der mitte aus, -1,-1 / 1,-1 / 1,1 / -1,1,
oder:
fuege ein weiteres gltranslate() nach dem rot ein, um den drehpunkt in die mitte des quads zu verschieben.
-
Hi!
Achje, soviel zum selbst denken...
Was sollen denn diese Konstrukte? Sieht das deiner Meinung nach besonders cool aus?0.0f+1,0Und was zur Hölle ist ein Quad? Meinst du einen Quader?

Ganz ehrlich, les dich erstmal gründlich in die einzelnen Funktionsbeschreibungen ein!grüße
-
die dinger heissen nunmal GL_QUADS
es gibt viele möglichkeiten, wie man ein rechteck zeichnen kann und ein "quad" ist halt eine davon.und die einfachste lösung ist tatsächlich die, dass man das rechteck um den mittelpunkt des koordinatensystems herum zeichnet. dadurch spart man sich paar translationen.
-
Du musst mit translatef den Mittelpunkt einfach nur auf die mitte deines Quads packen ... rotieren und dann den Mittelpunkt wieder zurück verschieben...
Hab ich da irgend nen Problem übersehen ?also anstatt
glTranslatef(x,y,z)
müsste da sowas stehen
glTranslatef(x+width/2,y+height/2,z)edit: Warum hab ich jetzt den Post von thordk überlesen?

-
Konstrukte-Hasser schrieb:
Hi!
Achje, soviel zum selbst denken...
Was sollen denn diese Konstrukte? Sieht das deiner Meinung nach besonders cool aus?0.0f+1,01.0 is so gesehen die breite. wenn ich auf 0.0f+1.0f schaue fällt mir leichter auf dass damit der punkt an dem das dreieck gezeichnet wird gleichzeitig für die länge steht. sry wenn ich damit deinen augen geschadet habe
der typ der konstrukte hasst schrieb:
Und was zur Hölle ist ein Quad? Meinst du einen Quader?

Ganz ehrlich, les dich erstmal gründlich in die einzelnen Funktionsbeschreibungen ein!grüße
GL_QUADS. und ich geh noch weiter die
GL_TRIANGLES nenne ich auch nicht dreieck sondern.. wer hätte es gedacht: "TRIANGLE" !!ich zeichne jetzt den quader von der mitte aus, ist wohl die einfachste lösung
-
GL_QUADS. und ich geh noch weiter die
GL_TRIANGLES nenne ich auch nicht dreieck sondern.. wer hätte es gedacht: "TRIANGLE" !!übersetzen("Triangle") == "Dreieck":p
-
DEvent schrieb:
GL_QUADS. und ich geh noch weiter die
GL_TRIANGLES nenne ich auch nicht dreieck sondern.. wer hätte es gedacht: "TRIANGLE" !!übersetzen("Triangle") == "Dreieck":p
fixed:
std::string dreieck=uebersetzen("Triangle"); std::cout<<dreieck;

-
Hallo TravisG:
Erstmal möchte ich festhalten das ich im Allgemeinen nichts gegen Konstrukte habe. Aber etwas wie 0.0f+1.0f ist sowas von hässlich, ich kenne niemanden (außer dir) der das macht.
Naja, wenns dir was bringt dann will ich dich nicht davon abhalten.grüße
-
David_pb schrieb:
Hallo TravisG:
Erstmal möchte ich festhalten das ich im Allgemeinen nichts gegen Konstrukte habe. Aber etwas wie 0.0f+1.0f ist sowas von hässlich, ich kenne niemanden (außer dir) der das macht.
Naja, wenns dir was bringt dann will ich dich nicht davon abhalten.grüße
naja ich habs jetzt auch eingesehen. ehrlich gesagt kam das zustande weil ich vorher die koordinaten der einzelnen punkte durch die positionsvariablen innerhalb der klasse bestimmt hatte. da stand dann eben m_x+1.0f etc. dann hab ich jedoch gemerkt, dass die koordinaten so zu bestimmeen eigentlichen schwachsinn ist und ich änderte das m_x in 0.0f um ... und ließ das +1.0f dort
