- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用Delphi技术直观实现圆周率精确测算
利用Delphi技术直观实现圆周率精确测算 摘 要: 圆周率π是个古老的数据,早在1700多年前祖冲之已将其值精确到小数点后7位,而如今通过计算机程序已能算到十亿位之多。在课堂及平时工作中,直观、迅速、精确的测算出圆周率,对于课程的学习是非常有价值的。这里使用Delphi模拟一种测算圆周率的方法。 关键词: Delphi技术 模拟 圆周率 1.前言 在日常的教学及相关工作中,我们经常要介绍并使用圆周率,虽有具体的数据及相关的历史计算事件,但对于学生及普通的人员来说,很难弄懂其的计算原理,印象不深,效果差。本文通过Delphi即Windows平台下的可视化应用程序开发工具,提供一种有效的方法,通过具体的编程技术来高效、直观地完成圆周率的计算。 2.设计原理 本程序只是一个概率模拟。首先绘制一个边长为200的正方形,在其中随机生产多个点,该正方形中可以容下一个大圆的四分之一圆。以圆弧为界,在圆弧内的即为圆内点,之外的即为圆外点。由于点数非常之多,几乎布满整个正方形,因此点数就可以看成是其所在区域的面积。则作如下推导:如图1所示,红色区域表示1/4圆内;黄色区域表示圆外。 红色区域面积∶正方形面积≈红色区域点数∶总点数 红色区域面积∶正方形面积=1/4圆面积∶正方形面积 1/4圆面积∶正方形面积≈红色区域点数∶总点数 π×200×200/4∶200×200≈红色区域点数∶总点数 π≈4×红色区域点数/总点数 在区域的点数会出现重复,所以计算机的最终结果与实际π值会有差别,但是当点数足够多时,则可以看成一个非常近似的结果。 3.功能实现 3.1控件说明 本程序有图有数据,因此首先在窗体上设置一Image控件,其主要用于显示图像。在整个窗体生成时则加载,该控件的绘图代码绘制一个外边框为黄色,内部为黑色边长为200的正方形。在显示数据方面,这里采用Label标签控件,使用它的Caption属性用于实时显示圆内点数、圆外点数、当前计算的π值、当前X轴、Y轴的坐标。为了控制方便程序设置了两个按钮用于开始和暂停模拟。窗体最下方设置一个显示当前系统时间的Text文本控件,方便用户进行比对。为了自动快速的进行模拟。程序设置了一个主要控件Timer定时器。其是一个非可视化组件。利用其可以实现自动打点。它的Interval属性在这里十分重要,用于控制Timer触发事件(打点)的时间间隔。单位是ms,默认值1000即1s,这里为了模拟的速度,设置为1,即0.001s。 程序各控件布局如图2。 3.2代码实现 整个窗体在创建时的代码: procedure TForm1.FormCreate(Sender: TObject); begin ′在Image1控件区域内画一个边长为200的正方形作为程序的演示窗口,画亮绿色的正方形演示框 Image1.Canvas.Brush.Color:=clBlack; Image1.Canvas.FillRect(Rect(0,0,199,199)); Image1.Canvas.Pen.Color:=clyellow; Image1.Canvas.Rectangle(0,0,199,199); DoubleBuffered:= True; end; 添加Timer控件实现点的绘制和π的计算: var a,b,i,ii:longint; pi:single; begin ′随机产生坐标点 i:=random(200);/随机获取0-200以内的整数 ii:=random(200); if (i*i+ii*ii40000) then′判断是否为圆内点,根据数学公式X2+Y2=r2 begin ′以200为半径的圆内的点设为红色 Image1.canvas.Pen.Color:=clred; a:=StrToInt(Label1.Caption);′label.Caption初始值为0 Label1.Caption:=IntToStr(a+1);′a为圆内点数,加1后传送给label控件 ′显示当前点的坐标 Label4.Caption:=IntToStr(Image1.Canvas.PenPos.X); Label5.Caption:=IntToStr(Image1.Canvas.PenPos.Y); end else begin ′超出这个区域的点都在圆外设为黄色 Image1.Canvas.Pen.Color:=clyellow; b:=StrToInt(Label2.Caption); Label2.Capti
您可能关注的文档
最近下载
- GB51364-2019 船舶工业工程项目环境保护设施设计标准.pdf VIP
- 2026中国能源建设集团山西电力建设有限公司招聘笔试备考试题及答案解析.docx VIP
- 2026中国能源建设集团山西电力建设有限公司招聘笔试参考题库附答案解析.docx VIP
- 2026中国能源建设集团山西电力建设有限公司招聘笔试备考题库及答案解析.docx VIP
- 三菱激光钻孔机培训课件.ppt VIP
- 浙江省宁波市鄞州区2024—2025学年上学期七年级数学期中测试卷(含答案).docx VIP
- 湘美版七年级上册美术第六课《让图表说话》教案.docx VIP
- 2023年苏密杯密码知识竞赛题库附答案(第301-400题).pdf VIP
- 张培基英汉翻译教程.doc VIP
- 建筑初步设计-第二章--西方现代建筑简介.ppt VIP
原创力文档


文档评论(0)