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 trung điểm-Midpoint  EmptyMon Jun 24, 2013 11:27 pm by hangme

» host facebook
 Giải thuật trung điểm-Midpoint  EmptyMon Apr 02, 2012 2:26 pm by Admin

» Cyberlink PowerDirector 9 key full
 Giải thuật trung điểm-Midpoint  EmptyThu Mar 29, 2012 5:00 pm by Admin

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

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

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

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

» HTML: Form Đăng nhập
 Giải thuật trung điểm-Midpoint  EmptyThu Sep 08, 2011 4:42 pm by Admin

Affiliates
free forum


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

Go down

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

Bài gửi  Admin 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
 Giải thuật trung điểm-Midpoint  310
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
 Giải thuật trung điểm-Midpoint  410

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
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

Về Đầu Trang

- Similar topics

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