hschumann2/TempleOS-Source-Code
0847
1 2F64 MySin(F64 d)3{ //Sin() does not have an address.4 return Sin(d);5}6 7F64 MyCos(F64 d)8{ //Cos() does not have an address.9 return Cos(d);10}11 12U0 FunDraw1(CDC *dc,F64 (*f)(F64 t))13{14 I64 i,w=Fs->pix_width,h=Fs->pix_height;15 F64 scale=h/5.0;16 for (i=-w/2;i<=w/2;i++)17 GrLine(dc,w/2+i,h/2-scale*f(i/scale*2*pi),18 w/2+i+1,h/2-scale*f((i+1)/scale*2*pi));19}20 21U0 FunDraw2(CDC *dc,F64 (*f)(F64 t,F64 p),F64 T)22{23 I64 i,w=Fs->pix_width,h=Fs->pix_height;24 F64 scale=h/5.0;25 for (i=-w/2;i<=w/2;i++)26 GrLine(dc,w/2+i,h/2-scale*f(i/scale,T),w/2+i+1,h/2-scale*f((i+1)/scale,T));27}28 29U0 Init(CDC *dc)30{31 I64 i,w=Fs->pix_width,h=Fs->pix_height;32 F64 scale=h/5.0;33 DocClear;34 DCFill(dc);35 dc->color=BLACK;36 GrLine(dc,0,h/2,w-1,h/2);37 GrLine(dc,w/2,0,w/2,h-1);38 for (i=-2;i<=2;i++) {39 dc->color=BLACK;40 GrLine(dc,w/2-3,h/2-scale*i,w/2+3,h/2-scale*i);41 if (i) {42 dc->color=DKGRAY;43 GrPrint(dc,w/2+5,h/2-scale*i-FONT_HEIGHT/2,"%5.1f",ToF64(i));44 }45 }46 for (i=-4;i<=4;i++) {47 dc->color=BLACK;48 GrLine(dc,w/2+scale*i,h/2-3,w/2+scale*i,h/2+3);49 if (i) {50 dc->color=DKGRAY;51 GrPrint(dc,52 w/2+scale*i-7*FONT_WIDTH/2,h/2+5+FONT_HEIGHT,"%5.1f*T",ToF64(i));53 }54 }55}56 57U0 SndMathDemo()58{59 CDC *dc=DCAlias;60 61 Init(dc);62 dc->color=RED;63 FunDraw1(dc,&MySin);64 "$RED$Sin$FG$\n";65 PressAKey;66 dc->color=BLUE;67 FunDraw2(dc,&Saw,1.0);68 "$BLUE$Saw$FG$\n";69 PressAKey;70 dc->color=GREEN;71 FunDraw2(dc,&FullSaw,1.0);72 "$GREEN$FullSaw$FG$\n";73 PressAKey;74 75 Init(dc);76 dc->color=RED;77 FunDraw1(dc,&MyCos);78 "$RED$Cos$FG$\n";79 PressAKey;80 dc->color=BLUE;81 FunDraw2(dc,&Caw,1.0);82 "$BLUE$Caw$FG$\n";83 PressAKey;84 dc->color=GREEN;85 FunDraw2(dc,&FullCaw,1.0);86 "$GREEN$FullCaw$FG$\n";87 PressAKey;88 89 Init(dc);90 dc->color=RED;91 FunDraw1(dc,&MySin);92 "$RED$Sin$FG$\n";93 PressAKey;94 dc->color=BLUE;95 FunDraw2(dc,&Tri,1.0);96 "$BLUE$Tri$FG$\n";97 PressAKey;98 dc->color=GREEN;99 FunDraw2(dc,&FullTri,1.0);100 "$GREEN$FullTri$FG$\n";101 PressAKey;102 103 DCFill(dc);104 DCDel(dc);105}106 107SndMathDemo;108 