C语言编程 绘制曲线,会的来

设计要求:绘制一个两维坐标,在坐标轴上标出刻度,并用阿拉伯数字标出。根据所给点的坐标,用线段将每个点连接起来,构成一条曲线。为简单起见,曲线的数据由一位数组给定,数组元素为8个,数组如下:int data[]={7,3,12,6,9,5,8,11};涉及知识:C的图形工作模式。相关函数:initgraph();closegraph();

第1个回答  2009-01-05
TC下调试通过

/*******************************************************
*Author :Wacs5
*Date :20090105(YYYY-MM-DD)
*Function :画简易的曲线图 *********************************************************/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <Graphics.h>

#define n 8

int main()
{
int i,j;
float data[]={7,3,12,6,9,5,8,11};
char str[40];

int gdrive=DETECT,gmode,errorcode;
int maxx,maxy;
int perx,pery;
int x0,x1,y0,y1;
int coloraxis=2,colorline=3;
float mindata,maxdata,ndata;

initgraph(&gdrive,&gmode,""); /*初始化设备*/
if ((errorcode=graphresult())!=grOk) /*查错*/
{
printf("Graphics error:%s\nPress any key to exit:",grapherrormsg(errorcode));
getch();
exit(1);
}
maxx=getmaxx();
maxy=getmaxy();
mindata=maxdata=data[0];
for (i=1;i<n;i++)
{
if (mindata>data[i])
mindata=data[i];
if (maxdata<data[i])
maxdata=data[i];
}
mindata=floor(mindata);
maxdata=ceil(maxdata);

perx=maxx/(n+4);
pery=maxy/(maxdata-mindata+4);
x0=2*perx;
y0=maxy-2*pery;

x1=maxx-2*perx;
y1=2*pery;
setcolor(coloraxis);
line(x0,y0,x1,y0);
line(x0,y0,x0,y1);

line(x1,y0,x1-4,y0+3);
line(x1,y0,x1-4,y0-3);
line(x0,y1,x0+3,y1+4);
line(x0,y1,x0-3,y1+4);

settextjustify(CENTER_TEXT,TOP_TEXT);
for (i=0;i<n;i+=n/3)
{
j=x0+i*perx;
line(j,y0,j,y0+2); /*刻度线*/
sprintf(str,"%d",i);
outtextxy(j,y0+4,str);
}

settextjustify(RIGHT_TEXT,CENTER_TEXT);
for (i=(maxdata-mindata)/3;i<=maxdata-mindata;i+=(maxdata-mindata)/3)
{
j=y0-i*pery;
line(x0,j,x0-2,j); /*刻度线*/
sprintf(str,"%d",(int)mindata+i);
outtextxy(x0-4,j,str);
}

setcolor(colorline);
x1=x0+perx;
y1=y0-(data[0]-mindata)*pery;
circle(x1,y1,2);
moveto(x1,y1);
i=1;
do
{
x1+=perx;
y1=y0-(data[i]-mindata)*pery;
lineto(x1,y1);
circle(x1,y1,2);
moveto(x1,y1);
i++;
}while(i<n);

getch();
closegraph();
return 0;
}本回答被提问者采纳

C语言编程 绘制曲线,会的来
Date :20090105(YYYY-MM-DD)Function :画简易的曲线图 ***\/ include <stdio.h> include <conio.h> include <stdlib.h> include <math.h> include <Graphics.h> define n 8 int main(){ int i,j;float data[]={7,3,12,6,9,5,8,11};char str[40];int gdrive=DETECT,gmode...

C语言编制曲线轨迹动画程序
include <math.h> include <conio.h> include <stdio.h> include <stdlib.h> include <graphics.h> void drawstar(int x, int y, int c, int r, int color);void drawb(int x, int y, int r, int color);void drawb0(int color);int count = 0;int posx[3500], posy[3500];i...

用C语言绘制曲线
楼上的观珠仔很久不见啦(挺挂念那段时光的)!想不到路过此地看到你,这是高科技呀?你还这么老班牙啊,大考小考把你弄糊涂了,高考顺利呀!别忘了我这位老兄了,C语言略懂 ~~~杰 1.绘制余弦曲线 程序说明与注释 include<stdio.h> include<math.h> void main(){ double y;int x,m;for(y...

用C语言画希尔伯特曲线
希尔伯特曲线,一种由数学家David Hilbert发现的空间填充曲线,描述了如何用一笔画填充二维空间。本文将介绍如何使用C语言绘制这种曲线。首先,一种基于矢量的方法被找到,通过生成四个顶点,然后连接顶点形成曲线。第二阶曲线通过第一阶的四个顶点位置,加上旋转和缩小,生成四个“⊓”形状。最后生成...

...已知函数转换成坐标曲线的形式,不是用*来画曲线,是实实在在的坐标...
可以,要看你是什么函数。C图形函数库里有如画椭圆的函数。但如果你想画其他函数曲线,一般的方法是用点来模拟。取很多个x,y...然后在相邻的两个上连线。就行了。

c语言画曲线
include "genlib.h"include "graphics.h"main(){ InitGraphics();MovePen(1.5,1.0);DrawArc(0.5,90.180);} 这个是c语言的画圆弧的代码,不过我在vc ,tc上运行的话,它都是说没这个"genlib.h"头文件的,所以机子上到现在还是没运行成功,这个是有本书上的原代码,那个叫《c语言的科学和...

C语言绘制而次函数曲线~~高手请进~~~!!!
{int gd=DETECT,gm,p=1,i;double a,b,c,x,y,x1,y1,t;char ch;initgraph(&gd,&gm,"");while(p==1) \/*主循环体*\/ { setbkcolor(BKC);setcolor(14);setlinestyle(0,0,1);rectangle(0,0,639,479); \/*画边框*\/ line(20,460,639,460); \/*画横坐标*\/ line(20,0,20...

怎样用c语言画函数曲线图
main(){ double y;int x,m,i;printf("y=sin(x)[0<x<2*pi]\\n");for(y=1;y>=-1;y-=0.1){ if(y>=0){ m=asin(y)*10;for(x=1;x<m;x++)printf("");printf("*",m);for(;x<31-m;x++)printf("");printf("*\\n");} else{ m=-1*asin(y)*10;for(i=0;i<...

如何用c语言画函数图像
用GDI绘图吧,比较简单。绘图的思想是让x以固定的值在区间内持续增长,比如x=0.1,0.2,0.3...,以计算出的y值来确定y坐标。用线连接所有的点就行了。MoveTo(),LineTo()函数你用得着,具体情况请自行查看MSDN。

采用c语言绘制任意函数曲线(双曲线,二次函数,一次函数)??怎么做...
在c的标准库中有graphic.h头文件,实现了很多画图函数 比如 lineto, moveto, arc,(函数名可能记错,好久没用了-.-!)直线:起点加终点就行。二次曲线,比如抛物线,那就以定长拆分成小直线。双曲线同理。抛物线,和双曲线用定长拆分,估计很难计算。要是精度要求不高就根据情况改成定x,或者定y...

相似回答