Vamos a dibujar una función sin(x) en una ventana de X11, ajustando el dibujo al tamaño de la ventana. Si no sabes cómo se crea una ventana de X11, aquí puedes ver un ejemplo básico de dibujo en X11. Para este dibujo se van a emplear unas cuentas y una clase ya hecha que las hace.
Aquí únicamente está el ejemplo y una explicación por encima de algunos detalles.
Queremos dibujar la función sin(x) en una ventana de 500x700 pixels, ajustando el dibujo a los bordes de la ventana. La x se hace variar desde 0 hasta 2*PI en incrementos de 0.01.
En Seno.cc tienes el código de ejemplo. Primero se abre la conexión con el servidor de X11, crea la ventana y elige como color de dibujo el azul.
Luego se instancia la clase EscalaC (Escala.h y Escala.cc) que es la que se encarga de transformar valores x,y de la función seno en valores x,y en pixels, para dibujar sobre la ventana.
EscalaC escala;
// Se indican los minimos y maximos de nuestro
gráfico sin(x)
escala.tomaExtremos (0.0, 2*M_PI, -1.0, 1.0);
// Se dan alto y ancho en pixel de nuestra
zona de dibujo.
escala.tomaAreaGrafica (ANCHO, ALTO);
Se hace el bucle para x y se obtienen las coordenadas del pixel que se debe dibujar
// Se convierte la x del
sin(x) a un valor de pixel
xPixel = escala.dameX (x);
// Se convierte la y del sin(x) a un valor
de pixel
yPixel = escala.dameY (sin(x));
Sólo te falta el Makefile. Puedes descargar los cuatro ficheros a los que se hace referencia en esta página, quitarles la extensión .txt y compilarlos con make. Luego puedes ejecutar ./Seno y verás una ventana con la función sin(x) dibujada en ella.