码迷,mamicode.com
首页 > 编程语言 > 详细

C语言6行代码画圆

时间:2018-12-07 21:16:32      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:字符   \n   简化   应用   为什么   img   分享   printf   class   

  这一方法是受到milo大神用C语言画心的启发而想到的。

  代码如下:

#include<stdio.h>
int main(){
    for(double l=1;l>-1;l-=0.05,printf("\n"))
        for(double w=1;w>-1;w-=0.025)
            printf((l*l + w*w<=1)?"=":" ");
} 

  效果:

技术分享图片

  事实上,代码的逻辑和背景知识是很简单的,就是从左到右,从上到下,用等号填充一个圆而已。

  我们知道,圆方程的标准形式为:

  技术分享图片

  当a b r的值确定后,圆也就完全确定了,为了简化方程,我们令a b 为0,r为1,则该圆全部落-1<x<1,-1<y<1的范围中,这也是l和w范围的来源。

  接下来,很自然的就要思考字符数量了,一般而言,半角文字的长宽比为1:2(很汗颜,这也是从milo大神的文章中知道的),所以宽度增量设置为长度的一半就行了,如果为1:1的话,会得到一个椭圆。为什么增量设置为0.05和0.025呢?首先,增量的设置的越小,得到的圆就越圆,但是过大的话一屏无法显示完全,0.05和0.025是一个较优值,读者也可以尝试其他值。

  整段代码中最难理解的一句应该是

printf((l*l + w*w<1)?"=":" ");

  其实只是一个简单的双目运算符应用,意思是,如果该点落于圆中,则用“=”符号填充,否则用空格代替。

  说到底只是数学的简单应用罢了,理论上来说,只要有相对应的图像方程,这段代码也可以进行相应的修改从而输出对应图像。读者有兴趣不妨试试:-)。

C语言6行代码画圆

标签:字符   \n   简化   应用   为什么   img   分享   printf   class   

原文地址:https://www.cnblogs.com/haolanHwang/p/10084319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!