《利用直角三角形画圆的算法》由会员分享,可在线阅读,更多相关《利用直角三角形画圆的算法(6页珍藏版)》请在金锄头文库上搜索。
1、此外一种画圆的算法:算法的数学原理:我们懂得圆的内接三角形中,如果有一条边是直径,那么该边所相应的角度是直角。而在解析几何中,对任意两条斜率存在的直线,如果它们互相垂直,那么它们的斜率相乘为-1,而倘若是在园外(稍微在圆外一点),则夹角变小,斜率相乘不不小于-1(待会儿给出证明),倘若在园内一点,则夹角变大,斜率相乘不小于-,如图:证明:(由于只需要画出/8圆即能画出整个圆,因此如下以第二个八分圆证明)对于B点设(r为圆的半径)则,。对于B点设其中则同理可得,对于”点以上是对该数学措施的证明下面我们讨论一下具体的描点,如图:设我们已经画出了P点(P在第二个八分圆的圆弧上),则我们设P(x,y)
2、,则下一种应当描的点应当是P或P,我们取P1和P2的中点Pid,我们只需要判断出Pmid与圆的关系即可判断应取P1还是P2了,如图:按照前面的论证措施,我们分别算出了,由于与否在圆上是以斜率相乘与否为-为分界线的,因此我们令,则只需判断出与否不小于0即可我们观测到,对于第二个八分圆,分母恒成立,则我们只需要判断分子与否不小于0即可,当分子时,则Pmd在圆外,取P当分子时,则Pmid在圆内,取P1 如果相等,则我们商定取P2这样就可以画出圆来了,但是效率太低了,我们可以稍加改善,将其变化成增量的形式由于我们已经取了P点,则我们可以分状况讨论在点之前一次的取点状况,共有两种状况,一是P点,二是P”
3、点,则相应这两种状况:如果是点,则计算的是d点的斜率相乘的成果如果是”点,则计算的是P”md点的斜率相乘的成果我们设a为每一次的斜率相乘加1后的分子的值,则相应于mid而相应于P”mid而我们所需规定的Pmi点的由此,我们便将a的值表达到了增量的形式,通过判断的正负来判断该点是在圆内还是圆外,具体的c代码算法部分如下所示:float a,x,y,r,esinn=000001;in tag;/ag是用来鉴别前一种点是P还是P”的=;/ta=1,表达取的是,t=0,表达获得是P”r=00;y=r;petPi(0,G(x,y,(x+y)/2);a=(y0.5)(-.5)+(+1)*(x1)-r*r;if(aesinon)DC-StPixel(+1,y-1,RB(x,,((+y)/2));x+,-;ag=;elspDCSePixel(x+1,y,GB(x,y,(xy)));x+;a0;wile(xSetxl(x+1,y,RB(,y,(x+y)/);x+,y-;tg=1;elepDetPx(x1,RG(,y,((x+y)2)));x+;tg=0;下图为用该算法画出的圆(圆心坐标是(00,,100),半径是0):算法的分析到此为止