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

下载本文档

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

文档简介

另外一种画圆的算法:算法的数学原理:我们知道圆的内接三角形中,如果有一条边是直径,那么该边所对应的角度是直角。而在解析几何中,对任意两条斜率存在的直线,如果它们相互垂直,那么它们的斜率相乘为-1,而倘若是在园外(稍微在圆外一点),则夹角变小,斜率相乘小于-1(待会儿给出证明),倘若在园内一点,则夹角变大,斜率相乘大于-1,如图:证明:(由于只需要画出1/8圆即能画出整个圆,因此以下以第二个八分圆证明)对于B点设(r为圆的半径)则,。对于B点设其中则同理可得,对于B”点以上是对该数学方法的证明下面我们讨论一下具体的描点,如图:设我们已经画出了P点(P在第二个八分圆的圆弧上),则我们设P(x,y),则下一个应该描的点应该是P1或P2,我们取P1和P2的中点Pmid,我们只需要判断出Pmid与圆的关系即可判断应取P1还是P2了,如图:按照前面的论证方法,我们分别算出了,因为是否在圆上是以斜率相乘是否为-1为分界线的,所以我们令,则只需判断出是否大于0即可我们观察到,对于第二个八分圆,分母恒成立,则我们只需要判断分子是否大于0即可,当分子时,则Pmid在圆外,取P2当分子时,则Pmid在圆内,取P1 如果相等,则我们约定取P2这样就可以画出圆来了,但是效率太低了,我们可以稍加改进,将其改变成增量的形式因为我们已经取了P点,则我们可以分情况讨论在P点之前一次的取点情况,共有两种情况,一是P点,二是P”点,则对应这两种情况:如果是P点,则计算的是Pmid点的斜率相乘的结果如果是P”点,则计算的是P”mid点的斜率相乘的结果我们设a为每一次的斜率相乘加1后的分子的值,则对应于Pmid而对应于P”mid而我们所需要求的Pmid点的由此,我们便将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-SetPixel(x+1,y,RGB(x,y,(x+

温馨提示

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

评论

0/150

提交评论