next up previous contents
Next: Defines Up: Globale Daten Previous: Globale Daten

 

Strukturen

point_struct

In dieser Struktur werden die Punktinformationen gespeichert.

struct point_struct
{
  MFLOAT x_world, y_world, z_world;
  struct point_data_struct *p;
  MINT flags;
  MINT Number_of_Polygons;
  struct polygon_struct **Polygons;`
};
x_world, y_world, z_world stellen die Punktkoordinaten im Weltsystem dar. p zeigt auf ein Datenfeld mit den Koordinaten im Beobachter- und im Bildschirmsystem (siehe point_data_struct). flags dient zur Markierung bestimmter Punkte (siehe Punkteflags). Number_of_Polygons ist gleich der Anzahl Polygone, die diesen Punkt enthalten. Polygons zeigt auf ein Datenfeld von Zeigern auf Polygonstrukturen polygon_struct. Diese Zeiger zeigen auf die Polygone, welche diesen Punkt enhalten.

 

point_data_struct

Diese Struktur enthält die Beobachter und Bildschirmkoordinaten eines Punktes. Diese Daten wurden aus der Punktstruktur gelöst, da sie von Bild zu Bild ändern. Sie können somit in einem Datenfeld zusammengefasst werden, dass dann parallelisiert werden könnte. Wären diese Daten nicht herausgelöst, müssten jedesmal alle Punktedaten kommuniziert werden, obwohl nicht alle geändert haben.

struct point_data_struct
{
  MFLOAT x_view, y_view, z_view;
  MFLOAT x_screen, y_screen;
};
x_view, y_view und z_view enthalten die Koordinaten im Bildschirmsystem. Sie werden durch transform berechnet (siehe 5.6.1). x_screen und y_screen enthalten die Koordinaten im Bildschirmsystem. Sie werden duch project berechnet (siehe 5.7.1).

polygon_struct

Die Struktur polygon_struct speichert die Polygoninformationen.

struct polygon_struct
{
  MINT Number_of_Points;
  struct point_struct **Points;
  MINT Old_Number_of_Points;
  struct point_struct **Old_Points;
  MINT RGB;
  MINT RGB_color;
  MINT flags;
  MFLOAT nx_world, ny_world, nz_world;
  MFLOAT sx_world, sy_world, sz_world;
  struct polygon_data_struct *p;
  MFLOAT radius;
};
Number_of_Points enthält die Anzahl Punkte eines Polygons; Points ist ein Zeiger auf ein Datenfeld mit Zeigern auf diese Punktstrukturen (point_struct). Old_Number_of_Points und Old_Points dienen dem Sichern dieser Strukturen. RGB  enthält die Farbe des Polygons, die auf dem Bildschirm erscheint; RGB_color ist die Grundfarbe des Polygons wie sie der Parser einliest. Dabei ist das MSB leer, gefolgt von blau, grün und rot als LSB. flags dient zur Markierung bestimmter Polygone (siehe Polygonflags). nx_world, ny_world und nz_world enthalten den Normalenvektor des Polygons in Weltkoordinaten. sx_world, sy_world und sz_world enthalten den Polygonschwerpunkt in Weltkoordinaten. radius enthält die maximale Distanz zwischen Schwerpunkt und den Randpunkten des Polygons. Diese Daten werden durch die Funktion des Moduls preprocess (siehe 5.4.1) berechnet.

polygon_data_struct

Damit auch die Transformation der Polygondaten (Normalenvektor und Schwerpunkt) effizient parallelisiert werden können, haben wir auch diese Daten in einem eigenen Datenfeld gespeichert.

struct polygon_data_struct
{
  MFLOAT nx_view, ny_view, nz_view;
  MFLOAT sx_view, sy_view, sz_view;
};
nx_view, ny_view und nz_view enthalten die Koordinaten des Normalenvektors im Beobachtersystem, sx_view, sy_view und sz_view enthalten die Koordinaten des Schwerpunktes im Beobachtersystem. Diese Daten werden durch die Funktion transform (siehe 5.6.1) berechnet.

view_struct

Die Transformation vom Welt- ins Beobachtersystem erfolgt mit einer 4x4 Matrix. Die Struktur view_struct enthält die notwendigen Daten.

struct view_struct
{
  MFLOAT Object_to_World[4][4];
  MFLOAT Object_to_World_begin[4][4];
  MFLOAT Distance_to_screen;
  MINT ok;
};
Object_to_World enthält die Tranformationsmatrix vom Weltsystem ins Beobachtersystem. Object_to_World_begin enthält die erste Transformationsmatrix, die aus den Angaben des Parsers berechnet wird. Alle weiteren Drehungen bauen dann auf dieser auf. Diese Matrix wird durch die Funktion getview (siehe 5.5.1) berechnet. Distance_to_screen enthält die Distanz vom Beobachter zum Bildschirm (siehe Abbildung 1.2).    
next up previous contents
Next: Defines Up: Globale Daten Previous: Globale Daten

Martin Frey
Tue Jun 17 13:29:20 MET DST 1997