ThienThanCNTT
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Thuật toán DDA_Line dạng tổng quát

Go down

Thuật toán DDA_Line dạng tổng quát Empty Thuật toán DDA_Line dạng tổng quát

Bài gửi by nth 09/11/09, 08:18 pm


void hoanvi(int &a, int &b)
{ a = a ^ b;
b = a ^ b;
a = a ^ b;
}

// Hàm Line DDA ở dạng tổng quát.
void CGraphics::DrawLine_DDA_Full_2(int x1, int y1, int x2, int y2)
{ float dx, dy, x, y;
float p;
dx = x2 - x1;
dy = y2 - y1;
if(abs(dx) >= abs(dy))
{ if(x1 > x2)
{ hoanvi(x1, x2);
hoanvi(y1, y2);
}
p = (float)(y2 - y1)/(x2 - x1);
y = y1;
for(x = x1; x < x2; x++)
{ SetPixel(x, Round(y));
y += p;
}
}
else
{ if(y1 > y2)
{ hoanvi(x1, x2);
hoanvi(y1, y2);
}
x = x1;
p = (float)(x2 - x1)/(y2 - y1);
for(y = y1; y < y2; y++)
{ SetPixel(Round(x), y);
x += p;
}
}
}

Các bạn có thể viết hàm hoán vị như những cách đã học ở lập trình nâng cao kì trước. Riêng đây mình giới thiệu thêm cách dùng toán tử XOR, chương trình sẽ chạy nhanh hơn, và rất chính xác đó.


Được sửa bởi nth ngày 10/12/09, 04:17 am; sửa lần 1.
nth
nth
Admin
Admin

Tổng số bài gửi : 550
Số điểm : 1113
Số lần được cám ơn : 33
Ngày đến diễn đàn: : 01/08/2009
Tuổi : 35
Đến từ : Thiên Đường

https://thuhuong.forumvi.net

Về Đầu Trang Go down

Thuật toán DDA_Line dạng tổng quát Empty Re: Thuật toán DDA_Line dạng tổng quát

Bài gửi by nth 09/11/09, 08:20 pm

Cách thứ 2: DDA của Âu.. H xin post lên đây luôn nhen
void CGraphics::DrawLine_DDA_Full(int x1, int y1, int x2, int y2)
{
CGraphics Point;
float x,y,m;
int dx=x2-x1, dy=y2-y1;
if(dx==0 && dy==0)
SetPixel(0,0,m_color);
if(abs(dx) > abs(dy)) // Truong hop 1-2
{
m=float(dy)/dx;
int k=dx > 0 ? 1:-1;
x=x1; y=y1;
for(int i=0;i
{
PutPixel(Round(x),Round(y),m_color);
x+=k;
y+=m*k;
}
}
else
{
m=float(dx)/dy;
int k = dy > 0 ? 1 : -1;
x = x1; y = y1;
for (int i=0; i
{
PutPixel(Round(x), Round(y), m_color);
y += k;
x += m*k;
}
}
}

nth
nth
Admin
Admin

Tổng số bài gửi : 550
Số điểm : 1113
Số lần được cám ơn : 33
Ngày đến diễn đàn: : 01/08/2009
Tuổi : 35
Đến từ : Thiên Đường

https://thuhuong.forumvi.net

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết