利用直角三角形画圆的算法_第1页
利用直角三角形画圆的算法_第2页
利用直角三角形画圆的算法_第3页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、无另外一种画圆的算法:算法的数学原理:我们知道圆的内接三角形中,如果有一条边是直径,那么该边所对应的角度是直角。而在解析几何中,对任意两条斜率存在的直线,如果它们相互垂直,那么它们的斜率相乘为-1,而倘若是在园外(稍微在圆外一点) ,则夹角变小,斜率相乘小于-1(待会儿给出证明) ,倘若在园内一点,则夹角变大,斜率相乘大于-1,如图:证明:(由于只需要画出 1/8 圆即能画出整个圆,因此以下以第二个八分圆证明)对于 B 点设cos ,sinxryr(r 为圆的半径)则sinsin,coscosBCBArrkkrrrr,无2222sin*1(cos1)BCBArkkr 。对于 B点设cos,si

2、nxrdx yr其中(0,cos )dxrr则sinsin,coscosB CB Arrkkrdxrrdxr2222sin*( cos)0*1B CB AB CB Arkkrdxrdxkk 同理可得,对于 B”点*1B CB Akk 以上是对该数学方法的证明下面我们讨论一下具体的描点,如图:设我们已经画出了 P 点(P 在第二个八分圆的圆弧上) ,则我们设 P(x,y) ,则下一个应该描的点应该是 P1 或 P2,我们取 P1 和 P2 的中点 Pmid,我们只需要判断出 Pmid 与圆的关系即可判断应取 P1 还是 P2 了,如图:无按照前面的论证方法,我们分别算出了121PmidAykxr

3、 ,121PmidCykxr 2221()2*(1)PmidAPmidCykkxr因为是否在圆上是以斜率相乘是否为-1 为分界线的,所以我们令*1PmidAPmidCkk,则222221()(1)2*1(1)PmidAPmidCyxrkkxr 只需判断出*1PmidAPmidCkk是否大于 0 即可我们观察到,对于第二个八分圆,分母22(1)0 xr恒成立,则我们只需要判断分子是否大于 0 即可,当分子2221()(1)02yxr时,则 Pmid 在圆外,取 P2当分子2221()(1)02yxr时,则 Pmid 在圆内,取 P1如果相等,则我们约定取 P2这样就可以画出圆来了,但是效率太低了

4、,我们可以稍加改进,将其改变成增量的形式因为我们已经取了 P 点, 则我们可以分情况讨论在 P 点之前一次的取点情况, 共有两种情况,一是 P点,二是 P”点,则对应这两种情况:如果是 P点,则计算的是 Pmid 点的斜率相乘的结果如果是 P”点,则计算的是 P”mid 点的斜率相乘的结果我们设 a 为每一次的斜率相乘加 1 后的分子的值,则对应于 Pmid无2221()2P midayxr而对应于 P”mid2221()2P midayxr而我们所需要求的 Pmid 点的22222211()(1)()(221)(221)22PmidP midayxryxrxyaxy22222211()(1)

5、()(21)(21)22PmidP midayxryxrxax由此,我们便将 a 的值表示成了增量的形式,通过判断 a 的正负来判断该点是在圆内还是圆外,具体的 c 代码算法部分如下所示:float a,x,y,r,espinon=0.00001;int tag;/tag 是用来判别前一个点是 P还是 P”的x=0;/tag=1,表示取的是 P,tag=0,表示取得是 P”r=100;y=r;pDC-SetPixel(0,y,RGB(x,y,(x+y)/2);a=(y-0.5)*(y-0.5)+(x+1)*(x+1)-r*r;if(aespinon)pDC-SetPixel(x+1,y-1,RGB(x,y,(x+y)/2);x+,y-;tag=1;elsepDC-SetPixel(x+1,y,RGB(x,y,(x+y)/2);x+;tag=0;while(xespinon)pDC-SetPixel(x+1,y-1,RGB(x,y,(x+y)/2);无x+,y-;tag=1;elsepDC-Se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论