真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

直線函數(shù)法c語言程序 c語言編程數(shù)學(xué)函數(shù)

兩點確定一條直線 C語言源程序該怎么寫

直線:Ax+By+C=0

成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗。創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價值服務(wù)。

兩點:A(Xa,Ya),B(Xb,Yb)

typedef struct

{

volatile float A;

volatile float B;

volatile float C;

} line_t;

void lineFun(float Xa,float Ya, float Xb,float Yb,line_t *line)

{

line-A = Yb - Ya;

line-B= Xa - Xb;

line-C = Xb * Ya - Xa * Yb;

}

利用C語言編寫 能夠畫出任意的直線算法程序(利用畫點函數(shù))

上次剛寫過,在VC下運行的,

int dx,dy,incrE,incrNE,d,x,y;

if ((point[1].x-point[0].x)==0){ //垂直的直線

x=point[0].x;

for(y=point[0].y;ypoint[1].y;y++)

pDC-SetPixel(x,y,50);

}

else if(abs((point[1].y-point[0].y)/(point[1].x-point[0].x))=1){ //斜率 -1到 1 之間

dx=point[1].x-point[0].x;

dy=point[0].y-point[1].y;

d=dx-2*dy;

incrE=-2*dy;

incrNE=2*(dx-dy);

x=point[0].x,y=point[0].y;

pDC-SetPixel(x,y,50);

if(point[0].ypoint[1].y){

while(xpoint[1].x)

{

if(d=0){

d+=incrE;

x++;

}

else

{d+=incrNE;

x++;

y--;

}

pDC-SetPixel(x,y,50);

}

}

else if(point[0].y=point[1].y){

dy=point[1].y-point[0].y;

incrE=-2*dy;

incrNE=2*(dx-dy);

x=point[0].x,y=point[0].y;

pDC-SetPixel(x,y,50);

while(xpoint[1].x)

{

if(d=0){

d+=incrE;

x++;

}

else

{d+=incrNE;

x++;

y++;

}

pDC-SetPixel(x,y,50);

}

}

}

else { //斜率 -1 和 1的直線

if(point[1].x=point[0].x){

dx=point[1].x-point[0].x;

dy=point[1].y-point[0].y;

d=2*dx-dy;

incrE=2*dx;

incrNE=2*(dx-dy);

x=point[0].x,y=point[0].y;

pDC-SetPixel(x,y,50);

while(xpoint[1].x)

{

if(d0){

d+=incrE;

y++;

}

else

{d+=incrNE;

pDC-SetPixel(x,y,50);

x++;

y++;

}

pDC-SetPixel(x,y,50);

}

}

else if((point[1].y-point[0].y)/(point[1].x-point[0].x)-1){

dx=point[1].x-point[0].x;

dy=point[0].y-point[1].y;

d=2*dx-dy;

incrE=2*dx;

incrNE=2*(dx-dy);

x=point[0].x,y=point[0].y;

pDC-SetPixel(x,y,50);

while(ypoint[1].y)

{

if(d0){

d+=incrE;

y++;

}

else

{d+=incrNE;

x--;

y++;

}

pDC-SetPixel(x,y,50);

}

}

}

求大神幫忙編寫用直線函數(shù)法對圓弧進行第三象限的順時針插補,最好是有界面顯示的,采納答案前必追加財富

這是我自己編的一個程序仿真通過,控制核心板是51單片機可以參考:

//第一象限順弧

#includereg51.h

//#define xe 10 //終點橫坐標(biāo)

//#define ye 0 //終點縱坐標(biāo)

//#define x0 10 //起點橫坐標(biāo)

//#define y0 0 //起點縱坐標(biāo)

//#define R 10 //半徑

void xzRotateStep(); // X向走一步

void yzRotateStep(); // -x向走一步

void xfRotateStep(); // y向走一步

void yfRotateStep(); // -y向走一步

void d1shun(); //第一象限順弧

void d4shun(); //第二象限順弧

void d3shun(); //第三象限順弧

void d2shun(); //第四象限順弧

int kx=0x01; int ky=0x10; //

/*延時函數(shù)*/

void display(int x)

{

int i,y;

for(i=x;i0;i--)

for(y=100;y0;y--);

}

void main()

{

d1shun();

d4shun();

d3shun();

d2shun();

}

void d1shun()

{

int F,xi,yi,count ;// (xi,yi)為動點坐標(biāo),F(xiàn)為偏差值,count為計數(shù)值。

int k=0;

int kx=

F=xi=0;

yi=10;

count=20;

do{

if(F=0)

{

yfRotateStep(); //-y向走一步

F=F-2*yi+1;

xi=xi;

yi=yi-1;

}

else

{

xzRotateStep(); //+x向走一步

F=F+2*xi+1;

xi=xi+1;

yi=yi;

}

count--; k++;

P2=k;

}

while(count) ; //計數(shù)為0?

}

void d4shun()

{

int F,xi,yi,count ;// (xi,yi)為動點坐標(biāo),F(xiàn)為偏差值,count為計數(shù)值。

int k=0;

F=xi=10;

yi=0;

count=20;

do{

if(F=0)

{

xfRotateStep(); //-x向走一步

F=F-2*xi+1;

xi=xi-1;

yi=yi;

}

else

{

yfRotateStep(); //-y向走一步

F=F+2*yi+1;

xi=xi;

yi=yi+1;

}

count--; k++;

P2=k;

}

while(count) ; //計數(shù)為0?

}

void d3shun()

{

int F,xi,yi,count ;// (xi,yi)為動點坐標(biāo),F(xiàn)為偏差值,count為計數(shù)值。

int k=0;

F=xi=0;

yi=-10;

count=20;

do{

if(F=0)

{

yzRotateStep(); //+y向走一步

F=F-2*yi+1;

xi=xi;

yi=yi-1;

}

else

{

xfRotateStep(); //-x向走一步

F=F+2*xi+1;

xi=xi+1;

yi=yi;

}

count--; k++;

P2=k;

}

while(count) ; //計數(shù)為0?

}

void d2shun()

{

int F,xi,yi,count ;// (xi,yi)為動點坐標(biāo),F(xiàn)為偏差值,count為計數(shù)值。

int k=0;

F=xi=-10;

yi=0;

count=20;

do{

if(F=0)

{

xzRotateStep(); //-x向走一步

F=F-2*xi+1;

xi=xi-1;

yi=yi;

}

else

{

yfRotateStep(); //-y向走一步

F=F+2*yi+1;

xi=xi;

yi=yi+1;

}

count--; k++;

P2=k;

}

while(count) ; //計數(shù)為0?

}

void xzRotateStep()

{

int i;

switch(kx)

{

case 0x01: kx=P1=0x02;display(200);for(i=0;i20000;i++); break;

case 0x02: kx=P1=0x04;display(200);for(i=0;i20000;i++) ;break;

case 0x04: kx=P1=0x01;display(200);for(i=0;i20000;i++) ;break;

}

}

void xfRotateStep()

{

int i;

switch(kx)

{

case 0x01: kx=P1=0x04;display(200);for(i=0;i20000;i++); break;

case 0x04: kx=P1=0x02;display(200);for(i=0;i20000;i++) ;break;

case 0x02: kx=P1=0x01;display(200);for(i=0;i20000;i++) ;break;

}

}

void yzRotateStep()

{

int j ;

switch(ky)

{

case 0x10: ky=P1=0x20;display(200);for(j=0;j20000;j++);break;

case 0x20: ky=P1=0x40;display(200);for(j=0;j20000;j++);break;

case 0x40: ky=P1=0x10;display(200);for(j=0;j20000;j++);break;

}

}

void yfRotateStep()

{

int j ;

switch(ky)

{

case 0x10: ky=P1=0x40;display(200);for(j=0;j20000;j++);break;

case 0x40: ky=P1=0x20;display(200);for(j=0;j20000;j++);break;

case 0x20: ky=P1=0x10;display(200);for(j=0;j20000;j++);break;

}

}

求一用C語言畫直線的程序

C語言的話畫直線用MoveTo()和LineTo()很簡單啊。

幫你復(fù)制一份我學(xué)習(xí)時老師給的畫線兩例:

#includegraphics.h

#includemath.h

/*

###############################################################################

功 能:本函數(shù)的作用是用逐點比較法來畫一條直線

格 式:void myline1(int x1,int y1,int x2,int y2,int color)

參數(shù)說明:x1,y1是起始點坐標(biāo),x2,y2是終止點,color是畫線的顏色

調(diào)用示例:myline1(10,20,500,440,4)

###############################################################################

*/

void myline1(int x1,int y1,int x2,int y2,int color)

{

/*變量定義開始(2007/10/16增加)*/

int iTx; /*x軸終點的相對坐標(biāo)xa或臨時變量*/

int iTy; /*y軸終點的相對坐標(biāo)ya或臨時變量*/

int iDx; /*x軸方向的步長dx*/

int iDy; /*y軸方向的步長dy*/

int iFt; /*偏差Fm*/

int iSt; /*記數(shù)循環(huán)數(shù)(dx+dy)S*/

int iXt; /*x方向循環(huán)變量xm*/

int iYt; /*y方向循環(huán)變量ym*/

/*變量定義結(jié)束*/

/*變量初始化開始*/

/*如果是第三象限或第四象限則換成第一或第二象限*/

if(y2y1)

{

iTx=x1;

x1=x2;

x2=iTx;

iTy=y1;

y1=y2;

y2=iTy;

}

iTx=x2-x1; /*取x軸的相對坐標(biāo)*/

iTy=y2-y1; /*取y軸的相對坐標(biāo)*/

iDx=1;

iDy=1;

iFt=0;

iSt=iTx+iTy;

if(iTx0)iSt=-1*iTx+iTy;; /*如果在第二象限,則x軸方向步長取負值*/

iXt=0;

iYt=0;

/*變量初始化結(jié)束*/

/*數(shù)據(jù)處理開始*/

while(iSt0)

{

putpixel(x1+iXt,y1+iYt,color);

if(iTx=0) /*如果在第一象限*/

{

if(iFt0) /*如果偏差小于0*/

{

iYt+=iDy; /*y方向走一步*/

iFt+=iTx;

}

else /*如果偏差大于或等于0*/

{

iXt+=iDx; /*x方向走一步*/

iFt-=iTy;

}

}

else

{

if(iFt0) /*如果偏差小于0*/

{

iXt-=iDx; /*負x方向走一步*/

iFt+=iTy;

}

else /*如果偏差大于或等于0*/

{

iYt+=iDy; /*y方向走一步*/

iFt+=iTx;

}

}

iSt--;

}

}

/*

###############################################################################

功 能:本函數(shù)的作用是用來畫一條直線

格 式:void myline2(int x1,int y1,int x2,int y2,int color)

參數(shù)說明:x1,y1是起始點坐標(biāo),x2,y2是終止點,color是畫線的顏色

調(diào)用示例:myline2(10,20,500,440,4)

###############################################################################

*/

int myline2(int x1,int y1,int x2,int y2,int color)

{

int iX; /*x方向的坐標(biāo)變量*/

int iY; /*y方向的坐標(biāo)變量*/

int iTx; /*x方向的步長變量*/

int iTy; /*y方向的步長變量*/

float fDx; /*x方向的差分變量*/

float fDy; /*y方向的差分變量*/

float fMinf; /*算法中的f*/

float fMaxF; /*算法中的F*/

float fS; /*終點判斷變量*/

fMinf=0.5; /*f=0.5*/

iX=x1;

iY=y1;

putpixel(x1,y1,color);

if(x1==x2y1==y2) /*如果終點和起始點相同*/

{

return(1);

}

iTx=1;

iTy=1;

fDx=(float)(x2-x1);

fDy=(float)(y2-y1);

fMaxF=fDy/fDx0?fDy/fDx:(-fDy/fDx); /*F=|dy/dx|*/

if(fDx0)iTx=-1;

if(fDy0)iTy=-1;

fS=fDx0?fDx:(-fDx);

if(fMaxF==1) /*如果F=1*/

{

iX=x1;

iY=y1;

while(fS0)

{

iX+=iTx; /*x方向走一步*/

iY+=iTy; /*y方向走一步*/

putpixel(iX,iY,color);

fS--;

}

}

else if(fMaxF1) /*如果F1*/

{

fS+=fDy0?fDy:(-fDy);

while(fS0)

{

iY+=iTy; /*y方向走一步*/

putpixel(iX,iY,color);

fMinf+=1/fMaxF; /*f=f+1/F*/

fS--;

if(fMinf=1) /*如果f=1*/

{

iX+=iTx; /*x方向走一步*/

fMinf--; /*f=f-1*/

putpixel(iX,iY,color);

fS--;

}

}

}

else /*如果F1*/

{

fS+=fDy0?fDy:(-fDy);

while(fS0)

{

iX+=iTx; /*x方向走一步*/

putpixel(iX,iY,color);

fMinf+=fMaxF; /*f=f+F*/

fS--;

if(fMinf=1) /*如果f=1*/

{

iY+=iTy; /*y方向走一步*/

fMinf--; /*f=f-1*/

putpixel(iX,iY,color);

fS--;

}

}

}

}


當(dāng)前標(biāo)題:直線函數(shù)法c語言程序 c語言編程數(shù)學(xué)函數(shù)
地址分享:http://weahome.cn/article/hjeopd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部