真正实现C语言绘制数学函数图像
c语言 希尔伯特曲线
c语言希尔伯特曲线
希尔伯特曲线是一种由德国数学家大卫·希尔伯特在1891年定
义的分形曲线,也被称为希尔伯特空间填充曲线。
它具有许多有趣的性质和应用,包括在图像压缩、信号处理和计算机图形学中的应用。
在C语言中,我们可以通过递归算法来实现希尔伯特曲线的绘制。
具体的实现过程如下:
1. 定义一个绘制函数,该函数接受四个参数:起始点的坐标、
线段的长度、绘制方向和递归的深度。
2. 在绘制函数中,首先根据当前的方向和线段长度计算出终止
点的坐标。
3. 如果递归深度为0,表示已经到达最底层,直接绘制一条线
段连接起始点和终止点。
4. 如果递归深度不为0,那么需要先递归绘制下一层的曲线。
具体的方法是将线段长度除以2,然后将当前方向逆时针旋转90度
分别得到三个新的方向,接着分别以起始点和终止点为起点,递归调用绘制函数。
5. 最后,在所有递归调用完成后,再绘制一条线段连接起始点
和终止点。
通过以上的实现方法,我们就可以在C语言中实现希尔伯特曲线的绘制了。
这不仅可以帮助我们深入理解分形图形的生成原理,还可以展示C语言的递归和图形绘制能力。
- 1 -。
c语言circle画圆函数
c语言circle画圆函数C语言是一种广泛应用于计算机编程领域的高级编程语言,它具有简单易学、高效实用等特点。
在C语言中,我们可以使用circle画圆函数来绘制圆形图形。
下面,我将详细介绍如何使用C语言circle画圆函数来实现圆形图形的绘制。
首先,我们需要了解C语言circle画圆函数的基本语法。
在C语言中,circle画圆函数的语法格式如下:circle(x, y, r);其中,x和y分别表示圆心的横坐标和纵坐标,r表示圆的半径。
通过调用circle函数,我们可以在屏幕上绘制出一个圆形图形。
接下来,我们可以通过一个简单的例子来演示如何使用C语言circle画圆函数来绘制圆形图形。
具体代码如下:#include <graphics.h>int main(){int gd = DETECT, gm;initgraph(&gd, &gm, "");circle(200, 200, 100);getch();closegraph();return 0;}在上述代码中,我们首先使用了graphics.h头文件中的initgraph函数来初始化图形界面。
然后,我们调用circle函数来绘制一个圆心坐标为(200, 200),半径为100的圆形图形。
最后,我们使用getch函数来等待用户按下任意键,然后使用closegraph函数来关闭图形界面。
通过上述例子,我们可以看到,使用C语言circle画圆函数来绘制圆形图形非常简单。
只需要传入圆心坐标和半径等参数即可。
同时,我们还可以通过调整圆心坐标和半径等参数来绘制不同大小和位置的圆形图形。
总之,C语言circle画圆函数是一种非常实用的绘图函数,它可以帮助我们快速绘制出各种形状的圆形图形。
如果您正在学习C语言编程,那么我强烈建议您学习和掌握这个函数,它将会对您的编程学习和实践产生非常大的帮助。
C语言画图函数
C语言画图函数与图形有关的函数GRAPHICS.H 库文件bar【功能】画出一条栏目。
【原型】void far bar(int left,int top,int right,int bottom)【位置】graphics.hgraphics.h【参见】bar3d,setfillstyle,rectanglebar3d【功能】画出一条3-D栏目。
【原型】void far bar3d(int left,int top,int right,int bottom,int depth,int topflag) 【位置】graphics.h【参见】barcircle【功能】以(x,y)为圆心按照指定的半径画出一个圆。
【原型】void far circle(int x,int y,int radius)【位置】graphics.h【参见】arccleardevice【功能】清除图形画面。
【原型】void far cleardevice(void)【位置】graphics.h【参见】clearviewportclearviewport【功能】清除当前可视区域。
【原型】clearviewport(void)【位置】graphics.h【参见】setviewport,cleardeviceclosegraph【功能】关闭图形系统。
【原型】void far closegraph(void)【位置】graphics.h【参见】initgraphdetecgraph【功能】通过检查硬件确定使用的图形驱动程序和模式。
【原型】void far detectgraph(int far *graphdriver,int far *graphmode)【位置】graphics.h【参见】initgraph,graphresultdrawpoly【功能】画出一个多边形的轮廓。
【原型】void far drawpoly(int numpoints,int far polypoints[])【位置】graphics.h【说明】polypoints中包括一共numpoints对数值。
3种c#画图方法
3种c#画图方法1 //描绘曲线//创建曲线中的点Point point1 = new Point(68, 420);Point point2 = new Point(71, 410);Point point3 = new Point(74, 423);Point point4 = new Point(77, 412);Point point5 = new Point(80, 400);Point point6 = new Point(90, 380);Point point7 = new Point(100, 350);Point point8 = new Point(120, 320);Point[] curvePoints = { point1, point2, point3, point4, point5, point6, point7, point8 };GraphicsPath myPath = new GraphicsPath();//AddCurve(点阵,起点,终点,弯曲程度)myPath.AddCurve(curvePoints, 0, 7, 0.8f);Pen myPen = new Pen(Color.Red, 1);IMG.DrawPath(myPen, myPath);---------------------------------------------------------------------------------------------2 c#.net画曲线图(坐标)using System.Drawing.Imaging;using System.Drawing.Drawing2D;//数据/月份public ArrayList arrData=new ArrayList();public ArrayList arrMonth=new ArrayList();//定义幕布高宽private int iCanvasWidth=400;private int iCanvasHeight=300;//x轴的间距private int iX=30;//y轴间距private int iY=15;public void InitArray(){for(int i=0;i<6;i++)arrMonth.Add(i+1);arrData.Add(200);arrData.Add(180);arrData.Add(285);arrData.Add(290);arrData.Add(275);arrData.Add(350);}// //pen 画线// Pen myPen = new Pen(Color.Black);// Graphics g = this.CreateGraphics();// g.DrawEllipse(myPen, 20, 30, 10, 50);//// Graphics g1 = this.CreateGraphics();// SolidBrush myBrush = new SolidBrush(Color.Red);// g1.FillEllipse(myBrush,20,30,40,40);// g1.FillRectangle(myBrush,70,70,10,30);this.InitArray();Bitmap bitmap= new Bitmap(iCanvasWidth, iCanvasHeight,PixelFormat.Format24bppRgb);//Graphics g=Graphics.FromImage(bitmap);Graphics g=this.CreateGraphics();g.Clear(Color.White);Font font = new Font("MS UI Gothic",12);SolidBrush brush = new SolidBrush(Color.Black);Pen pen = new Pen(Color.Black);pen.EndCap = LineCap.ArrowAnchor;pen.DashStyle = DashStyle.Solid;//坐标轴g.DrawLine(pen,20,220,420,220);g.DrawLine(pen,20,220,20,20);//x轴标格g.DrawLine(Pens.Black,20+iX*1,220,20+iX*1,220-2);g.DrawLine(Pens.Black,20+iX*2,220,20+iX*2,220-2);g.DrawLine(Pens.Black,20+iX*3,220,20+iX*3,220-2);g.DrawLine(Pens.Black,20+iX*4,220,20+iX*4,220-2);g.DrawLine(Pens.Black,20+iX*5,220,20+iX*5,220-2);g.DrawLine(Pens.Black,20+iX*6,220,20+iX*6,220-2);//y轴标格g.DrawLine(Pens.Black, 20, 220 - iY*1, 20 + 2, 220 - iY*1);g.DrawLine(Pens.Black, 20, 220 - iY*2, 20 + 2, 220 - iY*2);g.DrawLine(Pens.Black, 20, 220 - iY*3, 20 + 2, 220 - iY*3);g.DrawLine(Pens.Black, 20, 220 - iY*4, 20 + 2, 220 - iY*4);g.DrawLine(Pens.Black, 20, 220 - iY*5, 20 + 2, 220 - iY*5);g.DrawLine(Pens.Black, 20, 220 - iY*6, 20 + 2, 220 - iY*6); //double dblX1=20;double dblY1=220;for(int i=0;i<arrdata.count;i++)< p="">{double dblData=Convert.ToDouble(arrData[i]);double dblY2=220-dblData*15/200;double dblX2=20+iX*Convert.ToInt32(arrMonth[i]);if(i!=0){if(i<arrdata.count-1)< p="">{g.DrawLine(Pens.Black,float.Parse(dblX1.ToString()),float.Pars e(dblY1.ToString()),float.Parse(dblX2.T oString()),float.Parse(dblY2.ToString()));}else{g.DrawLine(pen,float.Parse(dblX1.T oString()),float.Parse(dblY1.ToString()),float.Parse( dblX2.ToString()),float.Parse(dblY2.ToStri ng()));}}dblX1=dblX2;dblY1=dblY2;}}}}-------------------------------------------------------------------------------------------------------C#画折线图一例在.net中,微软给我们提供了画图类(system.drawing.imaging),在该类中画图的基本功能都有。
c语言画图基本函数
c语言画图基本函数基本图形函数包括画点,线以及其它一些基本图形的函数。
本节对这些函数作一全面的介绍。
1、画点I. 画点函数 void far putpixel(int x, int y, int color);该函数表示有指定的象元画一个按color 所确定颜色的点。
对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。
在图形模式下,是按象元来定义坐标的。
对VGA适配器,它的最高分辨率为640x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。
屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。
TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。
关于点的另外一个函数是: int far getpixel(int x, int y); 它获得当前点(x, y)的颜色值。
II、有关坐标位置的函数int far getmaxx(void);返回x轴的最大值。
int far getmaxy(void); 返回y轴的最大值。
int far getx(void); 返回游标在x轴的位置。
void far gety(void); 返回游标有y轴的位置。
void far moveto(int x, int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。
void far moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。
2、画线I. 画线函数TURBO C提供了一系列画线函数,下面分别叙述:void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。
void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。
利用C语言画图例子
利用C语言画图例子利用C语言画图例子1)/*#include // 就是需要引用这个图形库 #includevoid main()#include#includevoid main(){initgraph(640, 480); // 这里和 TC 略有区别circle(200, 200, 100); // 画圆,圆心(200, 200),半径100 getch(); // 按任意键继续closegraph(); // 关闭图形界面printf("***\n");}*/2)/*#include#include#includevoid main(){// 设置随机函数种子srand((unsigned) time(NULL));// 初始化图形模式initgraph(640, 480);int x, y;char c;setfont(16, 8, "Courier"); // 设置字体while(!kbhit()){for (int i=0; i<479; i++){setcolor(GREEN);for (int j=0; j<3; j++){x = (rand() % 80) * 8;y = (rand() % 20) * 24;c = (rand() % 26) + 65; outtextxy(x, y, c);}setcolor(0);line(0,i,639,i);Sleep(10);if (kbhit()) break;}}// 关闭图形模式closegraph();}*/3)/*#include#include#include#define MAXSTAR 200 // 星星总数struct STARdouble x;int y;double step;int color;};STAR star[MAXSTAR];// 初始化星星void InitStar(int i){star[i].x = 0;star[i].y = rand() % 480;star[i].step = (rand() % 5000) / 1000.0 + 1; star[i].color = (int)(star[i].step * 255 / 6.0 + 0.5); // 速度越快,颜色越亮star[i].color = RGB(star[i].color, star[i].color, star[i].color);}// 移动星星void MoveStar(int i){// 擦掉原来的星星putpixel((int)star[i].x, star[i].y, 0);// 计算新位置star[i].x += star[i].step;if (star[i].x > 640) InitStar(i);// 画新星星putpixel((int)star[i].x, star[i].y, star[i].color); }// 主函数void main()srand((unsigned)time(NULL)); // 随机种子initgraph(640, 480); // 打开图形窗口// 初始化所有星星for(int i=0; i<="" p="">{InitStar(i);star[i].x = rand() % 640;}// 绘制星空,按任意键退出while(!kbhit()){for(int i=0; i<="" p="">MoveStar(i);Sleep(20);}closegraph(); // 关闭图形窗口}*/4)/*#include#includevoid main(){float H, S, L;initgraph(640, 480);// 画渐变的天空(通过亮度逐渐增加)H = 190; // 色相S = 1; // 饱和度L = 0.7f; // 亮度for(int y = 0; y < 480; y++){L += 0.0005f;setcolor( HSLtoRGB(H, S, L) );line(0, y, 639, y);}// 画彩虹(通过色相逐渐增加)H = 0;S = 1;L = 0.5f;setlinestyle(PS_SOLID, NULL, 2); // 设置线宽为 2 for(int r = 400; r > 344; r--){H += 5;setcolor( HSLtoRGB(H, S, L) );circle(500, 480, r);}getch();closegraph();}*/5)#include#includevoid main(){// 初始化图形窗口initgraph(640, 480);MOUSEMSG m; // 定义鼠标消息while(true){// 获取一条鼠标消息m = GetMouseMsg();switch(m.uMsg){case WM_MOUSEMOVE:// 鼠标移动的时候画红色的小点putpixel(m.x, m.y, RED);break;case WM_LBUTTONDOWN:// 如果点左键的同时按下了 Ctrl 键if (m.mkCtrl)// 画一个大方块rectangle(m.x-10, m.y-10, m.x+10, m.y+10); else// 画一个小方块rectangle(m.x-5, m.y-5, m.x+5, m.y+5); break;case WM_RBUTTONUP:return; // 按鼠标右键退出程序}}// 关闭图形窗口closegraph();}。
c语言画图函数
(一) 像素函数putpixel() 画像素点函数功能:函数putpixel() 在图形模式下屏幕上画一个像素点。
用法:函数调用方式为void putpixel(int x,int y,int color); 说明:参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。
此函数相应的头文件是graphics.h 返回值:无例:在屏幕上(6,8)处画一个红色像素点:putpixel(6,8,RED);getpixel()返回像素色函数功能:函数getpixel()返回像素点颜色值。
用法:该函数调用方式为int getpixel(int x,int y); 说明:参数x,y为像素点坐标。
函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette()函数)。
这个函数相应的头文件为graphics.h 返回值:返回一个像素点色彩值。
例:把屏幕上(8,6)点的像素颜色值赋给变量color。
color=getpixel(8,6);编辑本段(二) 直线和线型函数有三个画直线的函数,即line(),lineto(),linerel()。
这些直线使用整型坐标,并相对于当前图形视口,但不一定受视口限制,如果视口裁剪标志clip为真,那么直线将受到视口边缘截断;如果clip为假,即使终点坐标或新的当前位置在图形视口或屏幕极限之外,直线截断到屏幕极限。
有两种线宽及几种线型可供选择,也可以自己定义线图样。
下面分别介绍直线和线型函数。
line() 画线函数功能:函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。
用法:该函数调用方式为void line(int startx,int starty,int endx,int endy); 说明:参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。
C语言中的画图函数
C语言中的画图函数基本图形函数包括画点,线以及其它一些基本图形的函数。
本节对这些函数作一全面的介绍。
1、画点I. 画点函数 void far putpixel(int x, int y, int color);该函数表示有指定的象元画一个按color 所确定颜色的点。
对于颜色color 的值可从表3中获得而对x, y是指图形象元的坐标。
在图形模式下,是按象元来定义坐标的。
对VGA适配器,它的最高分辨率为640x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。
屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。
TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。
关于点的另外一个函数是: int far getpixel(int x, int y); 它获得当前点(x, y)的颜色值。
II、有关坐标位置的函数int far getmaxx(void);返回x轴的最大值。
int far getmaxy(void); 返回y轴的最大值。
int far getx(void); 返回游标在x轴的位置。
void far gety(void); 返回游标有y轴的位置。
void far moveto(int x, int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。
void far moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。
2、画线I. 画线函数TURBO C提供了一系列画线函数,下面分别叙述:void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。
void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。
c语言plot函数
c语言plot函数plot函数是C语言中常用的绘图函数之一,它能够通过给定的数据集合,将数据以图形的形式展示出来。
在C语言中,我们可以使用plot函数来绘制各种图形,例如折线图、散点图、柱状图等等。
本文将详细介绍plot函数的用法和一些常见的应用场景。
我们需要了解如何使用plot函数。
在C语言中,plot函数通常需要依赖第三方库来实现,比如使用gnuplot库。
我们可以通过在代码中引入gnuplot库,并且使用相关函数来绘制图形。
下面是一个简单的例子,展示了如何使用plot函数绘制一条简单的折线图。
```c#include <stdio.h>#include <stdlib.h>#include <gnuplot.h>int main(){gnuplot_ctrl *h;h = gnuplot_init();gnuplot_setstyle(h, "lines");gnuplot_plot_x(h, "sin(x)", "Sine function");sleep(2);gnuplot_close(h);return 0;}```在上面的例子中,我们首先初始化一个gnuplot控制器,然后设置绘图的样式为线条样式,接着使用gnuplot_plot_x函数来绘制sin(x)函数的图像,并且给图像添加了标题"Sine function"。
最后,我们使用gnuplot_close函数来关闭gnuplot控制器。
通过上面的例子,我们可以看到plot函数的基本用法。
我们可以通过设置不同的样式、添加不同的数据集合以及设置标题等来实现更加丰富多样的图形展示效果。
接下来,我们将介绍一些常见的plot 函数的应用场景。
plot函数可以用来展示数据的趋势变化。
比如我们可以使用plot函数来绘制某个指标随时间变化的折线图,从而直观地观察到指标的趋势。
用C++实现数学函数图形绘制
用VC++实现数学函数图形绘制Use the VC++ to realize drawing figures of mathematic functions指导教师:付勇制作人:刘海,卢文娟Tutor: Fu yongProducer:Liu hai 、Lu wenjuan摘要Visual C++(以下简称VC++)是面向对象与可视化软件开发工具中比较成熟的一类。
MFC是VC++中直接由Microsoft提供的类库,它集成了大量已定义好的类,我们可以根据需要,调用相应类,或根据需要自定义类。
正是基于MFC 的这种特性,我们试图设计出具有封装性、独立性的功能模块------函数数据生成模块,函数曲线输出模块,模块之间的桥梁是由模板类CArray派生的CPoint 类数组充当的。
函数数据生成模块用来实现对函数的设置并获得采样点,数组得到采样点数据并将其传递到输出模块中。
从整体来看,实现了各程序模块的独立性,使得在函数模块中可任意添加、删除函数,可使用不同的DC和GDI,可实现不同的输出方式,整个工程在函数绘图功能上是无限扩展的。
经过反复的调试和检验,我们实现了预期目标。
我们的主要目的是尝试VC++在数学函数绘图方面的功能和应用。
这是对VC++的探索,也是对数学函数绘图多样化的尝试。
关键字数学函数图形绘制模板数组三次样条【Abstract】Visual C++ is one of the object oriented and visual software developer ,which is more mature than others . MFC is a class warehouse which is supplied by Microsoft ,and it contains a great deal of defined classes .we can transfer the corresponded class if necessary ,or give a fresh definition according our needs . Exactly based on MFC this kind of character, we try to design out the function mold which have the function to pack the class and be independent ------Mold for creating Function data, Mold for outputting the function curve, mold piece of born mold piece be sent by Cpoint Array rared by template CArray.The first mold is to make out sets for the function and get data we need which will be sent to the defined array,so now the array have the data that is to be got by the second mold.From whole project,we can see the independence of each mold,and exactly we may increase and decrease functions if necessary,we even can use different DC and GDI to realize the customed exportation method by which we can have a new view of the function curve. So, the function of the project can be extended freely.after repeatedly debugging and examining,we achieve our purpose.The most important thing we are trying is to find a way to connect the VC++ and the figures of mathmetic functions.This is not only a exploration to VC++,but also a attempt for realizing diversifing the mathmetic functions.【Key words】Mathematic functions drawingfigures template array tripline目录用VC++实现数学函数图形绘制 (1)Use the VC++ to realize drawing figures of mathematic functions (1)摘要 (1)关键字 (1)一、引言 (4)二、设计思路 (5)2.1总体结构的设计 (5)2.2基本结构的设计 (6)2.3面临的问题 (6)2.4解决问题的方法 (6)三、实现三次样条函数绘图 (10)3.1函数定义 (10)3.2边界条件 (10)3.3函数表达式 (11)3.4算法 (12)3.5程序实现 (12)3.6效果 (14)四、结论 (16)参考文献 (18)附录 (20)一、引言从事科技研究的人员常常需要解决一些复杂的数学问题,而这些数学问题的解答往往可以从它的函数图形上很直观、明了的表现出来,这时快捷方便的绘制出该数学函数的图形就显得尤为重要。
c语言程序设计 0-360的余弦曲线和直线
c语言程序设计 0-360的余弦曲线和直线C语言程序设计是计算机科学领域中最基础、最重要的一门课程,通过学习C语言程序设计,我们可以深入理解计算机编程的基本原理和方法。
今天我将带你深入探讨C语言程序设计中一个非常重要的主题——0-360的余弦曲线和直线,通过这篇文章,我希望能够帮助你更深入地理解这一概念。
1. 什么是余弦曲线和直线?在C语言程序设计中,余弦曲线和直线是两种常见的数学概念。
余弦曲线是一种周期函数,其图像呈现出波浪形状,可以描述周期性的变化规律;而直线则是一种简单的线性函数,其图像呈现出一条笔直的直线。
在程序设计中,我们经常需要使用余弦曲线和直线来模拟和描述各种实际问题,因此深入理解这两种函数的性质和特点对于我们的编程能力至关重要。
2. 余弦曲线和直线的具体数学表达在C语言程序设计中,我们通常使用数学函数来表示余弦曲线和直线。
余弦曲线的数学表达式为:y = A * cos(B * x + C) + D其中A、B、C、D为常数,x为自变量,y为函数值。
这个表达式描述了余弦曲线的振幅、周期、相位和偏移等重要特性。
而直线的数学表达式为:y = k * x + b其中k为斜率,b为截距,x为自变量,y为函数值。
这个表达式描述了直线的斜率和截距,直线的图像呈现为一条笔直的直线。
3. 在C语言中如何实现余弦曲线和直线在C语言程序中,我们可以使用数学库函数来实现余弦曲线和直线的计算和绘制。
我们可以使用math.h库中的cos函数来计算余弦曲线的数值,然后使用图形库函数来将这些数值绘制成图像。
对于直线,我们可以直接使用线性函数的表达式来进行计算和绘制。
在实际的C语言程序设计中,我们还可以通过循环和逐点计算的方法来绘制余弦曲线和直线的图像,这样可以更加灵活和高效地实现这两种函数的计算和绘制。
4. 个人观点和总结通过本文的深入探讨,我们对C语言程序设计中的余弦曲线和直线有了更深入的理解。
余弦曲线和直线是计算机图形学和科学计算中非常重要的数学工具,深入理解这两种函数的特性和实现方法可以帮助我们更好地应用它们解决实际问题。
c语言(tc)曲线的绘制
rectangle(x00,y20,x11,y21); setcolor(2); setlinestyle(1,1,0); x=x00; for(k=1;k<=10;k++){
w=(int)(log10(k)*200); line(x+w,y20,x+w,y21);
}
x1=x00; for(k=0;k<249;k++){ x2=x1+2; setcolor(63); /*设曲线颜色为白色 */ line(x1,y11-data[k],x2,y11-data[k+1]); /*画一段曲线*/ delay(25000); setcolor(1); /*设曲线颜色为蓝色 */
自动检测图形显示卡
该程序将图形驱动器代码设为DETECT,即自动检测图形显示卡, 装入相应的驱动程序,且选用最高分辨率的图形模式。 #include <graphics.h> main( ) { int driver=DETECT,mode; initgraph(&driver,&mode,” “); setbkcolor(1); circle(320,240,100); getch( ); closegraph( ); } circle( ) 画圆函数,3个参数分别为 圆心的x轴坐标、y轴坐标和半径。
曲线的绘制
Turbo C 提供了功能较强的绘图功能,包括图形库文件 graphics.lib,图形头文件 graphics.h,显示器驱动程序,字符集字 体驱动程序等。 使用与绘图有关的函数之前,要用图形头文件 graphics.h说明。
显示器的工作方式: 1.文本显示方式,80× 25字符分辨率 2.图形显示方式,n×m点阵,如VGA显示器 640 × 480
用C语言实现画图程序
一、选题背景:画图程序,通过画图中的功能绘制出美丽的图案。
二、设计思想:利用数学三角函数制作山峰和花朵出一条曲线、用画圆函数绘制太阳的形状、再进行颜色填充用绘制直线的函数来绘制比较粗的光线、用矩形函数画出矩形的边框、再画地球、直线画赤道、弧线画南北极和钟表的刻度盘。
三、流程图:四、程序清单:#include"graphics.h" /*调用图形库函数*/#include"math.h" /*调用数学函数*/#include"stdio.h" /*调用标准I/O函数*/#define PI 3.141596 /*宏定义PI字符串*/main() /*主函数*/{float i,x,y; /*定义单精度浮点型变量i,x,y*/int gdriver=DETECT,gmode,a=1; /*定义整型变量gdriver,gmode*/initgraph(&gdriver,&gmode,"d:\\tc"); /*定义变量后,初始化图形系统*/cleardevice();setbkcolor(a); /*背景颜色*/printf("\n");printf("\n"); /*C 语言图形函数*/printf("\n");printf(" the following math functions were used in the main function.\n");printf(" setbkcolor(int color);\n"); /* 背景颜色*/printf(" setcolor(int color);\n"); /* 画笔颜色*/printf(" putpexel(x,y,color);\n"); /* 画像素点*/printf(" line(x1,y1,x2,y2)\n"); /* 直线函数*/printf(" rectangle(xl,yt,xr,yb)\n");; /* 矩形函数*/printf(" arc(x,y,as,ae,r)\n"); /* 圆弧函数*/printf(" circle(x,y,r)\n"); /*圆形函数*/printf(" ellipse(x,y,as,ae,rx,ry)\n"); /* 椭圆函数*/printf("\n"); /* 按任意键开始演示*/setcolor(2);setlinestyle(0,0,3);rectangle(4,4,635,475); /*绘制矩形框*/getch();cleardevice();printf("\n"); /* 模拟手工画图*/printf("\n"); /* 函数曲线图形*/setcolor(3);setlinestyle(3,3,3);rectangle(4,4,635,475); /*绘制图纸边框*/for (i=0;i<=2*PI;i+=PI/99999){putpixel(40*i,170-21*i*sin(1.6*i),2);putpixel(40.3*i,170-22*i*sin(1.6*i),3);putpixel(40.6*i,170-23*i*sin(1.6*i),10);}for (i=0;i<=2*PI;i+=PI/99999) /*绘制花朵*/{putpixel(118-15*cos(4*i)*cos(i),160-15*cos(4*i)*sin(i),14);putpixel(118-25*cos(4*i)*cos(i),160-25*cos(4*i)*sin(i),13);putpixel(118-35*cos(4*i)*cos(i),160-35*cos(4*i)*sin(i),10);}for (i=0;i<=PI;i+=PI/99999){putpixel(320-315*cos(i),360-95*sin(i),11); /*绘制拱桥*/ putpixel(320-315*cos(i),360-96*sin(i),11); /*绘制拱桥*/ putpixel(320-315*cos(i),360-97*sin(i),11); /*绘制拱桥*/ }for (a=70;a<=570;a+=50)for (i=0;i<=PI;i+=PI/9999){putpixel(a-25*cos(i),360-40*sin(i),11); /*绘制桥*/}}for (x=0;x<=640;x+=0.001){putpixel(8*x,380-8*sin(x),9); /*绘制曲线水流*/}for (x=0;x<=600;x+=0.001){putpixel(10*x,405-10*sin(x),9); /*绘制曲线水流*/}for (x=0;x<=560;x+=0.001){putpixel(12*x,430-12*sin(x),9); /*绘制曲线水流*/}for(x=60;x<=80;x+=0.01){ellipse(270,360,180 ,0,160-x,25);}for (x=0;x<=520;x+=0.001){putpixel(8*x,455-8*sin(x),9); /*绘制曲线水流*/}setlinestyle(0,0,1);setfillstyle(1,12);fillellipse(320,60,25,25); /*绘制太阳*/for (x=280;x>=250;x-=0.0001)putpixel(x,60,12); /*绘制阳光线*/}for (x=360;x>=390;x+=0.0001){putpixel(x,60,12); /*绘制阳光线*/}for (y=24;y>=12;y-=0.0001){putpixel(320,y,12); /*绘制阳光线*/}for (y=96;y<=108;y+=0.0001){putpixel(320,y,12); /*绘制阳光线*/}setlinestyle(3,0,1);setcolor(12);for (i=0;i<=2*PI;i+=PI/12) /*绘制阳光线*/{line(320+40*cos(i),60-36*sin(i),320+70*cos(i),60-48*sin(i)); for (x=0;x<=55555;x+=0.1){y=y+x; /*延时控制*/}}setcolor(13);setlinestyle(0,0,1);rectangle(460,100,620,200); /*绘制地图框(矩形)*/ setcolor(11);setlinestyle(0,0,3);ellipse(540,150,0,360,77,48); /*绘制地球(椭圆)*/circle(540,150,46); /*绘制经线(圆形)*/ellipse(540,100,210,330,45,16); /*绘制北极圈(椭圆弧)*/ellipse(540,200,30,150,45,16); /*绘制南极圈(椭圆弧)*/setcolor(14);setlinestyle(3,0,1);line(460,150,620,150); /*绘制赤道(水平线)*/line(540,100,540,200); /*绘制经线(垂直线)*/setcolor(11); setlinestyle(0,0,1);for (i=0;i<=2*PI;i+=PI/300){putpixel(590-35*cos(i),50-35*sin(i),11); /*绘制0.1秒刻度*/}setcolor(14);setlinestyle(0,0,1);circle(590,50,2); /*绘制中心轴*/setcolor(13);setlinestyle(0,0,3);for (i=0;i<=2*PI;i+=PI/6){line(590+25*sin(i),50-25*cos(i),590+30*sin(i),50-30*cos(i));/*绘制小时*/for (x=0;x<=5555;x+=0.001){y=y+x; /*延时控制*/}getch();closegraph(); }五、主要解决问题的方法及技术关键1、主要问题及解决方法✓抛物线的画法用插补法画抛物线。
c语言drawellipticalarc函数
c语言drawellipticalarc函数一、函数定义和参数void drawellipticalarc(int x, int y, int xradius, int yradius, int startangle, int endangle);这个函数有六个参数,它们分别是:1. x:表示椭圆圆心的横坐标。
3. xradius:表示椭圆的横轴半径。
5. startangle:表示绘制椭圆弧开始的角度,单位是度。
需要注意的是,startangle和endangle是以3点钟方向为起点,逆时针方向旋转的角度,取值范围是0到360度。
二、函数的工作原理drawellipticalarc函数的工作原理比较简单。
计算出椭圆的长轴和短轴;然后,根据椭圆的参数,生成椭圆上的点;接着,从起始角度开始,沿着逆时针方向绘制弧线。
具体的实现方法是首先将椭圆分成4个象限,分别绘制每个象限的弧线。
对于每个象限,我们先确定起始点和终点,然后计算出中间的每个点,再用线段连接起来。
三、绘制椭圆弧的示例代码上面的代码首先定义了两个变量gd和gm,然后调用了initgraph函数,打开了绘图窗口。
然后,调用drawellipticalarc函数,绘制了一个椭圆弧。
调用getch函数,暂停程序的执行,等待用户按下任意键退出程序。
四、函数的注意事项1. 椭圆的长轴半径和短轴半径必须大于等于0。
2. 绘制的椭圆弧不能完全覆盖整个椭圆,否则,可能会产生意料之外的结果。
3. 起始角度和结束角度必须在0到360度之间,且起始角度必须小于结束角度。
4. 绘制椭圆弧时,需要保证图形窗口处于激活状态,并且设置颜色等属性时,需要事先调用相关函数来设置。
五、总结drawellipticalarc函数是C语言中的一个非常有用的绘图函数,它可以绘制椭圆弧,广泛应用于计算机图形学和游戏开发等领域。
本文介绍了该函数的定义和参数、工作原理、示例代码、注意事项等方面的知识,希望有助于读者更好地了解和使用该函数。
C语言图像函数库详解
图形和图像函数包含在g raphi cs.h里面(一) 像素函数56. pu tpiel() 画像素点函数57.getpi xel()返回像素色函数(二) 直线和线型函数58. line() 画线函数59. li neto() 画线函数60. lin erel() 相对画线函数61. s etlin estyl e() 设置线型函数62. getl inese tting s() 获取线型设置函数63. se twrit emode() 设置画线模式函数(三)、多边形函数64. re ctang le()画矩形函数65. bar() 画条函数66. bar3d()画条块函数67. draw poly() 画多边形函数(四)、圆、弧和曲线函数68. g etasp ectra tio()获取纵横比函数69. ci rcle()画圆函数70. arc() 画圆弧函数71. el lipse()画椭圆弧函数72. f illel lipse() 画椭圆区函数73.piesl ice()画扇区函数74. sec tor()画椭圆扇区函数75. g etarc coord s()获取圆弧坐标函数(五)、填充函数76. se tfill style() 设置填充图样和颜色函数77.setfi llpat tern() 设置用户图样函数78. floo dfill() 填充闭域函数79.fillp oly()填充多边形函数80. g etfil lsett ings() 获取填充设置函数81. getf illpa ttern() 获取用户图样设置函数(六)、图像函数82. i mages ize()图像存储大小函数83.getim age()保存图像函数84. pu timag e() 输出图像函数四、图形和图像函数对许多图形应用程序,直线和曲线是非常有用的。
C语言实现正余弦函数图像的输出!(源码)
C语⾔实现正余弦函数图像的输出!(源码)C语⾔实现源码,供参考!余弦函数:#include<stdio.h>#include<math.h>void main(){double y;int x,m;for(y=1;y>=-1;y-=0.1) /*y为列⽅向,值从1到-1,步长为0.1*/{m=acos(y)*10; /*计算出y对应的弧度m,乘以10为图形放⼤倍数*/for(x=1;x<m;x++) printf(" ");printf("*"); /*控制打印左侧的 * 号*/for(;x<62-m;x++)printf(" ");printf("*\n"); /*控制打印同⼀⾏中对称的右侧*号*/}}正弦函数:#include<stdio.h>#include<math.h>main(){double y;int x,m,i;printf("y=sin(x) [0<x<2*pi]\n");for(y=1;y>=-1;y-=0.1){ /*y为列⽅向,值从1到-1,步长为0.1*/if(y>=0){m=asin(y)*10; /*计算出y对应的弧度m,乘以10为图形放⼤倍数*/for(x=1;x<m;x++)printf(" ");printf("*"); /*控制打印 * 号*/for(;x<31-m;x++)printf(" ");printf("*\n");} /*控制打印同⼀⾏中对称的*号*/else{m=-1*asin(y)*10;for(i=0;i<32;i++)printf(" ");for(x=1;x<m;x++)printf(" ");printf("*");for(;x<31-m;x++)printf(" ");printf("*\n");}}}施杨出品!。
C语言绘制直角坐标系及余弦函数的详细程序[原创]
C语言绘制直角坐标系及余弦函数的详细程序[原创] //目标:在屏幕上用"*"绘制余弦函数cos(x)曲线#include <math.h>#include <stdio.h>#define PI 3.1415#define X_RADIAN(degree) PI*degree/180 //角度转弧度公式#define STEP_Y 0.1 //窗口中y轴方向步长#define STEP_X 10 //窗口中x轴方向步长#define PIXEL_X 70 //直角坐标系中x轴点数#define PIXEL_Y 24 //直角坐标系中y轴点数#define O_X PIXEL_X/2 //直角坐标系中原点(O_X,O_Y)#define O_Y PIXEL_Y/2#define O_X_IN_WIN 0 //窗口中原点(O_X_IN_WIN,O_Y_IN_WIN)#define O_Y_IN_WIN 0#define BOUNDARY_X_L 20 //窗口中x轴负半轴点数#define BOUNDARY_X_R 30 //窗口中x轴正半轴点数#define BOUNDARY_Y_U 10 //窗口中y轴正半轴点数Created by QXY#define BOUNDARY_Y_N 10 //窗口中y轴负半轴点数char check_window_legality(void) //检查窗口的合法性,若窗口比坐标系还大,则error{char rt = 0;if((BOUNDARY_X_L > O_X) || (BOUNDARY_X_R > O_X) || (BOUNDARY_Y_N > O_Y) || (BOUNDARY_Y_U > O_Y)) { printf("error! This window is too big .\n");} else{printf("This window is legal:\n");rt = 1;}return rt;}char dot_in_window(int x,int y) /*判断该打印点是否在画图窗口内*/{char rt = 0;if((x >= O_X - BOUNDARY_X_L)&&(x <= O_X + BOUNDARY_X_R))if((y >= O_Y - BOUNDARY_Y_N)&&(y <= O_Y + BOUNDARY_Y_U))rt = 1;Created by QXYreturn rt;}void main(){unsigned int line,column; /*此为打印页面上的行和列(line,column) <=> (x,y)*/int x_column_in_win, /*图像窗口中的x,y坐标*/y_line_in_win;float x_degree_in_win, //窗口中x轴方向每点代表的角度。
用C语言编程绘制函数的图像源程序
#include<stdio.h>#include<graphics.h>#include<conio.h>float a,b,c,xmin,xmax,max; /*定义全局变量*/void menu(){printf("\n************************************WELCOME************************ *************\n");printf("\n 1.输入参数");printf("\n 2.输入x的范围");printf("\n 3.画函数图像");printf("\n 4.退出");printf("\n*********************************************************************** *********\n");}fun1(){printf("输入a,b,c\n");scanf("%f,%f,%f",&a,&b,&c); /*输入系数a,b,c*/}fun2() /*输入x范围*/{printf("输入xmin,xmax\n");scanf("%f,%f",&xmin,&xmax);}funmax() /*求出x轴最大范围*/{float m,n;if(xmin<0)m=-xmin;elsem=xmin;if(xmax<0)n=-xmax;elsen=xmax;if(m>=n)max=m;elsemax=n;}float funx(float max_x) /*求出x轴对应系数*/{return(max_x/2/max);}float funy(float max_y) /*求出y轴对应系数*/{float d;d=max_y/2/(a*max*max+b*max+c);if(d>0.6)d=0.6;if(d<0.0026)d=0.0026;return(d);}fun3(){int max_x,max_y;int graphdriver=DETECT,graphmode;float x1,y1,x2,y2,x,coe_x,coe_y;initgraph(&graphdriver,&graphmode,""); /*图形初始化*/cleardevice(); /*清屏*/max_x=getmaxx(); /*求出屏幕最大横坐标*/max_y=getmaxy(); /*求出屏幕最大横坐标*/funmax();coe_x=funx(max_x);coe_y=funy(max_y);line(0,240,640,240); /*画直线*/line(320,0,320,480);line(640,240,635,235);line(640,240,635,245);line(320,0,315,5);line(320,0,325,5);outtextxy(320,240,"(0,0)"); /*在固定点输出字符串*/outtextxy(620,240,"x");outtextxy(320,10,"y");x1=max_x/2+xmin*coe_x,y1=max_y/2-(a*xmin*coe_x*xmin*coe_x+b*xmin*coe_x+c)*coe_y; moveto((int)x1,(int)y1);for(x=xmin*coe_x;x<=xmax*coe_x;x++){x2=max_x/2+x,y2=max_y/2-(a*x*x+b*x+c)*coe_y;lineto((int)x2,(int)y2);}getch();closegraph(); /*关闭图形函数*/}main(){int n;menu();while(1){scanf("%d",&n);switch(n){ case 1:fun1();break;case 2:fun2();break;case 3:fun3();break;case 4:exit(0);default:printf("\n error \n");}}}。
c语言circle画圆函数
C语言circle画圆函数介绍在C语言中,我们可以使用数学库函数和循环结构来实现画圆的功能。
本文将详细介绍如何使用C语言编写一个画圆的函数,并提供代码示例和详细解释。
基本原理画圆的基本原理是通过计算圆上每个点的坐标,并将其绘制在屏幕上。
在C语言中,我们可以使用数学库函数来计算圆上的点的坐标,然后使用循环结构将这些点绘制出来。
代码示例下面是一个简单的C语言程序,用于实现画圆的函数:#include <stdio.h>#include <math.h>void drawCircle(int centerX, int centerY, int radius) {int x, y;for (x = centerX - radius; x <= centerX + radius; x++) {y = centerY + sqrt(radius * radius - (x - centerX) * (x - centerX));printf("(%d, %d)\n", x, y);}}函数解析该程序中的drawCircle函数接受三个参数:圆心的x坐标、圆心的y坐标和半径。
函数内部使用一个循环结构来计算圆上的点的坐标,并将其打印出来。
循环结构的起始点为圆心的x坐标减去半径,终止点为圆心的x坐标加上半径。
在每次循环中,我们使用数学库函数sqrt来计算圆上相应x坐标的y坐标。
这里使用了圆的方程y = sqrt(radius * radius - (x - centerX) * (x - centerX))。
下面是一个调用drawCircle函数的示例:int main() {int centerX = 0;int centerY = 0;int radius = 5;drawCircle(centerX, centerY, radius);return 0;}参数说明•centerX:圆心的x坐标。
c语言atan2曲线
c语言atan2曲线在计算机编程中,C语言是一种广泛使用的编程语言之一。
它提供了许多数学函数,其中一个非常有用的函数是atan2。
atan2函数可以计算给定的x和y坐标所对应的角度。
这个函数在计算机图形学和机器人学等领域中经常被使用。
atan2函数的原型如下:```cdouble atan2(double y, double x);```这个函数接受两个参数,y和x,分别表示一个点的坐标。
它返回的结果是一个介于-π到π之间的角度,表示从x轴正方向逆时针旋转到点(x, y)所需的角度。
atan2函数的实现基于反正切函数的性质。
反正切函数可以将一个给定的斜率转换为对应的角度。
而atan2函数则进一步扩展了反正切函数的功能,可以处理任意的x和y坐标。
使用atan2函数可以绘制出一条曲线,这条曲线被称为atan2曲线。
这条曲线的形状与反正切函数的图像类似,但是它可以处理任意的x 和y坐标,而不仅仅是斜率。
为了绘制atan2曲线,我们可以使用C语言的图形库,如OpenGL 或者SDL。
这些库提供了绘制图形的函数,可以将计算得到的角度转换为屏幕上的像素坐标。
下面是一个简单的例子,演示了如何使用C语言的atan2函数绘制一个atan2曲线:```c#include <stdio.h>#include <math.h>#include <SDL2/SDL.h>#define WIDTH 800#define HEIGHT 600int main() {SDL_Window* window = NULL;SDL_Renderer* renderer = NULL;SDL_Init(SDL_INIT_VIDEO);SDL_CreateWindowAndRenderer(WIDTH, HEIGHT, 0, &window, &renderer);SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);SDL_RenderClear(renderer);SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);double x, y, angle;int px, py;for (x = -WIDTH / 2; x < WIDTH / 2; x += 0.1) {y = sin(x);angle = atan2(y, x);px = WIDTH / 2 + x;py = HEIGHT / 2 - y * 100;SDL_RenderDrawPoint(renderer, px, py);}SDL_RenderPresent(renderer);SDL_Delay(5000);SDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);SDL_Quit();return 0;}```这段代码使用SDL库绘制了一个窗口,并在窗口中绘制了一个atan2曲线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用C语言画函数图像
横纵坐标单位长度比校正(3:5)
真正的余弦函数
#include<math.h>
#include<stdio.h>
int sishewuru(float a);
void main()
{
int n = 450;
float a[500], b[500];
int i,j;
a[0] = b[0] = 0;
for (i = 1; i < n; i++)
a[i] = a[i - 1] + 0.01;
b[i] = cos(a[i]);
}
int A[500],B[500];
for (i = 0; i < n; i++)
{
//printf("sin(%f)=%f\n", a[i], b[i]);
a[i] = 100 * a[i];
b[i] = 55 * b[i];
A[i] = sishewuru(a[i]);
B[i] = sishewuru(b[i])+60;
//printf("sin(%d)=%d\n", A[i], B[i]);
}
for ( i = 100; i >=0; i--)
{
for ( j = 0; j < n; j++)
{
if (i==B[j])
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
int sishewuru(float a)
{
int m;
if (a-floor(a)<0.5)
{
m = a;
return m;
}
else
{
m = a + 1;
return m;
}
}
1.调节输出框大小,字符显示大小
2.确定函数的定义域
3.确定定义域上的步长
4.计算函数值
5.确定函数值放大系数
6.确定定义域恰好落在显示的区间内
7.确定坐标的单位长度与字符实际长度之间的换算关系
8.确定打点的顺序与坐标的关系
定义域在)
,(ππ-的正弦函数图像
定义域在),(ππ-的正切函数图像
定义域在)
,(ππ22-的倒正切函数图像
#include <math.h>
#include <stdio.h>
int sishewuru(float a);
void main() {
float minx = -2*3.14,
maxx = 2*3.14,dx,
x[500],y[500],k;//确定定义区间
int lx = 500, i,j, Y[500]; dx = (maxx - minx) / 450; x[0] = minx; y[0] = 0.1 / sin(x[1]);
for (i = 1; i <lx; i++) {
x[i] = x[i - 1] + dx;
y[i] =0.1/sin(x[i]);
}
k = 0.6/ dx;//扩大系数
for (i = 0; i < lx; i++) {
Y[i] = sishewuru(k*y[i]);
//printf("%d\n", Y[i]);
}
for (i = 0; i <130; i++)
{
for (j = 0; j < lx; j++) {
if (i == -Y[j]+65) { printf("*"); }
else
{
printf(" ");
}
}
printf("\n");
} } int sishewuru(float a ) {
int m;
if (a -floor(a )<0.5)
{
m = a ;
return m;
}
else
{
m = a + 1;
return m;
} }
定义域在)
,(ππ22-半径为π的圆
#include<math.h>
#include<stdio.h>
int sishewuru(float a);
void main()
{
float minx = -2*3.14,
maxx = 2*3.14,dx,
x[500],y[2*500],k,r=0.5*maxx;//确定定义区间int lx = 500, i,j, Y[2*500];
dx = (maxx - minx) / 450;
x[0] = minx;
y[0] = 0.1 / sin(x[1]);
for (i = 1; i <lx; i++)
{
x[i] = x[i - 1] + dx;
y[i] =sqrt(r*r-x[i]*x[i]);//确定函数表达式
y[lx + i] = -1*y[i];
}
k = 0.6/ dx;//扩大系数
for (i = 0; i < 2*lx; i++)
{
Y[i] = sishewuru(k*y[i]);
//printf("%d\n", Y[i]);
}
for (i = 0; i <136; i++)
{
for (j = 0; j < lx; j++)
{
if (i == -Y[j] + 68 || i == -Y[j+lx] + 68)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
int sishewuru(float a)
{
int m;
if (a-floor(a)<0.5)
{
m = a;
return m;
}
else
{
m = a + 1;
return m;
}
}。