Kênh 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!
Thursday, December 4, 2014

Chương trình mô phỏng hàm LINE nâng cao trong đồ họa C++

Bài Giải



/*
Name: Mo phong ham Line trong thu vien Graphics
Copyright: None
Author: Tran Anh
Description: http://www.code.tavn.net
*/
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
#include<math.h>

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))
        {
                int y;
            if ((xb-xa)>0)
            {
                for (int x=xa;x<=xb;x++)
                {
                    y=m*x+b;
                    putpixel(x,y,color);
                }
            }
            else
            {
                for (int x=xa;x>=xb;x--)
                {
                    y=m*x+b;
                    putpixel(x,y,color);
                }
            }
        }
    else
        {
            int x;
            if ((yb-ya)>0)
            {
                for (int y=ya;y<=yb;y++)
                {
                    x=(y-b)/m;
                    putpixel(x,y,color);

                }
            }
            else
            {
                for (int y=ya;y>=yb;y--)
                {
                    x=(y-b)/m;
                    putpixel(x,y,color);
                }
            }
        }
}

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);
    }

}
main()
{
    initwindow(800,600);

    DrawLine(100,500,200,300,12);
    DDA(400,400,300,300,12);


    getch();
    return 0;
}


0 comments:

Post a Comment

Popular Posts