steves@longs.LANCE.ColoState.EDU (Steve Smith) (04/23/91)
Has anyone had experience with graphing data points in Turbo C? I'm trying to get data (both neg and pos) to fit within the getmaxx(); and getmaxy(); of a screen. I need a routine that converts the data points into a useable scale. I'm using just the lineto(x,y); and moveto(x,y); functions to plot points. Any help would be appreciated! S Smith CSU Fort Collins, Colorado
1h1a0m@kuhub.cc.ukans.edu (04/24/91)
In article <14422@ccncsu.ColoState.EDU>, steves@longs.LANCE.ColoState.EDU (Steve Smith) writes: > > Has anyone had experience with graphing data points in Turbo C? > I'm trying to get data (both neg and pos) to fit within the > getmaxx(); and getmaxy(); of a screen. I need a routine that > converts the data points into a useable scale. I'm using just > the lineto(x,y); and moveto(x,y); functions to plot points. > > Any help would be appreciated! > > S Smith > CSU Fort Collins, Colorado OK, here's some C code to get you started: /* .... */ int xmin, xmax, ymin, ymax, screen_x, screen_y; double data_xmin, data_xmax; double data_ymin, data_ymax; double data_x, data_y; data_x = 40.0; data_xmin = -20.0; /* lower limit of your x data */ data_xmax = 80.0; /* upper limit of your x data */ xmin = 0; /* TC screen x min */ xmax = getmaxx(); /* TC screen x max */ screen_x = (int) ( ( data_x - data_xmin ) / ( data_xmax - data_xmin ) * (double) ( xmax - xmin ) ); /* .... */ /* similar code for y-coordinate */ /* .... */ lineto( screen_x, screen_y ); /* .... */ This code assumes that the entire screen is used for plotting. If you want to establish a subplot area you must modify the scaling procedure to incorporate offsets in the x and y directions. Good luck A. Montes Univ. of KS