Sản Phẩm Trong Giỏ Hàng
  • Bạn chưa có sản phẩm nào trong giỏ hàng
Tổng Hóa Đơn: VNĐ
|
ĐĂNG TIN
 
Đăng tin hoàn toàn miễn phí
 
Quảng cáo liên kết tại RB, EB
 
0% phí khi mua qua Banking/Visa
Tạo bài viết
Thêm ảnh
Khách vãng lai

Đồ Hoạ Máy Tính ai vào làm giúp e với...

Câu hỏi: TRình bày thuật toán vẽ đường thẳng DDA ứng dụng và cài đặt chương trình vẽ đường thẳng... thank mọi người.
... Xem thêm
Thích
Bình Luận
Chia sẻ
Khách vãng lai
vipnho0209
hihi bác học CNTT àh
Xem thêm
Thích
Trả lời
14/07/2012
Khách vãng lai
nhome
Xét đường thẳng có hệ số góc 0 < m ≤ 1 (giả sử điểm đầu A nằm bên trái và điểm cuối B nằm bên phải). Nếu ta chọn Δx=1và tính giá trị y kế tiếp như sau: yk+1 = yk + Δy = yk + m.Δx = yk + m Với hệ số góc m>1: hoán đổi vai trò của x,y cho nhau. Nếu chọn Δy=1 thì: xk+1 = xk + 1/m Tương tự, nếu điểm B nằm bên trái và A nằm bên phải thì: yk+1 = yk - m (0<m≤1, Δx= -1) xk+1 = xk - 1/m (m>1, Δy= -1) Tóm lại: Ta có thuật toán vẽ đường thẳng DDA như sau: ������ Nhập A(x1,y1) B(x2,y2) ������ Tính Δx = x2 - x1, Δy = y2 - y1 và Step = Max(|Δx| , |Δy|) ������ Khởi tạo các giá trị: IncX = Δx/Step; IncY = Δy/Step; {bước tăng khi vẽ} x = x1; y = y1; {Chọn điểm vẽ đầu tiên} Vẽ điểm (x,y); ������ Cho i chạy từ 1 đến Step: ������ x = x + IncX; y = y + IncY; ������ Vẽ điểm (Round(x),Round(y)) Từ đó ta có hàm vẽ đoạn thẳng theo thuật toán DDA như sau: int round(float x) { if(x>0) return int(x+0.5); else return int(x-0.5); } void DDALine(int x1,int y1,int x2,int y2) { int step; float dx,dy,xInc,yInc,x,y; dx=x2-x1; dy=y2-y1; if (abs(dx)>abs(dy)) step=abs(dx); else step=abs(dy); xInc=dx/step; yInc=dy/step; x:=x1; y:=y1; Putpixel(round(x),round(y),15); for(int i=1;i<=step;i++) Putpixel(round(x+xInc),round(y+yInc),color); } hiểu chết ngay..................[-)
Xem thêm
Thích
Trả lời
08/07/2012
Khách vãng lai
mjkado
Xét đường thẳng có hệ số góc 0 < m ≤ 1 (giả sử điểm đầu A nằm bên trái và điểm cuối B nằm bên phải). Nếu ta chọn Δx=1và tính giá trị y kế tiếp như sau: yk+1 = yk + Δy = yk + m.Δx = yk + m Với hệ số góc m>1: hoán đổi vai trò của x,y cho nhau. Nếu chọn Δy=1 thì: xk+1 = xk + 1/m Tương tự, nếu điểm B nằm bên trái và A nằm bên phải thì: yk+1 = yk - m (0<m≤1, Δx= -1) xk+1 = xk - 1/m (m>1, Δy= -1) Tóm lại: Ta có thuật toán vẽ đường thẳng DDA như sau: ������ Nhập A(x1,y1) B(x2,y2) ������ Tính Δx = x2 - x1, Δy = y2 - y1 và Step = Max(|Δx| , |Δy|) ������ Khởi tạo các giá trị: IncX = Δx/Step; IncY = Δy/Step; {bước tăng khi vẽ} x = x1; y = y1; {Chọn điểm vẽ đầu tiên} Vẽ điểm (x,y); ������ Cho i chạy từ 1 đến Step: ������ x = x + IncX; y = y + IncY; ������ Vẽ điểm (Round(x),Round(y)) Từ đó ta có hàm vẽ đoạn thẳng theo thuật toán DDA như sau: int round(float x) { if(x>0) return int(x+0.5); else return int(x-0.5); } void DDALine(int x1,int y1,int x2,int y2) { int step; float dx,dy,xInc,yInc,x,y; dx=x2-x1; dy=y2-y1; if (abs(dx)>abs(dy)) step=abs(dx); else step=abs(dy); xInc=dx/step; yInc=dy/step; x:=x1; y:=y1; Putpixel(round(x),round(y),15); for(int i=1;i<=step;i++) Putpixel(round(x+xInc),round(y+yInc),color); } quá bá đạo, em k hiểu gì :((
Xem thêm
Thích
Trả lời
08/07/2012
Khách vãng lai
Knowzone
Xét đường thẳng có hệ số góc 0 < m ≤ 1 (giả sử điểm đầu A nằm bên trái và điểm cuối B nằm bên phải). Nếu ta chọn Δx=1và tính giá trị y kế tiếp như sau: yk+1 = yk + Δy = yk + m.Δx = yk + m Với hệ số góc m>1: hoán đổi vai trò của x,y cho nhau. Nếu chọn Δy=1 thì: xk+1 = xk + 1/m Tương tự, nếu điểm B nằm bên trái và A nằm bên phải thì: yk+1 = yk - m (0<m≤1, Δx= -1) xk+1 = xk - 1/m (m>1, Δy= -1) Tóm lại: Ta có thuật toán vẽ đường thẳng DDA như sau: Nhập A(x1,y1) B(x2,y2) Tính Δx = x2 - x1, Δy = y2 - y1 và Step = Max(|Δx| , |Δy|) Khởi tạo các giá trị: IncX = Δx/Step; IncY = Δy/Step; {bước tăng khi vẽ} x = x1; y = y1; {Chọn điểm vẽ đầu tiên} Vẽ điểm (x,y); Cho i chạy từ 1 đến Step: x = x + IncX; y = y + IncY; Vẽ điểm (Round(x),Round(y)) Từ đó ta có hàm vẽ đoạn thẳng theo thuật toán DDA như sau: int round(float x) { if(x>0) return int(x+0.5); else return int(x-0.5); } void DDALine(int x1,int y1,int x2,int y2) { int step; float dx,dy,xInc,yInc,x,y; dx=x2-x1; dy=y2-y1; if (abs(dx)>abs(dy)) step=abs(dx); else step=abs(dy); xInc=dx/step; yInc=dy/step; x:=x1; y:=y1; Putpixel(round(x),round(y),15); for(int i=1;i<=step;i++) Putpixel(round(x+xInc),round(y+yInc),color); }
Xem thêm
Thích
Trả lời
08/07/2012
Khách vãng lai