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 trung điểm-Midpoint

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

Giải thuật trung điểm-Midpoint

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

Xét trung điểm của đoạn AB (M)
Nếu M ở trên đoạn thẳng AB thì chọn B còn
M ở dưới đoạn thẳng AB chọn A
Công thức đơn giản hơn, tạo được các điểm tương tự như với Bresenham
d = f(xi + 1, yi + 1/2) là trung điểm của đoạn AB

So sánh hay kiểm tra M sẽ được thay bằng việc xét giá trị d.
- d > 0 điểm B được chọn khi đó yi+1 = yi
- nếu d < 0 điểm A được chọn khi đó yi+1 = yi + 1
Trường hợp d = 0 chúng ta có thể chọn điểm bất kỳ hoặc A, hoặc B.
Sử dụng phương pháp biểu diễn không tường minh
f(x,y)= ax +by +c =0 (1)dx =x2-x1 dy =y2-y1
Biểu diễn tường minh:
y= (dy/dx)x +B hay
f(x,y)=0= xdy - ydx +Bdx (2)
So sánh (1) và (2)
a=dyb=-dx c= Bdx
Có f(x,y)=0 với mọi (x,y) thuộc đường thẳng
Đặt di=f(xi+1,yi+1/2) = a(xi+1) +b(yi +1/2) +c
+ Nếu chọn A (d<0) thì M sẽ tăng theo 2 hướng x,y
di+1=f(xi+2,yi+3/2) = a(xi+2) +b(yi +3/2) +c
di+1 – di = a+b
Hay di+1 = di + dy - dx
+ Nếu chọn B (d>0) thì M sẽ tăng theo x
di+1=f(xi+2,yi+1/2) = a(xi+2) +b(yi +1/2) +c
di+1 - di = a
Hay di+1 = di + dy
Tính d1 ?
d1 = f(x1+1,y1+1/2) = a(x1+1) +b(y1 +1/2) +c
= ax1 +by1 +c +a +1/2 b = f(x1,y1) +a +b/2
Có (x1,y1) là điểm bắt đầu, nằm trên đoạn thẳng nên f(x1,y1) = 0
Vậy d1 = a+ b/2 = dy - dx/2


cài đặt
/* Thuat toan Midpoint de ve doan thang
(0<k<1) */
void Mid_line(int x1, int y1, int x2, int y2, int c)
{ int x, y, dx, dy,d;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
d= dy - dx/2;
for (x=x1; x<=x2; x++)
{
putpixel(x, y, c);
if (d <= 0)
d = d + dy;
else
{
y ++;
d = d + dy - dx;
}}
}

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

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