sin波の図が必要になったので、プログラムを作って見ました。
x-window 用のプログラムです。
sinwave,c
/* sinwave.c sin波を描画するプログラム */
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* sin波をウィンドウに描画する */
int DrawSinwave(Display *d, Window w, GC gc)
{
XGCValues gv;
int pxa, pya, pxb, pyb, i;
gv.line_width = 2; /* 線の太さを2に設定 */
XChangeGC(d, gc, GCLineWidth, &gv); /* グラフィックコンテクストの設定を変更 */
for(i = -20;i <= 380; i ++){ /* -20°から380°までsin波を描いている */
pxb = i + 50;
pyb = 200 - (int)(sin(3.14159/180*i) * 150);
if(i == -20){
pxa = pxb; pya = pyb;
}
XDrawLine(d, w, gc, pxa, pya, pxb, pyb); /* (pxa,pya)から(pxb,pyb)まで線を引いている */
pxa = pxb; pya = pyb;
}
return(0);
}
int main (int argc, char **argv)
{
Display *d;
Window w;
GC gc;
XGCValues gv;
XEvent event;
unsigned long black, white;
d = XOpenDisplay (NULL); /* Display構造体のポインタを取得 */
black = BlackPixel(d, DefaultScreen(d)); /* 黒のピクセル値を取得 */
white = WhitePixel(d, DefaultScreen(d)); /* 白のピクセル値を取得 */
w = XCreateSimpleWindow (d, RootWindow (d, 0), 20, 20,
500, 400, 1, black, white);
/* ウィンドウを生成 */
XSelectInput(d, w, KeyPressMask|ExposureMask);
/* イベントマスクを設定(ここでは、キーを押されたとき(KeyPressMask)と
ウィンドウを表示したとき(ExposureMask)のみイベントが発生するように設定 */
XMapWindow (d, w); /* ウィンドウを描く */
XFlush (d); /* リクエストバッファの送り出し */
gv.line_width = 3; /* 線の太さを3に設定 */
gc = XCreateGC (d, w, GCLineWidth, &gv); /* グラフィックコンテクストを生成 */
XSetForeground (d, gc, black); /* グラフィック属性foregroundに値をセット */
while(1){
XNextEvent(d, &event); /* イベントキューの先頭イベントを取得 */
switch(event.type){
case Expose: /* イベントが Expose の場合 */
XDrawLine (d, w, gc, 30, 200, 470, 200); /* 線を引く */
XDrawLine (d, w, gc, 50, 50, 50, 350);
DrawSinwave(d, w, gc);
break;
case KeyPress: /* イベントが KeyPress の場合 */
XDestroyWindow(d, w);
exit(0); /* 何かキーを押されたらウィンドウを消滅する */
break;
default:
;
}
}
return 0;
}
Makefie
CFLAGS = -I/usr/X11R6/include
LFLAGS = -L/usr/X11R6/lib
LIBS = -lX11 -lm
CC = gcc
OBJS = sinwave.o
PROGRAM = sinwave
.c.o:
$(CC) -Wall -g -c $(CFLAGS) $< -o $@
$(PROGRAM) : $(OBJS)
$(CC) $(OBJS) -o $(PROGRAM) $(LFLAGS) $(LIBS)
$(OBJS) : Makefile
こんな図が出ます。