圆周率实际应用 用Delphi编写圆周率模拟器[2]
用Delphi编写圆周率模拟器[2]
程序首先在Image 控件区域内画一个边长为 的正方形作为程序的演示窗口 故FormCreate事件如下
procedure TForm FormCreate(Sender: TObject); begin // 画亮绿色的正方形演示框 Image Canvas Brush Color:=clBlack; Image Canvas FillRect(Rect( )); Image Canvas Pen Color:=cllime; Image Canvas Rectangle( ); DoubleBuffered := True; end;
接着放入一个Timer实现点的绘制以及π的计算
procedure TForm Timer Timer(Sender: TObject); var a b i ii:longint; pi piok:single; begin // 随机产生坐标点 i:=random( ); ii:=random( );
if (i*i+ii*ii< ) then begin // 以 为半径的圆内的点设为蓝色 Image canvas Pen Color:=claqua; a:=StrToInt(Label Caption); Label Caption:=IntToStr(a+ ); //显示当前点的坐标 Label Caption:=IntToStr(Image Canvas PenPos X); Label Caption:=IntToStr(Image Canvas PenPos Y); end else begin // 超出这个区域的点都在圆外设为黄色 Image Canvas Pen Color:=clyellow; b:=StrToInt(Label Caption); Label Caption:=IntToStr(b+ ); end;
// 画点(长为 像素的直线) Image Canvas MoveTo(i ii); Image Canvas LineTo(i ii+ );
// 计算pi的值 pi:=( *(StrToInt(Label Caption))/(StrToInt(Label Caption)+StrToInt(Label Caption))); Label Caption:=FloatToStr(pi); // Label 显示的是最接近真实pi的值 piok:=StrToFloat(Label Caption); //得出最接近的圆周率值 piok if (abs(pi ))<(abs(piok )) then Label Caption:=FloatToStr(pi); end;
![圆周率实际应用 用Delphi编写圆周率模拟器[2]](http://img.zhputi.com/uploads/5901/5901441be71f77eeb76434b8e19c5a6168625.jpg)
最后加入两个SpeedButton作为开始和暂停按钮 代码分别是Timer Enabled:=true;和Timer Enabled:=false; 好了 程序这样就完成了 赶快按下F 亲自模拟一下π的计算吧!
三 小结
虽然程序并没有采用圆周率的算法 但能通过随机数对π进行逼近 而由无数点描成的美妙圆弧让我们叹为观止 其实 这样的思想可以用于许多场合 比如对某个数学定理或者自然规律(彩票?)进行模拟 希望这样的思路对您有所启发
lishixinzhi/Article/program/Delphi/201311/25031