#define G_DOUBLE static char rcsid[] = "$Id: cproto.c,v 1.1 1992/12/14 06:01:42 nakano Exp $"; /* * Test program for GLSC library * * C language version */ #include #include #define MAX (5000) #define MAX_X (40) #define MAX_Y (40) #define PI (3.1415926545) #define N (30) main () { char text[256]; int i, j; G_REAL x[MAX + 1], y[MAX + 1], a, dt, t; G_REAL array[MAX_X + 1][MAX_Y + 1], dx, dy, xx, yy; /* Initialization and definitions */ g_init ("Meta", 250.0, 160.0); g_device (G_BOTH); g_def_scale (0, 0.0, 1.0, 0.0, 1.0, 30.0, 70.0, 100.0, 72.0); g_def_scale (1, 0.0, 1.0, 0.0, 1.0, 30.0, 30.0, 100.0, 100.0); g_def_scale (2, -1.0, 1.0, -1.0, 1.0, 20.0, 30.0, 80.0, 80.0); g_def_scale (3, 0.0, N * PI, -1.0, 1.0, 110.0, 30.0, 130.0, 80.0); g_def_scale (4, -1.0, 1.0, -1.0, 1.0, 30.0, 30.0, 100.0, 100.0); g_def_line (0, G_BLACK, 0, G_LINE_SOLID); g_def_line (1, G_RED, 0, G_LINE_SOLID); g_def_line (2, G_GREEN, 0, G_LINE_DASHED); g_def_line (3, G_BLUE, 0, G_LINE_SOLID); g_def_text (0, G_BLACK, G_FONT_TIMES_8); g_def_text (1, G_RED, G_FONT_TIMES_12); g_def_text (2, G_GREEN, G_FONT_TIMES_18); g_def_text (3, G_BLUE, G_FONT_TIMES_24); /* Hinomaru and text */ g_cls (); for (i = 0; i < 4; i ++) { g_sel_text (i); g_text (30.0, 20.0 + 10.0 * i, "Test Hinomaru no Hata."); } g_sel_scale (0); g_area_color (G_WHITE); g_box (0.0, 1.0, 0.0, 1.0, G_YES, G_YES); g_area_color (G_RED); g_circle (0.5, 0.5, 0.18, G_NO, G_YES); for (i = 0; i < 10; i ++) { a = i * 0.2; sprintf (text, "a = %f", a); g_text (160.0, 20.0 + 10.0 * i, text); } g_sleep (3.0); /* Various lines and boxes */ g_cls (); g_sel_scale (1); g_box (0.0, 1.0, 0.0, 1.0, G_YES, G_NO); g_area_color (G_GREEN); g_box (0.0, 0.5, 0.5, 1.0, G_YES, G_YES); g_area_color (G_RED); g_box (0.5, 1.0, 0.0, 0.5, G_YES, G_YES); g_area_color (G_BLUE); g_box (0.5, 1.0, 0.5, 1.0, G_YES, G_YES); for (i = 0; i < 8; i ++) { g_line_width (2 * (i + 1)); g_line_type (i); g_line_color (i); yy = 0.1 + i / 7.0 * 0.8; g_move (0.1, yy); g_plot (0.9, yy); } for (i = 0; i < 8; i ++) { g_line_width (2 * (7 - i + 1)); g_line_type (7 - i); g_line_color (7 - i); xx = 0.1 + (7 - i) / 7.0 * 0.8; g_move (xx, 0.1); g_plot (xx, 0.9); } g_sleep (3.0); /* Graphs */ a = -0.04; dt = N * PI / MAX; for (i = 0; i <= MAX; i ++) { t = dt * i; x[i] = exp (a * t) * cos (t); y[i] = exp (a * t) * sin (t); } g_cls (); g_sel_scale (2); g_sel_line (0); g_box (-1.0, 1.0, -1.0, 1.0, G_YES, G_NO); g_move (-1.0, 0.0); g_plot (1.0, 0.0); g_move (0.0, -1.0); g_plot (0.0, 1.0); g_sel_line (1); g_polyline (x, y, MAX + 1); g_sel_scale (3); g_sel_line (0); g_box (0.0, N * PI, -1.0, 1.0, G_YES, G_NO); g_move (0.0, 0.0); g_plot (N * PI, 0.0); g_sel_line (2); g_data_plot (0.0, N * PI, x, MAX + 1); g_sel_line (3); g_data_plot (0.0, N * PI, y, MAX + 1); g_marker_size (5); g_marker_color (G_RED); g_marker_type (2); for (i = 0; i <= 10; i ++) { g_marker (i * dt * (MAX / 10), (x[i * (MAX / 10)] + y[i * (MAX / 10)]) / 2); } g_sleep (3.0); /* Markers */ dt = 2 * PI / 6; for (i = 0; i < 6; i ++) { t = dt * i; x[i] = cos (t); y[i] = sin (t); } g_cls (); g_sel_scale (4); g_area_color (G_WHITE); g_line_width (3); g_line_color (G_RED); g_circle (0.0, 0.0, 1.2, G_YES, G_YES); g_line_color (G_CYAN); g_polygon (x, y, 6, G_YES, G_YES); g_marker_color (G_BLACK); g_marker_size (10); for (i = -4; i <= 4; i ++) { g_marker_type (i); g_marker (0.5 * cos (2 * PI / 9 * i), 0.5 * sin (2 * PI / 9 * i)); g_marker (cos (2 * PI / 9 * i), sin (2 * PI / 9 * i)); } g_sleep (3.0); /* Contour lines and bird eye's view */ dx = PI * 4 / MAX_X; dy = PI * 3 / MAX_Y; for (j = 0; j <= MAX_Y; j ++) { yy = dy * (j - MAX_Y / 2); for (i = 0; i <= MAX_X; i ++) { xx = dx * (i - MAX_X / 2); array[i][j] = sin (xx - 0.3) * cos (yy - 0.2); } } g_cls (); g_sel_scale (4); g_sel_line (0); g_line_width (1); g_box (-1.0, 1.0, -1.0, 1.0, G_YES, G_NO); for (i = 1; i < 7; i ++) { g_line_color (i); g_contln (-1.0, 1.0, -1.0, 1.0, (G_REAL *) array, MAX_X + 1, MAX_Y + 1, 0.32 * i - 1.12); } g_sleep (3.0); g_cls (); g_bird_view (1.0, 1.0, 0.4, -1.0, 1.0, 5.0, 25.0, 20.0, 20.0, 20.0, 150.0, 100.0, (G_REAL *) array, MAX_X + 1, MAX_Y + 1, 1); g_sleep (3.0); g_cls (); g_fake_bird_view (-1.0, 1.0, 0.8, 0.6, 20.0, 20.0, 150.0, 100.0, (G_REAL *) array, MAX_X + 1, MAX_Y + 1, 1); g_sleep (3.0); g_cls (); g_hidden (1.0, 1.0, 0.4, -1.0, 1.0, 5.0, 25.0, 20.0, 20.0, 20.0, 150.0, 100.0, (G_REAL *) array, MAX_X + 1, MAX_Y + 1, 1, G_SIDE_NONE, 2, 1); g_sleep (3.0); g_cls (); g_fake_hidden (-1.0, 1.0, 0.8, 0.6, 20.0, 20.0, 150.0, 100.0, (G_REAL *) array, MAX_X + 1, MAX_Y + 1, 1, G_SIDE_NONE, 2, 1); g_sleep (3.0); /* Termination */ g_term (); }