bkiz
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.
Tìm kiếm
 
 

Display results as :
 


Rechercher Advanced Search

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

» host facebook
Giải thuật Bresenham   EmptyMon Apr 02, 2012 2:26 pm by Admin

» Cyberlink PowerDirector 9 key full
Giải thuật Bresenham   EmptyThu Mar 29, 2012 5:00 pm by Admin

» PowerDirector 10 Ultra
Giải thuật Bresenham   EmptyFri 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
Giải thuật Bresenham   EmptySun Mar 18, 2012 9:17 pm by Admin

» HTML+CSS Form đăng nhập
Giải thuật Bresenham   EmptyTue Sep 13, 2011 10:38 pm by Admin

» HTML+javascript : Lịch Dương
Giải thuật Bresenham   EmptyThu Sep 08, 2011 5:15 pm by Admin

» HTML+javascript : Đòng hồ điện tử
Giải thuật Bresenham   EmptyThu Sep 08, 2011 5:06 pm by Admin

» HTML: Form Đăng nhập
Giải thuật Bresenham   EmptyThu Sep 08, 2011 4:42 pm by Admin

Affiliates
free forum


Giải thuật Bresenham

2 posters

Go down

Giải thuật Bresenham   Empty Giải thuật Bresenham

Bài gửi  Admin 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
Giải thuật Bresenham   210

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
Admin

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

https://bkiz.forumvi.com

Về Đầu Trang Go down

Giải thuật Bresenham   Empty 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 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

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