Zuerst mal Hallo Zusammen! Eine Coole Site mit Forum und jede Menge Motivation für Delphi und OpenGL hab ich hier gefunden Hab mich jetzt ein Bischen eingearbeitet und bin an meinem 1ten OpenGl-Programm dran. Nachdem ich es geschafft habe einen Kreis zu machen *juhu* musste ich leider feststellen das der wohl noch nicht ganz so korrekt ist, hier der Code:
********************************************************************************
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Farb und Tiefenpuffer löschen
glLoadIdentity; // World Matrix zurücksetzen
gltranslate(0,0,-90);
glrotate(rotx,1,0,0); //drehung um die x-achse
glrotate(roty,0,1,0); //drehung um die y-achse
// glrotate(rotz,0,0,1); //drehung um die y-achse
r:= 20; //Radius definieren
i:=0; //Laufvariable
n:=r*8; //Auflösung des Kreises (n zu klein => Kreis hat Lücken)
x0:=0; //Kreismittelpunkverschiebung in x
y0:=0; //Kreismittelpunkverschiebung in y
glBegin(gl_line_loop);
while i < n do
begin
a:=2*PI*i/n;
x:=x0 + r * cos(a);
y:=y0 + r * sin(a);
glColor3f(0, 0, 1);
glVertex2f(x,y);
i:=i+1;
end;
glEnd();
SwapBuffers(form1.myDC);
end; //scene ausgeben
********************************************************************************
Wenn ich jetzt den Kreis darstelle, krieg ich ihn komplett gezeichnet.Wenn ich ihn nun mit glrotate drehe schneidet es mir ab 30° einen Teil vom Kreis Weg, egal ob um die x- oder y-Achse gedreht wird
kann mir jemand sagen ob ich nen Falschen Kreis zeichne oder was da fehlt ?? anbei noch das prog
Danke für eure Hilfe
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
mit gluPerspective(45.0, Width/Height, 1, 100);hat ja nicht geklappt , dafür reichte schon:
gluPerspective(45.0, Width/Height, 1, 110);
zFar war also zu wenig?
Kann mir jemand sagen was für Einheiten das denn sind? Ich hab ja nen Radius von 20, also D=40. Wie kann kann ich mir das Vorstellen?
Einfach zwei Flächen die dem Betrachter die Sicht einschränken/wegschneiden?
Also Z-Schnittfläche entspricht einer xy-Ebene?
hab ich mit gltranslate(0,0,-90); den Kreis um -90 in Z nach hinten verschoben, also der Mittelpunkt ist in (0,0,-90)?
Eigentlich möcht ich den Kreis sauber auf der XY-Ebene haben (Koordinaten des Mittelpunkts: x0,y0,0) da später noch mehr auf dieselbe Ebene kommt.
Mit welchen Befehlen soll ich das am besten machen? z.B. glScale?
Aus wiki.delphigl.com:
*******************************************************************************************************************
gluPerspective(fovy, aspect, zNear, zFar : glDouble);
fovy Gibt das Betrachtungsfeld (FOV) in Grad, entlang der Y-Achse, an.
aspect Gibt den Aspektratio, der das Betrachtungsfeld entlang der X-Achse setzt. Der Aspektratio ist das Verhältnis von Höhe zu Breite.
zNear Entfernung vom betrachter zur nahen Z-Schnittfläche (muss positiv sein).
zFar Entfernung vom betrachter zur fernen Z-Schnittfläche (muss positiv sein).
Registriert: Di Dez 02, 2003 12:47 Beiträge: 300 Wohnort: Marburg
Die Ebenen zfar und znear sind halt paralel zu deiner "Kameralinse" (Habs nicht so mit fremdwörtern)
Mit den glrotate und gltranslate und glskale befehlen muss mann einfach ein bisschen rumprobieren ums zu verstehen...
kommt eben auf die reinfolge drauf an und darauf wie du sie verwenden willst Du rufst hallt die befehle auf, um dass Korordinatensystem von der Kamera weg zu schieben, zu drehen oder seine Größe zu ändern. (die kamera kannste vorher auch noch verscheiben musste aber nicht ist ja eigentlch eh das selbe)
Wenn du dann zeichnest, zeichnest du in dem verschobenen system.
Wenn du es dann woanders hin haben willst, rufst du einfach glLoadIdentity; auf und verschiebst wieder neu. Die bereits gezeichneten sachen bleiben dann wo sie sind. und die sachen, die du neu zeichest kommen an die neue Position.
Im Prinzip geht es einfacher, wenn mann damit einfach rumprobiert (meine Meinung).
_________________ Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de
Mitglieder in diesem Forum: Bing [Bot] und 11 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.