Vua Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
kinh doanh, bán hàng, tư vấn, bảo hiểm Những cá nhân, tổ chức, đại lý,muốn bán, hợp đồng bảo hiểm
Friday, December 5, 2014

  HÀM LINE:

1.   Hàm vẽ đường thẳng đơn giản (có quy tắc):
       Vẽ đường thẳng nằm dọc (có cùng tọa độ X = X1 = X2):
void DT_Doc(int x, int y1, int y2, int color)
{
    if(y1>y2)     //doi gia tri y lai neu y1>y2
    {
        y1=y1+y2;
        y2=y1-y2;
        y1=y1-y2;

    }
    for(int y=y1; y<=y2;y++)
        putpixel(x,y,color);
}

       Vẽ đường thẳng nằm ngang (có cùng tọa độ Y = Y1 = Y2):
void DT_Ngang(int x1, int x2, int y, int color)
{
    if(x1>x2)     //doi gia tri lai neu x1>x2
    {
        x1=x1+x2;
        x2=x1-x2;
        x1=x1-x2;
    }
    for(int x=x1; x<=x2;x++)
        putpixel(x,y,color);
}

       Vẽ đường thẳng là đường chéo chính (X1=Y1, Y2=Y2):
void DT_CheoChinh(int x1, int x2, int color)
{
    if(x1>x2)     //doi gia tri lai neu x1>x2
    {
        x1=x1+x2;
        x2=x1-x2;
        x1=x1-x2;
    }
    for(int x=x1;x<=x2;x++)
        putpixel(x,x,color);
}

       Vẽ đường chéo phụ (X1=Y2, X2=Y1):

void DT_CheoPhu(int x1, int y1, int x2, int y2, int color)
{
    //Thuc chat la duong cheo phu nen chi can nhan vao 2 gia tri la X1 va Y1 la du de xu ly
    int x=x1,y=y1;
    if(x1<y1) //Xac dinh dinh bat dau ve la tren hay duoi de van dung  phep tinh phu hop
            while(x!=y1)    //Diem bat dau nam duoi
            {
                putpixel(x,y,color);
                x++;
                y--;
            }
    else
            while(x!=y1)    //Diem bat dau nam tren
            {
                putpixel(x,y,color);
                x--;
                y++;
            }
}

2.   Vẽ đường thẳng bằng thuật toán DrawLine (tự định nghĩa):
void DrawLine(int xa, int ya, int xb, int yb, int color)
{
    float m=(yb-ya)*1.0/(xb-xa);
    float b=ya-m*xa;
    if (abs(xb-xa)>abs(yb-ya))  //Neu Delta X > Delta Y thi di theo X
        {
                int y;
            if ((xb-xa)>0)  //neu xa<xb thi lan luot duyet tang x
            {
                for (int x=xa;x<=xb;x++)
                {
                    y=m*x+b;
                    putpixel(x,y,color);
                }
            }
            else    //nguoc lai xa>xb thi lan luot duyet giam x
            {
                for (int x=xa;x>=xb;x--)
                {
                    y=m*x+b;
                    putpixel(x,y,color);
                }
            }
        }
    else                 //Nguoc lai Delta X < Delta Y thi di theo Y
        {
            int x;
            if ((yb-ya)>0) //neu ya<yb thi lan luot duyet tang y
            {
                for (int y=ya;y<=yb;y++)
                {
                    x=(y-b)/m;
                    putpixel(x,y,color);

                }
            }
            else        //nguoc lai ya>yb thi lan luot duyet giam y
            {
                for (int y=ya;y>=yb;y--)
                {
                    x=(y-b)/m;
                    putpixel(x,y,color);
                }
            }
        } }
3.   Vẽ đường thẳng bằng thuật toán DDA (tự định nghĩa):
void DDA(int x1, int y1, int x2, int y2, int color)
{
    int dx=x2-x1;
    int dy=y2-y1;
    float temp;
    if(abs(dx)>abs(dy))
       temp=abs(dx);
    else
        temp=abs(dy);

    int xc=dx/int(temp);
    int yc=dy/int(temp);
    int x=x1, y=y1;
    putpixel(x,y,color);
    for(int i=1;i<=temp;i++)
    {
        x=x+xc;
        y=y+yc;
        putpixel(x,y,color);
    }
}

4.   Vẽ đường thẳng bằng hàm line() trong thư viện đồ họa:
line(x_dau, y_dau, x_cuoi, y_cuoi);
Bài Giải



0 comments:

Post a Comment

domain, domain name, premium domain name for sales

Popular Posts