首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

【续集】 C语言图形跟函数图像的绘制【其他部分 第二章】

2013-10-24 
【续集】 C语言图形和函数图像的绘制【其他部分 第二章】第二章【续集】 图形和函数图像的绘制前面我们详细介绍

【续集】 C语言图形和函数图像的绘制【其他部分 第二章】

           第二章【续集】 图形和函数图像的绘制


  前面我们详细介绍了C语言绘制常见图形和正弦余弦图像的方法,此篇文章为上一篇(http://blog.csdn.net/duanxu_yzc/article/details/12745757,强烈建议:先看上一篇再看续集!!!)的继续,主要有以下内容:

      圆形和抛物线的绘制

      绘制函数图像的第二种方法

      同一坐标系下绘制多个函数图像(交叉图像)


4、圆形和抛物线的绘制

   有了前面绘制三角函数图像的基础,圆形和抛物线的绘制应该非常简单,我们以圆形为例说明:

a、观察需要绘制的图像

【续集】 C语言图形跟函数图像的绘制【其他部分 第二章】

      每行需要输出两个点,而且图像左右轴对称

   b、使用的函数:(x-10)2+(y-10)2=102

   c、输出21行,行坐标间距为1

   d、左半圆的列号:10-sqrt(100-(r-10)*(r-10))

      右半圆的列号:10+sqrt(100-(r-10)*(r-10))

   e、调整输出行宽比(因屏幕的行宽比不是一比一,因此不进行调整会导致输出为椭圆)

   按照以上步骤编写代码如下:


抛物线的绘制与圆形极为相似,直接上代码和结果:



5、绘制函数图像的第二种方法

    到目前为止,我们使用的方法都是逐行输出,然后通过反函数找到每行需要输出星号的位置,最后通过输出相应个数的空格,确定星号的位置,输出星号。现在介绍另外一种方法,其实与已知的方法很相似,区别在于不需要先输出空格来确定星号的位置,而是逐个判断每行中的各列需要输出的字符是空格还是星号,以圆形为例,每行中,只有列号(调整比例后的)为adjust*(10-sqrt(5*r)和adjust*(10+sqrt(5*r)的位置需要输出星号,其余位置均输出空格。按照这个方法我们重新编写程序如下:


(这个图像与前一种方法绘制的图像有一处明显不同,为什么?请读者思考。)

 

   6、同一坐标系下绘制多个函数图像(交叉图像)

   我们来观察一下直线和圆在同一坐标系下相交的图形:

【续集】 C语言图形跟函数图像的绘制【其他部分 第二章】

    同样,这个图像也需要逐行输出,如果按照第一种绘制方法,就需要确定每行中星号的位置,我们发现,图像上半部分的星号依次出现在:左半圆、右半圆、直线,中间部分是:左半圆、直线、右半圆,下半部分是:直线、左半圆、右半圆,这使得我们需要在程序中需要针对不同的行段采取不同的输出顺序,如果图像更复杂的话,这同情况会变得更糟糕。我们再看看第二种绘制方法,这种方法只需要知道哪些地方需要输出星号,并不需要明确的顺序,因此更适合这种交叉图像输出的情况,下面是绘制直线和圆的代码和结果:


    使用同样的方法绘制余弦和正弦的交叉图像如下:




 

本章总结

        图形输出是C语言初学者经常遇到的问题,实际上大多数简单的图形并不需要使用复杂的控制结构,所见即所得的方法更加简洁,不过对于复杂的图形或者函数图像,使用控制结构会更好。在使用控制结构输出图形时,要把握一个原则:只能逐行输出,因此,在输出一行时必须把这一行中所有需要输出的字符全部输出,所以,找到每行中各个位置需要输出的字符(或者说,各字符在每行中的位置)尤为关键!我们有两种方法来确定位置,其中第二种方法更通用简洁。在输出图形时,特别是函数图像,要充分利用对称、平移关系简化程序,另外,要注意调节屏幕的行宽比和适当的图像放大,防止图像失真。


声明

    1、此博文版权归断絮所有,如需转载请注明出处http://blog.csdn.net/duanxu_yzc/article/details/12970225,谢谢。

    2、在未经博主断絮允许的情况下,任何个人和机构都不得以任何理由出版此文章,否则必将追究法律责任!


热点排行