помогите разобраться в программе. Эта программма для того , чтобы выводить на экран sin(x).
#include <gtk/gtk.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#define max(x,y) ((x)>(y)?(x)

y))
void draw( GdkDrawable *w, GdkGC * gc, int X1, int Y1, int X2, int Y2, float x1, float y1, float x2, float y2 ); //, float (*f)(float ));
float f( float x )
{
return sin(x);
}
void draw( GdkDrawable *w, GdkGC * gc, int XX1, int YY1, int XX2, int YY2, float x1, float y1, float x2, float y2 ) //, float (*f)(float ))*/
{
float x, X1, Y1, X2, Y2;
int X, Y;
X1 = (float)XX1; X2 = (float)XX2; Y1 = (float)YY1; Y2 = (float)YY2;
for( X = XX1; X <= XX2; X++ )
{
x = (float)(((float)X - X1 )/( X2 - X1 ))*( x2 - x1 ) + x1;
Y = (int)(( -f(x)- y1 )/( y2 - y1 )*( Y2- Y1 ) + Y1);
gdk_draw_point( w, gc, X, Y );
}
}
gboolean on_draw (GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
GdkGC * gc = widget->style->fg_gc[GTK_WIDGET_STATE (widget)];
GdkColor * clr = new GdkColor();
clr->pixel = 0;
clr->red = 0xffff;
clr->green = 0x8000;
clr->blue = 0;
gdk_gc_set_rgb_fg_color( gc, clr );
draw(widget->window, gc, 0,0, widget->allocation.width, widget->allocation.height, -3.14, -1, 3.14, 1 );//, f);
return TRUE;
}
int main ( int argc, char ** argv )
{
gtk_init( &argc, &argv);
GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (window, 400, 400);
g_signal_connect (G_OBJECT (window), "expose_event", G_CALLBACK (on_draw), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
Мне нужно на подобие этой программки, написать такую же, только такую, которая строит график x, y. и чтобы там был sin(x), cos(x), tn(x). Буду очень благодарна. Ну или хотя бі скажите библиотеку, которая рисует график или комментарии к программе.