/tags/rel-2.0.2/Examples/ocaml/shapes/example.c
# · C · 50 lines · 40 code · 9 blank · 1 comment · 11 complexity · 73f43eb85c2b16c9fc0b9f9401008a8a MD5 · raw file
- /* File : example.c */
- #include <stdio.h>
- #include "example.h"
- shape::~shape() { }
- bool shape::cover( double x, double y ) { return false; }
- void draw_shape_coverage( shape *s, int div_x, int div_y ) {
- double i,j;
- for( i = 0; i < 1.0; i += 1.0 / ((float)div_y) ) {
- for( j = 0; j < 1.0; j += 1.0 / ((float)div_x) ) {
- if( s->cover( j,i ) ) putchar( 'x' ); else putchar( ' ' );
- }
- printf( "\n" );
- }
- }
- void draw_depth_map( volume *v, int div_x, int div_y ) {
- double i,j;
- char depth_map_chars[] = "#*+o;:,. ";
- double lowbound, highbound;
- double current = 0.0;
- bool bounds_set = false;
- for( i = 0; i < 1.0; i += 1.0 / ((float)div_y) ) {
- for( j = 0; j < 1.0; j += 1.0 / ((float)div_x) ) {
- current = v->depth( j,i );
- if( !bounds_set ) {
- lowbound = current; highbound = current; bounds_set = true;
- }
- if( current < lowbound ) lowbound = current;
- if( current > highbound ) highbound = current;
- }
- }
- for( i = 0; i < 1.0; i += 1.0 / ((float)div_y) ) {
- for( j = 0; j < 1.0; j += 1.0 / ((float)div_x) ) {
- current = ((v->depth( j,i ) - lowbound) /
- (highbound - lowbound)) * 8;
- putchar(depth_map_chars[(int)current]);
- }
- putchar('\n');
- }
- }
- double volume::depth( double x, double y ) { return 0.0; }
- volume::~volume() { }