this is a follow up to my question titled 'Draw Graphs'...

commercial toolkits are out of the question bcos my school project does not have a budget for it (such toolkits cost money rite??)

pls forgive me for i have just started learning VC++.... so can you kindly explain in more details the following:

1) Drawing of grids using the LineTo, TextOut etc etc functions.

2) For the program to generate the graph... let say i got two variables, theta and displacement, i will calculate the displacement at certain interval of theta. eg, at theta equal to 5, 10, 15, 20.... displacements are d1, d2, d3, d4. as such i would have the various pts. question is, how do i map this points into the grid i have drawn?? also, how to i join this various pts up after i mapped them into the grid i drawn??

the project gonna due very soon and i just can't seem to solve the problem. your help is very much appreciated. thanz in advance.

This is for a school assignment - so we are not allowed here to show you entire code.
I think you need basically help with the drawing - and not with the logic behind it.
So i'll post here some code which may help you. A short explanation:

The class gridInfo describes the grid to draw.
The function check_grid() makes sure that the grid data is valid.
The function grid_to_coord() converts a grid coordinate into a screen coordinate
(i think that's what you wanted, but i'm not sure)
wrap_value() 'rounds' the given value to the next given number.
The function paint_grid() paints the grid.

I think you should implement the function which actually draws the graph by yourself -
it is not hard to do, just take you some time, a block of paper and you should be able
to make it.

class gridInfo {
public:
double x_min;
double x_max;
double y_min;
double y_max;
double delta_x_intense; // intense coordinate lines, for example 10
double delta_y_intense; // which would mean that -20;-10;0;10;20;...
double delta_x_light; // light coordinate lines, for example 1;
double delta_y_light;
};

void grid_to_coord(CRect& rcPaint,gridInfo& gi,double grid_x,double grid_y,
int& coord_x,int& coord_y)
{
check_grid(gi);
grid_x-=gi.x_min;
grid_y-=gi.y_min;
ASSERT(grid_x>=0); ASSERT(grid_y>=0);
// 0<=grid_x/y
grid_x/=(gi.x_max-gi.x_min);
grid_y/=(gi.y_max-gi.y_min);
// 0<=grix_x/y<=1
// by standard, the positive values grow into negative screen coordinates ->
grid_y=1-grid_y;
// now map these [0..1]|[0..1] coordinates in the target (screen) rectangle
coord_x=( grid_x*((double)rcPaint.Width()) )+rcPaint.left;
coord_y=( grid_y*((double)rcPaint.Height()) )+rcPaint.top;
// rcPaint.left<=coord_x<=rcPaint.right
// rcPaint.top<=coord_y<=rcPaint.bottom
}

double wrap_value(double value,double mod,BOOL wrapUp)
{
BOOL usePositive; // value+ or value-? (see below)
// if value is less than zero, fmod()<0 too!
usePositive =wrapUp;
if(value<0) wrapUp=wrapUp?FALSE:TRUE;
if(usePositive)
value=value+fmod(value,mod);
else
value=value-fmod(value,mod);
return value;
}