A. c语言编程 绘制曲线,会的来
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;
}
B. 请教:如何用c语言画曲线
最简单的办法是对区域均匀划分,计算各点的函数值,然后把这些点用直线连接起来。例如,下面是绘制正弦曲线:
moveto(0, 100);
for (i=0; i<=100;i++)
lineto(i, 100 + 100 *sin(M_PI * 2/100.0*i));
但是用直线连接起来不够平滑,也有一些插值方法进行改进。比如采用不等间隔划分区域,或把曲线使用一段段的二次、三次曲线连接起来。你可以参考清华大学出版社出版的《C语言常用算法程序集》
C. 如何用C语言计算一条曲线函数两个横坐标之间的面积
gnu有一个数学的开源库,叫gsl,里面有积分函数,可以直接调用。也可以自己根据积分的原理,取小步长,计算步长和曲线
函数值
间矩形的面积,所有面积的总和即是最终面积。
D. 怎么用c语言画实时曲线
楼主您好,你这个分值已经吸引了我
在下不才,也是自己写过一些c语言画图模式下的程序。所以我认为我在这一方面具有一定的权威.
(文本模式下)
我对于您的问题理解的不是很透彻,但是看字面意思来说,您是想当前坐标赋值给变量,我假设变量为(x、y)分别为x轴、y轴坐标变量。则将坐标赋值,为x=getx();y=gety();
(画图模式下)
在这里,我一般是直接对寄存器进行中断取得
鼠标
的值。在对他进行操作。
c语言只有以上2种模式,通过你的提问,我觉得你问的是文本模式下的。如果你觉得我回答不够详细,可以直接加QQ:942690451
询问。
另外,虚机团上产品团购,超级便宜
E. c语言如何编程求正弦曲线长度
两点距离s[i] = sqrt(dx*dx+dy*dy);
其中: dx = (b-a) / 分成多少份。 积分从 a 积到 b. 用弧度。
y[i]=sin(x); y[i+1]=sin(x+dx); dy= sin(x+dx) - sin(x);
#include <stdio.h>
#include <math.h>
int main( ){
double a,b,dx,x,x2,s=0,dy;
int i;
//scanf("%lf %lf",&a,&b); 可以输入
a=1.5708; b=3.1416;
dx= (b-a)/1000.0;
x=a;
for (i=0;i<1000;i++){
x2=x+dx;
dy = sin(x2)-sin(x);
s= s + sqrt( dx * dx + dy * dy);
x=x2;
}
printf("%lf",s);
return 0;
}
F. C语言如何实现二次曲线拟合
首先,谁都不能根据仅有的数据集来断定这就是什么曲线。
我们只能通过对数据观察推测可能会符合什么形式的曲线。
已知10个数据点的训练集,可以采用多项式拟合的办法来做,但是不建议使用C语言来实现。
这种数学问题用matlab很容易就可以解决,c语言写要麻烦的多的多。比如你采用最小二乘法的话,
你需要自己用c语言写很多矩阵运算。
G. 采用c语言绘制任意函数曲线(双曲线,二次函数,一次函数)怎么做
在c的标准库中有graphic.h头文件,实现了很多画图函数 比如 lineto, moveto, arc,(函数名可能记错,好久没用了-.-!)
直线:起点加终点就行。
二次曲线,比如抛物线,那就以定长拆分成小直线。双曲线同理。
抛物线,和双曲线用定长拆分,估计很难计算。要是精度要求不高就根据情况改成定x,或者定y偏移的拆分,要是精度要求高那就去找直线拟合曲线的算法或者双圆弧拟合曲线的算法。
H. c语言编程绘制曲线
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;
}
求采纳为满意回答。
I. C语言编程坐标曲线
下面是的是昨天的,但是修改了一下坐标的刻度.
/*******************************************************
*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=0;
maxdata=data[0];
for (i=1;i<n;i++)
if (maxdata<data[i])
maxdata=data[i];
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++)
{
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=1;i<=12;i++)
{
j=y0-i*pery;
line(x0,j,x0-2,j); /*刻度线*/
sprintf(str,"%d",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;
}
J. 求教:用C语言怎么实现实时曲线
可以利用 GLUT 程序包 (OpenGL 功能) 动态绘图,例如,一边实时采样,一边显示。
简单的实时曲线可以用 固定 坐标,x 时间轴,y1, y2, ..yn 为实时量,例如 温度,压力,速度..., 用 沿 x 移动的 一根垂线, 表示当前时间分界点,左边的已更新,但垂线移动到x 最右端时,更新 x 坐标刻度,垂线 在从 最左端开始,绘制 新的时段数值。
另一种方法是 固定 x 轴 总时段长度,但是不断更新 x 轴 刻度 和 yi 数据,使整段曲线看上去 是 从右向左 光滑移动动。
参数设置,显示,采样控制等,都 可以在屏幕上用按钮,Text 等 实现。
直接用 OpenGL 则需 用 c++ 程序,MFC + OpenGL 之类 实现。