next up previous contents index
Next: Drawing the Network Up: 3D-Display Implementation Previous: Contents of the

Global Data Types and Variables

   

All global data types and constants are declared in the module d3_global.h. The basic data types are

 
 typedef float vector[4] 
					 the definition of a vector

typedef float matrix[4][4] the definition of a matrix

typedef vector cube[9] the corner points of a cube (unit),

as well as the center

The following data type is used for the z-buffer algorithm of the unit surfaces:

typedef struct {
    int n;
    int mask;
    vector vert[4];
} d3_polygon_type;

The following data type is used for the values that can be represented by a unit:

typedef struct {
     int size;
     int color;
     int top_label;
     int bottom_label;
} d3_unit_mode_type;

The fields may each contain one of the constants: activation_on, init_act_on, output_on, bias_on, name_on, number_on, zvalue_on or nothing_on. The light source is described by the following declaration:

typedef struct {
    int    shade_mode;
    vector position;
    float  Ia, Ka, Ip, Kd;
} d3_light_type;

The whole status of the network display is contained in:

typedef struct {
    vector trans_vec, rot_vec, scale_vec;
    vector trans_step, rot_step, scale_step;
    vector viewpoint;
    float unit_aspect;
    float link_scale;
    float pos_link_trigger;  
    float neg_link_trigger;  
    int font;
    int projection_mode;
    int color_mode;
    int link_mode;
    d3_unit_mode_type unit_mode;
    d3_light_type light;
} d3_state_type;

  The global variables are located in the module d3_global.c. Most of them are initialized with default values.

The variables

Display *d3_display;
Window  d3_window;
GC      d3_gc;
int     d3_screen;

address the display window of Xlib (the data types Display, Window and GC are declared in Xlib).

int d3_displayXsize;
int d3_displayYsize;

contain the current size of the display window.

bool d3_displayIsReady;
bool d3_controlIsReady;

specify, whether the display window and the control panel are created.

bool d3_freeze;

specifies, whether updates are possible in the display window.

int d3_fontXsize;
int d3_fontYsize;

specify the size of the current character set used to label the units and links.

int d3_numberWidth;
int d3_shortNumberWidth;

specify the width of float and short int in the X Window dialogue widgets.

struct TransTable *d3_xyTransTable;

is a pointer to the 2D 3D translation table. The table itself is declared in the kernel.

int d3_transOffset;

specifies the offset for zero in the table. This is necessary, since C does not allow negative indices.

d3_state_type d3_state;

contains the status of the network display (see d3_state_type)

cube d3_e_cube;

contains the corner points of the standard cube. The cube is moved by the vector (-0.5, -0.5, -0.5) to be centered in the coordinate system.

int d3_cube_lines[12][2];

contains the twelve edges of a cube. The numbers are used as indices to d3_e_cube.

int d3_vertex_index[6][4];

contains the six planes of a cube. The numbers are also used as indices to d3_e_cube



next up previous contents index
Next: Drawing the Network Up: 3D-Display Implementation Previous: Contents of the



Niels Mache
Wed May 17 11:23:58 MET DST 1995