Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das würde mich jetzt auch nochmal interessieren. Wenn hier mal jemand die rechnung hinschreibt, wäre das klatt ne Sache ums ins Wiki zu stellen. (Brauch man ja z.B. beim Idealen rauszoomen.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
am einfachsten zu erklären ist das, wenn man weis, wie die projektionsmatrix erzeugt wird. Etwa ob ihr glFrustum verwendet - das ist dann auch gar nicht so schwer zu erklären und nur ein linearer Zusammenhang. Dann verratet mal, für welche Art Projektion ihr euch eine Erklärung wünscht.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die orthogonale bitte... ne scherz...
Die normale Perspektivprojektion wär Cool. Wenn dus für alle weißt dann schreibs ruhig auch noch für Parallelprojektion und was du sonst noch weist (Wie macht man eigentlich ne Parallelprojektion in OpenGL?)
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Habe mich entschlossen, ein Bildchen zu malen. Hoffe ihr könnt meine Schrift lesen Zwei Bildchen: Eines als Schrägbild, das andere Flach von Oben. Die bekannten Frustum Parameter sind: left, right, top, bottom und d als Abstand der near Clipping Plane. x ist Entfernung. Die Maximalen ausdehnungen sind dann left(x), right(x), top und bottom entsprechend. So sind schnell die maximalen Koordinaten gefunden.
Das ganze Bezieht sich natürlich auf die Koordinaten, die entstehen, wenn man ein Vertex mit der Modelviewmatrix multipliziert hat, aber wenn ich das richtig interpretiere, sit es anders gar nicht gewünscht.
EDIT:
Ach ja, die gluProjection Parameter muss man natürlich für glFrustum umrechnen, wenn man es denn braucht: Aus dem Stereo Tutorial:
Code:
var
SVerh, ROeffnung :Single;
Breitenhaelfte, NeardZielweite :Single;
left, right, top, bottom :Single;
procedure CalcValues;
begin
ROeffnung :=DegToRad(Oeffnungswinkel /2);
Breitenhaelfte := zNear *Tan(ROeffnung);
NeardZielweite := zNear / Zielweite;
end;
begin
glViewport(0,0, ClientWidth, ClientHeight);
//Projektionsmatrix resetten
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//Perspektivische Darstellung
SVerh := ClientWidth/ClientHeight;
CalcValues;
left :=- SVerh * Breitenhaelfte;
right := SVerh * Breitenhaelfte;
top := Breitenhaelfte;
bottom :=-Breitenhaelfte;
glFrustum(left, right, bottom, top, zNear, zFar);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
end;
...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
nein, ich wollte nur nicht das schlafengehen hinauszögern. und ja, ich benutze lineale, aber gelegentlich auch keines und das fällt dann meist gar net auf
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.