您当前的位置:首页 > 互联网教程

c语言中如何用line画一个圆

发布时间:2025-05-14 05:11:03    发布人:远客网络

c语言中如何用line画一个圆

一、c语言中如何用line画一个圆

1、#include<graphics.h>/*预定义库函数*/

2、void circlePoint(int x,int y)/*八分法画圆程序*/

3、void MidBresenhamcircle(int r)/*中点Bresenham算法画圆的程序*/

4、{ circlePoint(x,y);/*绘制点(x,y)及其在八分圆中的另外7个对称点*/

5、if(d<0) d+=2*x+3;/*根据误差项d的判断,决定非最大位移方向上是走还是不走*/

6、int i,j,r,graphmode,graphdriver;

7、detectgraph(&graphdriver,&graphmode); initgraph(&graphdriver,&graphmode,"");

8、printf("中点Bresenhamcircle算法画圆的程序\n");/*提示信息*/

9、printf("\n输入半径值 r:");

10、printf("按任意键显示图形...");

11、getch(); cleardevice(); setbkcolor(BLACK);

12、for(i=20;i<=620;i+=20)/*使用双循环画点函数画出表格中的纵坐标*/

13、for(j=20;j<=460;j+=20)&n欢迎光临学网,收藏本篇文章 [1] [2]

14、bsp;/*使用双循环画点函数画出表格中的横坐标*/

15、putpixel(i,j,2); outtextxy(320,245,"0");/*原点坐标*/

16、outtextxy(320-5*20,245,"-5");circle(320-5*20,240,2);/*横坐标值*/

17、outtextxy(320+5*20,245,"5");circle(320+5*20,240,2);

18、outtextxy(320-10*20,245,"-10");circle(320-10*20,240,2);

19、outtextxy(320+10*20,245,"10");circle(320+10*20,240,2);

20、outtextxy(320-15*20,245,"-15");circle(320-15*20,240,2);

21、outtextxy(320+15*20,245,"15");circle(320+15*20,240,2);

22、outtextxy(320,240-5*20,"-5");circle(320,240-5*20,2);/*纵坐标值*/

23、outtextxy(320,240+5*20,"5");circle(320,240+5*20,2);

24、outtextxy(320,240-10*20,"-10");circle(320,240-10*20,2);

25、outtextxy(320,240+10*20,"10");circle(320,240+10*20,2);

26、outtextxy(20,10,"The center of the circle is(0,0)");/*坐标轴左上角显示提示信息*/

27、line(20,240,620,240); outtextxy(320+15*20,230,"X");

28、line(320,20,320,460); outtextxy(330,20,"Y");

二、用C语言打出菱形

1、在编程的世界里,使用C语言可以创造出各种各样的图形,其中最引人注目的就是菱形图案。菱形不仅形状美观,而且能够帮助我们更好地理解循环结构。我们可以通过C语言中的for循环来实现菱形的绘制。

2、下面是一个用C语言绘制菱形的简单示例,其中使用了5行5列的菱形作为例子。我们定义了一个变量m来表示菱形的大小,通过for循环来控制打印空格和星号的行数,以此来完成菱形的绘制。

3、首先,我们定义了几个整型变量i, j, k, m。m代表菱形的大小,这里设置为5。接着,我们使用for循环来控制打印星号的行数。当i从0开始递增到m-1时,我们打印星号和空格来形成上半部分的菱形。接着,我们使用另一个for循环,让i从m-2递减到0,打印星号和空格来形成下半部分的菱形。

4、在编写代码时,我们还需要注意k变量的作用。k变量用于控制在每一行中打印空格的数量,随着i的增加,k逐渐减少,这样可以实现菱形的对称。同样,随着i的递减,k逐渐增加,从而形成完整的菱形图案。

5、通过这个简单的示例,我们可以看到C语言的强大之处。利用for循环和一些基本的逻辑判断,我们可以轻松地绘制出各种图形。这对于初学者来说是一个很好的学习案例,可以帮助他们更好地理解循环结构和变量的作用。

6、当然,你可以根据需要调整m的值来绘制不同大小的菱形。此外,你还可以通过改变星号和空格的组合来创建更多有趣的图形。编程的魅力就在于此,你可以尽情发挥创造力,探索无限的可能性。

三、计算机图形学复习

1.计算机图形:用数学方法描述,通过计算机生成、处理、存储和显示的对象。

2.图形和图像的主要区别是表示方法不同:图形是用矢量表示;图像是用点阵表示的。图形和图像也可以通过光栅显示器(或经过识别处理)可相互转化。

3.于计算机图形学紧密相关的学科主要包括图像处理、计算几何和计算机视觉模式识别。它们的共同点是以图形/图像在计算机中的表示方法为基础。

4.交互式计算机图形系统的发展可概括为以下4个阶段:字符、矢量、二维光栅图形、三维图形。

5.图形学研究的主要内容有:①几何造型技术②图形生成技术③图形处理技术④图形信息的存储、检索与交换技术⑤人机交互技术⑥动画技术⑦图形输入输出技术⑧图形标准与图形软件包的研发。

6.计算机辅助设计和计算机辅助制造是计算机图形学最广泛最活跃的应用领域。

7.计算机图形学的基本任务:一是如何利用计算机硬件来实现图形处理功能;二是如何利用好的图形软件;三是如何利用数学方法及算法解决实际应用中的图行处理问题。

8.计算机图形系统是由硬件系统和软件系统组成的。

9.计算机图形系统包括处理、存储、交互、输入和输出五种基本功能。

10.键盘和鼠标是最常用的图形输入设备。鼠标根据测量位移部件的不同,分为光电式、光机式和机械式3种。

11.数字化仪分为电子式、超声波式、磁伸缩式、电磁感应式等。小型的数字化仪也称为图形输入板。

12.触摸屏是一种定位设备,它是一种对于触摸能产生反应的屏幕。

13.扫描仪由3部分组成:扫描头、控制电路和移动扫描机构。扫描头由光源发射和光鲜接收组成。按移动机构的不同,扫描仪可分为平板式和滚筒式2种。

14.显示器是计算机的标准输出设备。彩色CRT的显示技术有2种:电子穿透法和荫罩法。

15.随机扫描是指电子束的定位及偏转具有随意性,电子束根据需要可以在荧光屏任意方向上连续扫描,没有固定扫描线和扫描顺序限制。它具有局部修改性和动态性能。

17.点距是指相邻像素点间的距离,与分辨指标相关。

18.等离子显示器一般有三层玻璃板组成,通常称为等离子显示器的三层结构。

19.用以输出图形的计算机外部设备称为硬拷贝设备。

20.打印机是廉价的硬拷贝设备,从机械动作上常为撞击式和非撞击式2种。

21.常用的喷墨头有:压电式、气泡式、静电式、固体式。

22.绘图仪分为静电绘图仪和笔式绘图仪。

23.图形软件的分层。由下到上分别是:①图形设备指令、命令集、计算机操作系统②零级图形软件③一级图形软件④二级图形软件⑤三级图形软件。

24.零级图形软件是面向系统的、最底层的软件,主要解决图形设备与主机的通信与接口问题,又称设备驱动程序。

25.一级图形软件即面向系统又面向用户,又称基本子系统。

26.图形应用软件是系统的核心部分。

27.从物理学角度,颜色以主波长、色纯度和辉度来描述;从视觉角度来看,颜色以色彩、饱和度和亮度来描述。

28.用适当比列的3种颜色混合,可以获得白色,而且这3种颜色中的任意2种的组合都不能生成第三种颜色,称为三原色理论。

29. RGB模型的匹配表达式是:c=rR+gG+bB。

RGB图形显示设备(彩色CRT和光栅显示器)

HSV对应画家本色原理、直观的颜色描述

用基色青、品红、黄定义的CMY颜色模型用来描述硬拷贝设备的输出颜色。它从白光中滤去某种颜色,故称为减色性原色系统。

31.直线生成的3个常用算法:数值微分法(DDA)、中点划线法和Bresenham算法。

DDA算法生成直线,起点(x0,y0),终点(x1,y1).

CDC*pDC=GetDC();//获得设备指针

int x0=100,y0=100,x1=300,y1=200,c=RGB(250,0,0);//定义直线两端点和直线颜色

{pDC—>SetPixel(x,int(y+0.5),c);

{pDC—>SetPixel(int(x+0.5),y,c);

33.任何影响图元显示方法的参数称为属性参数。图元的基本表现是线段,其基本属性包括线型、线宽和色彩。

34.最常见的线型包括实线、虚线、细线和点划线等,通常默认的线型是实线。

35.线宽控制的实线方法:垂直线刷子、水平线刷子、方形线刷子。生成具有宽度的线条还可以采用区域填充算法。

36.用离散量表示连续量时引起的失真现象称为走样。为了提高图形显示质量,减少或消除走样现象的技术称为反走样。

37.反走样技术有:提高分辨率(硬件方法和软件方法)、简单区域取样、加权区域取样。

38.区域连通情况分为四连通区域和八连通区域。四连通区域是指从区域上某一点出发,可通过上下左右4个方向移动,在不越出区域的前提下到达区域内的任意像素;八连通区域是指从区域内某一像素出发,可通过上下左右、左上左下、右上右下8个方向的移动,在不越出区域的前提下到达区域内的任意像素。

39.字符的图形表示可以分为点阵式和矢量式两种形式。

40.在图形软件中,除了要求能生成直线、圆等基本图形元素外,还要求能生成其他曲线图元、多边形及符号等多种图元。

41.在扫描线填充算法中,对水平边忽略而不予处理的原因是实际处理时不计其交点。

42.关于直线生成算法的叙述中,正确的是:Bresenham算法是对中点画线算法的改进。

43.在中点画圆算法中叙述错误的是:为了减轻画圆的工作量,中点画圆利用了圆的四对称性性质。

44.多边形填充时,下列论述错误的是:在判断点是否在多边形内时,一般通过在多变形外找一点,然后根据该线段与多边形的交点数目为偶数即可认为在多边形内部,若为奇数则在多边形外部,且不考虑任何特殊情况。

1. Cohen-Sutherland算法,也称编码裁剪法。其基本思想是:对于每条待裁剪的线段P1P2分三种情况处理:①若P1P2完全在窗口内,则显示该线段,简称“取”之;②若P1P2完全在窗口外,则丢弃该线段,简称“舍”之;③若线段既不满足“取”的条件也不满足“舍”的条件,则求线段与窗口边界的交点,在交点处把线段分为两段,其中一段完全在窗口外,可舍弃之,然后对另一段重复上述处理。

2. Sutherland-Hodgman算法,又称逐边裁剪算法。其基本思想是用窗口的四条边所在的直线依次来裁剪多边形。多边形的每条边与裁剪线的位置关系有4种情况(假设当前处理的多边形的边为SP):a>端点S在外侧,P在内侧,则从外到内输出P和I;b>端点S和P都在内侧,则从内到内输出P;c>端点S在内侧,而P在外侧,则从内到外输出I;d>端点S和P都在外侧,无输出。

3.按裁剪精度的不同,字符裁剪可分为三种情况:字符串裁剪、字符裁剪和笔画裁剪。

4.在线段AB的编码裁剪算法中,如A、B两点的码逻辑或运算全为0,则该线段位于窗口内;如AB两点的码逻辑与运算结果不为0,则该线段在窗口外。

5. n边多边形关于矩形窗口进行裁剪,结果多边形最多有2n个顶点,最少有n个顶点。

6.对一条等长的直线段裁剪,编码裁剪算法的速度和中点分割算法的裁剪速度哪一个快,无法确定。(√)

7.多边形裁剪可以看做是线段裁剪的组合。(X)

8.对于线段来说,中点分割算法要比其他线段裁剪算法的裁剪速度快。(X)

9.多边形的Weiler-Atherton裁剪算法可以实现对任意多边形的裁剪。(√)

1.几何变换是指改变几何形状和位置,非几何变换是指改变图形的颜色、线型等属性。变换方法有对象变换(坐标系不动)和坐标变换(坐标系变化)两种。

2.坐标系可以分为以下几种:世界坐标系(是对计算机图形场景中所有图形对象的空间定位和定义,是其他坐标系的参照)、模型坐标系(用于设计物体的局部坐标系)、用户坐标系(为了方便交互绘图操作,可以变换角度、方向)、设备坐标系(是绘制或输出图形的设备所用的坐标系,采用左手系统)。

3.将用户坐标系中需要进行观察和处理的一个坐标区域称为窗口,将窗口映射到显示设备上的坐标区域称为视区。从窗口到视区的变换,称为规格化变换。(eg.4-1)

4.所谓体素,是指可以用有限个尺寸参数定位和定形的体,如长方体、圆锥体。

5.所谓齐次坐标表示,就是用n+1维向量表示n维的向量。

6.二维点(x,y)的齐次坐标可以表示为:(hx hy h),其中h≠0。当h=1时称为规范化的齐次坐标,它能保证点集表示的唯一性。

7.旋转变换公式的推导、对称变换

1.交互绘图技术是一种处理用户输入图形数据的技术,是设计交互绘图系统的基础。常见的交互绘图技术有:定位技术、橡皮筋技术、拖曳技术、定值技术、拾取技术、网格与吸附技术。

2.常用的橡皮筋技术有:橡皮筋直线、橡皮筋矩形、橡皮筋圆。

3.拖曳技术是将形体在空间移动的过程动态地、连续地表示出来,直到用户满意。

4.定值技术有2种:一种是键入数值,另一种是改变电位计阻值产生要求的数量,可以用模拟的方式实现电位计功能。

5.拾取一个基本的对象可以通过:指定名称法、特征点发、外界矩阵法、分类法、直接法。

1.点、线、面是形成三维图形的基础,三维变换是从点开始。

2.三维图形变换分类:三维图形变换包括三维几何变换和平面几何变换,三维几何变换包括基本几何变换和复合变换;平面几何变换包括平行投影和透视投影,平行投影包括正投影和轴测投影,透视投影包括一点透视、二点透视、三点透视。

3.投影中心与投影面之间的距离是无限的投影叫做平行投影,它包括正投影和轴测投影。

4.正投影形成的视图包括:主视图、俯视图和左视图。轴测投影形成的视图为轴测图。

5.透视投影也称为中心投影,其投影中心与投影面之间的距离是有限的。其特点是产生近大远小的视觉效果

6.对于透视投影,不平行于投影面的平行线的投影会汇聚到一个点,这个点称为灭点。透视投影的灭点有无限多个,与坐标轴平行的平行线在投影面上形成的灭点称为主灭点。主灭点最多有3个,其对应的透视投影分别称为一点透视、二点透视、三点透视。

1.型值点是曲面或曲线上的点,而控制点不一定在曲线曲面上,控制点的主要目的是用来控制曲线曲面的形状。

2.插值和逼近是曲线曲面设计中的两种不同方法。插值—生成的曲线曲面经过每一个型值点,逼近—生成的曲线曲面靠近每一个控制点。

3.曲线曲面的表示要求:唯一性、统一性、几何不变性、几何直观、易于界定、易于光滑连接。

4.曲线曲面有参数和非参数表示,但参数表示较好。非参数表示又分为显式和隐式两种。

5.对于一个平面曲线,显式表示的一般形式是:y=f(x)。一个x与一个y对应,因此显式方程不能表示封闭或多值曲线。例不能用显式方程表示一个圆。

6.如果一个曲线方程表示为f(x,y)=0的形式,我们称之为隐式表示。其优点是易于判断函数f(x,y)是否大于、小于或等于零,即易于判断是落在所表示曲线上还是在曲线的哪一侧。

7.参数连续与几何连续的区别:参数连续性是传统意义上的、严格的连续,而几何连续性只需限定两个曲线段在交点处的参数导数成比例,不必完全相等,是一种更直观、易于交互控制的连续性。

8.在曲线曲面造型中,一般只用到C1(1阶参数连续)、C2(2阶参数连续)、G1(1阶几何连续)、G2(2阶几何连续)。切矢量(一阶导数)反映了曲线对参数t的变化速递,曲率(二阶导数)反映了曲线对参数t变化的加速度。

9.通常C1连续必能保证G1的连续,但G1的连续并不能保证C1连续。

10.对于三次Hermite曲线,用于描述曲线的可供选择的条件有:端点坐标、切矢量和曲率。

11.三次Hermite曲线特点:①可局部调整,因为每个曲线段仅依赖于端点约束;②基于Hermite样条的变化形式有Cardinal样条和Kochanek-Bartels样条;③具有几何不变性。

12. Bezier曲线的性质:①端点性质②端点切矢量③端点的曲率④对称性⑤几何不变性⑥凸包性⑦变差缩减性。

13.一次Bezier曲线是连接起点P0和终点P1的直线段,二次Bezier曲线对应一条起点P0终点在P2处的抛物线。

14. B样条曲线的性质:①局部性②连续性或可微性③几何不变性④严格凸包性⑤近似性⑥变差缩减性。

15. NURRS曲线具有以下性质:①局部性②可微性③仿射不变性④严格保凸性⑤一般性⑥变差缩减性⑦端点性质。

1.要把三维物体的信息显示在二维显示设备中,必须通过投影变换。由于投影变换失去了深度信息,往往会导致二义性,要消除二义性,就必须在绘制时消除实际不可见的线和面,称作消除隐藏线和隐藏面,简称消隐。

2.面消隐常用算法有:深度缓冲区(Z-buffer)算法和深度排序算法(画家算法)。

3.深度缓冲区算法和深度排序算法的区别: