重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
void main()
成都创新互联公司专注于石台网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供石台营销型网站建设,石台网站制作、石台网页设计、石台网站官网定制、微信小程序开发服务,打造石台网络公司原创品牌,更为您提供石台网站排名全网营销落地服务。
{
double a,b,c;
double x1,y1,x2,x3,y2,y3;
double m;
printf("please input 3 points:\n");
printf("(x1,y1),(x2,y2),(x3,y3):\n");
scanf("%lf%lf%lf%lf%lf%lf",x1,y1,x2,y2,x3,y3);
m = x1*x1*x2+x2*x2*x3+x1*x3*x3-x3*x3*x2-x2*x2*x1-x1*x1*x3;
printf("////////////////////////////////////////////////\n");
if((m+1)==1)
{
printf("No result with this 3 points!\n");
}
else
{
a=(y1*x2+y2*x3+y3*x1-y3*x2-y2*x1-y1*x3) /m;
b=(x1*x1*y2+x2*x2*y3+x3*x3*y1-x3*x3*y2-x2*x2*y1-x1*x1*y3)/m;
c=(x1*x1*x2*y3+x2*x2*x3*y1+x3*x3*x1*y2-x3*x3*x2*y1-x2*x2*x1*y3-x1*x1*x3*y2)/m;
printf("y = ax^2 + bx + c\n(a=%lf,b=%lf,c=%lf)\n",a,b,c);
}
printf("press any key to quit:\n");
getch();
}
在c的标准库中有graphic.h头文件,实现了很多画图函数 比如 lineto, moveto, arc,(函数名可能记错,好久没用了-.-!)
直线:起点加终点就行。
二次曲线,比如抛物线,那就以定长拆分成小直线。双曲线同理。
抛物线,和双曲线用定长拆分,估计很难计算。要是精度要求不高就根据情况改成定x,或者定y偏移的拆分,要是精度要求高那就去找直线拟合曲线的算法或者双圆弧拟合曲线的算法。
/*这是一个画抛物线的程序*/
#includegraphics.h
#define BKC 9
#define COLOR 8 /* 抛物线颜色*/
#define G 9.856
main()
{int gd=DETECT,gm,p=1,i;
double Vx,Vy,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,460); /*画纵坐标*/
outtextxy(8,467,"0");
setlinestyle(1,0,1);
setcolor(15);
for(i=20;i640;i+=20)line(i,460,i,0);
for(i=460;i0;i-=20)line(20,i,640,i);
gotoxy(1,1);
printf("Please Enter Vx:" );
scanf("%lf",Vx);
printf("Please Enter Vy:");
scanf("%lf",Vy);
for(t=0.0;;t+=0.00002)
{
x=Vx*t;
y=Vy*t-0.5*G*t*t;
x1=2*x+20; /*画笔定位在用户坐标原点 (20,460) */
y1=460-y*2;
if(y1460.0||x1640.0) break;
putpixel(x1,y1,COLOR);
}
setcolor(12);
outtextxy(250,8,"Finished! Continue(Y/N)?");
p=-1;
while(p==-1)
{
ch=getch();
if(ch=='y'||ch=='Y') { cleardevice();p=1;}
else if(ch=='n'||ch=='N') p=0;
else outtextxy(220,200,"ERROR! Please Press 'Y' or 'N'_" );
}
}
closegraph();
}