Tìm kiếm
 
 

Display results as :
 


Rechercher Advanced Search

Latest topics
» Giải thuật Bresenham
Mon Jun 24, 2013 11:27 pm by hangme

» host facebook
Mon Apr 02, 2012 2:26 pm by Admin

» Cyberlink PowerDirector 9 key full
Thu Mar 29, 2012 5:00 pm by Admin

» PowerDirector 10 Ultra
Fri Mar 23, 2012 6:15 pm by Admin

» Mảng - Nhập mảng số nguyên, tính tổng phần tử dương, tìm số hoàn hảo, tìm max, min, sắp xếp từ lớn đến nhỏ, từ nhỏ đến lớn
Sun Mar 18, 2012 9:17 pm by Admin

» HTML+CSS Form đăng nhập
Tue Sep 13, 2011 10:38 pm by Admin

» HTML+javascript : Lịch Dương
Thu Sep 08, 2011 5:15 pm by Admin

» HTML+javascript : Đòng hồ điện tử
Thu Sep 08, 2011 5:06 pm by Admin

» HTML: Form Đăng nhập
Thu Sep 08, 2011 4:42 pm by Admin

Affiliates
free forum


Giải thuật Bresenham

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Giải thuật Bresenham

Bài gửi  Admin on Sun May 15, 2011 7:42 pm

Xét đoạn thẳng với 0 < k < 1
Gọi (xi+1,y) là điểm thuộc đoạn thẳng, ta có y=k(xi+1)+b
d1 = y - yi = k(xi +1) + b - yi
d2 = yi+1 - y = yi + 1 - k(xi + 1) - b
- Nếu d1 <= d2 => yi+1 = yi
- Ngược lại d1 > d2 => yi+1 = yi +1
Đặt D = d1 - d2= 2k(xi + 1) - 2yi + 2b - 1
Có k=Δy/Δx
Đặt Pi = ΔxD = Δx (d1 - d2)
Pi = Δx(2Δy/Δx(xi +1)- 2yi +2b-1)
= 2Δyxi +2Δy -2Δxyi + 2bΔx -Δx
Ta tính bước tiếp:
Pi+1 = 2Δyxi+1 +2Δy -2Δxyi+1 + 2bΔx -Δx
Pi+1 - Pi = -2Δx(yi+1 -yi) + 2Δy(xi+1 -xi)
Có xi+1 =xi+1 nên:
Pi+1 - Pi = - 2Δx(yi+1 -yi) + 2Δy = 2Δy - 2Δx(yi+1 -yi)
Nếu Pi <= 0 thì yi
+1 = yi
Pi+1 = Pi + 2Δy
Nếu Pi > 0 thì yi+1 = yi +1
Pi+1 = Pi + 2Δy - 2Δx
Tính giá trị đầu: P1?
P1 = Δx(d1 - d2)
= Δx(2Δy/Δx(x1 +1)- 2y1 +2b-1)
= 2Δyx1 +2Δy -2Δxy1 + 2bΔx -Δx
Có y1=kx1 + b = Δy/Δx x1 +b
P1 = 2Δyx1 +2Δy -2Δx((Δy/Δx)x1 +b) + 2bΔx -Δx
= 2Δyx1 +2Δy -2Δyx1 - 2bΔx + 2bΔx -Δx
P1 = 2Δy - Δx


cài đặt Chương trình
/*Thuat toan Bresenham ve dthang (0<k<1) */
void Bre_line(int x1, int y1, int x2, int y2, int c)
{int x, y, dx, dy,p,const1,const2;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
p = 2*dy - dx;
const1 = 2*dy;
const2 = 2*(dy-dx);
for (x=x1; x<=x2; x++) {
putpixel(x, y, c);
if (p < 0)
p += const1; // p=p + 2dy
else {
p +=const2; //p=p+2dy-2dx
y++;
}
}
}

Admin
Admin

Tổng số bài gửi : 157
Join date : 09/06/2010
Age : 25
Đến từ : Hải Dương

Xem lý lịch thành viên http://bkiz.yourforum4u.com

Về Đầu Trang Go down

mọi người cho mình hỏi với trường hợp k>1 thì sẽ như thế nào không :D

Bài gửi  hangme on Mon Jun 24, 2013 11:27 pm

mình đang thắc mắc các trường hợp k còn lại. nếu mình đặt d1 với d2 ngược nhau có được không vậy:D

hangme

Tổng số bài gửi : 1
Join date : 24/06/2013

Xem lý lịch thành viên

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

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