PDA

View Full Version : Objektkoordinaten, Welkoordinaten


Westley
09-11-2002, 18:15
Wenn ich das richtig verstehe sind die Objektkoordinaten in vertexTable. Was sind aber die Weltkoordinaten, und wie berechne ich diese?
Danke für Aufklärung!:)

gck
10-11-2002, 16:24
Objektkoordinaten sind lokale Koordinaten, deren Ursprung (meistens) im Mittelpunkt der Objekte liegt...

Wenn du eine Instanz eines Objekts in dein Weltkoordinatensystem setzen willst, machst du das mittels Translation des Mittelpunkts an einen geeigneten Platz im Weltkoord.sys., gegebenenfalls ist auch eine Rotation oder Scaling sinnvoll...

"Geeignet" ist hier natürlich ein Platz vor der "Weltkamera", damit was im Bild ist...

Wenn du keine Viewing Transformation machst (ist ja optional), ist die "Weltkamera" im Urpsprung der Weltkoordinaten (0,0,0) und blickt entlang der positiven Z-Achse des Weltkoord.sys., Up-Vector ist natürlich die pos. Y-Achse und der dritte Vector ist die pos. X-Achse...

eiszapfen2000
10-11-2002, 17:09
Ist das jetzt so gemeint, dass ich nur den Mittelpunkt des Objekts transformieren muss, oder alle Punkte? Und wo nehm ich den Mittelpunkt her?

gck
10-11-2002, 17:38
Damit meint man implizit natürlich alle Punkte...

Du musst dir das so vorstellen: ich geb dir einen Ball in die Hand und sag dir: mach eine Translation mit diesem Ball, sodass der Mittelpunkt des Balls über deinem Kopf ist: jetzt wirst du natürlich den ganzen Ball über deinen Kopf halten müssen, denn den Mittelpunkt alleine wär ja schwierig...

Der "Mittelpunkt" eines Objekts ist nur lose definiert und kann bei komplizierten Objekten nicht wirklich berechnet werden... z.b. ist bei den meisten atoff files der Ursprung der Objektkoordinaten nicht ganz genau im Mittelpunkt, das wirst du dann vorallem bei den Rotationsoperationen erkennen, weil das Objekt nicht wirklich im seinen Mittelpunkt rotiert, sondern ein "bisserl" verwackelt...

Definitionsversuch: Wenn eine perfekte Kugel in Objektkoordinaten gegeben ist und nach einem "uniform scaling" in Objektkoordinaten die Kugel immer noch eine perfekte Kugel ist, dann ist der Ursprung der Objektkoordinaten im Mittelpunkt der Kugel... so ca. ist das zu verstehen...

eiszapfen2000
10-11-2002, 17:52
Also: die einzelne Vertices der Objekte sind in vertexTable gespeichert, d.h ich muß jede Spalte dieses Arrays transformieren. Nur bring ich keine gscheite Matrix zusammen, die mir sozusagen den Mittelpunkt des Objekts vor die Weltkamera bringt. Die befindet sich ja im Punkt(0,0,0), und schaut in die Richtung der positiven z-Achse, d.h ich setze den Mittelpunkt des Objekts an die Stelle(0,0,eine positive Zahl), den Mittelpunkt zu verschieben wäre das einfachste, lässt der sich vielleicht berechnen, weil ich finde keine Matrix alle Punkte des Objekts an diese Stelle(0,0, irgendeine positive Zahl) zu bringen

gck
11-11-2002, 15:17
befrei dich bitte von dem Gedanken eines wohldefinierten Mittelpunkts!!! Den gibt es nicht... Der Mittelpunkt ist nur eine "Denkhilfe"..

Such dir einfach passende Koordinaten, wo du den "gedachten" Mittelpunkt deines Objekts gern hättest, mach damit eine Translationsmatrix und hau jeden Punkt des Objekt durch...

Wenn du alle Punkte translatierst (<- gibts das Wort?), dann translatierst du ja auch implizit den Mittelpunkt, weil der ja durch die anderen Punkte überhaupt erst entstehen kann...

nexus
17-11-2002, 00:25
in vertexTable sind ja die Koordinaten in zailen, nicht spalten gespeichert:
vertexTable = new double[anzVertex][3];