F64 MySin(F64 d) { //Sin() does not have an address. return Sin(d); } F64 MyCos(F64 d) { //Cos() does not have an address. return Cos(d); } U0 FunDraw1(CDC *dc,F64 (*f)(F64 t)) { I64 i,w=Fs->pix_width,h=Fs->pix_height; F64 scale=h/5.0; for (i=-w/2;i<=w/2;i++) GrLine(dc,w/2+i,h/2-scale*f(i/scale*2*ã), w/2+i+1,h/2-scale*f((i+1)/scale*2*ã)); } U0 FunDraw2(CDC *dc,F64 (*f)(F64 t,F64 p),F64 T) { I64 i,w=Fs->pix_width,h=Fs->pix_height; F64 scale=h/5.0; for (i=-w/2;i<=w/2;i++) GrLine(dc,w/2+i,h/2-scale*f(i/scale,T),w/2+i+1,h/2-scale*f((i+1)/scale,T)); } U0 Init(CDC *dc) { I64 i,w=Fs->pix_width,h=Fs->pix_height; F64 scale=h/5.0; DocClear; DCFill(dc); dc->color=BLACK; GrLine(dc,0,h/2,w-1,h/2); GrLine(dc,w/2,0,w/2,h-1); for (i=-2;i<=2;i++) { dc->color=BLACK; GrLine(dc,w/2-3,h/2-scale*i,w/2+3,h/2-scale*i); if (i) { dc->color=DKGRAY; GrPrint(dc,w/2+5,h/2-scale*i-FONT_HEIGHT/2,"%5.1f",ToF64(i)); } } for (i=-4;i<=4;i++) { dc->color=BLACK; GrLine(dc,w/2+scale*i,h/2-3,w/2+scale*i,h/2+3); if (i) { dc->color=DKGRAY; GrPrint(dc, w/2+scale*i-7*FONT_WIDTH/2,h/2+5+FONT_HEIGHT,"%5.1f*T",ToF64(i)); } } } U0 SndMathDemo() { CDC *dc=DCAlias; Init(dc); dc->color=RED; FunDraw1(dc,&MySin); "$$RED$$Sin$$FG$$\n"; PressAKey; dc->color=BLUE; FunDraw2(dc,&Saw,1.0); "$$BLUE$$Saw$$FG$$\n"; PressAKey; dc->color=GREEN; FunDraw2(dc,&FullSaw,1.0); "$$GREEN$$FullSaw$$FG$$\n"; PressAKey; Init(dc); dc->color=RED; FunDraw1(dc,&MyCos); "$$RED$$Cos$$FG$$\n"; PressAKey; dc->color=BLUE; FunDraw2(dc,&Caw,1.0); "$$BLUE$$Caw$$FG$$\n"; PressAKey; dc->color=GREEN; FunDraw2(dc,&FullCaw,1.0); "$$GREEN$$FullCaw$$FG$$\n"; PressAKey; Init(dc); dc->color=RED; FunDraw1(dc,&MySin); "$$RED$$Sin$$FG$$\n"; PressAKey; dc->color=BLUE; FunDraw2(dc,&Tri,1.0); "$$BLUE$$Tri$$FG$$\n"; PressAKey; dc->color=GREEN; FunDraw2(dc,&FullTri,1.0); "$$GREEN$$FullTri$$FG$$\n"; PressAKey; DCFill(dc); DCDel(dc); } SndMathDemo;