intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng đồ họa : Các thuật toán vẽ đường part 3

Chia sẻ: Ashfjshd Askfaj | Ngày: | Loại File: PDF | Số trang:5

107
lượt xem
14
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Thuật toán MidPoint • Thuật toán MidPoint đưa ra cách chọn yi+1 là yi hay y i + 1 bằng cách so sánh điểm thực Q (x i + 1, y ) với điểm MidPoint là trung điểm của S và P. Ta có : ♦ Nếu điểm Q nằm dưới điểm MidPoint, ta chọn S. ♦ Nếu điểm Q nằm trên điểm MidPoint ta chọn P.

Chủ đề:
Lưu

Nội dung Text: Bài giảng đồ họa : Các thuật toán vẽ đường part 3

  1. ÑOÀ HOÏA MAÙY TÍNH Thuaät toaùn MidPoint • Thuaät toaùn MidPoint ñöa ra caùch choïn yi+1 laø yi hay y i + 1 baèng caùch so saùnh ñieåm thöïc Q (x i + 1, y ) vôùi ñieåm MidPoint laø trung ñieåm cuûa S vaø P. Ta coù : ♦ Neáu ñieåm Q naèm döôùi ñieåm MidPoint, ta choïn S. ♦ Neáu ñieåm Q naèm treân ñieåm MidPoint ta choïn P. Q(xi+1, y) yi+1 P MidPoint yi S xi xi+1 • Ta coù daïng toång quaùt cuûa phöông trình ñöôøng thaúng : Ax + By + C = 0 vôùi A = y2 − y1 , B = −(x 2 − x1 ), C = x 2 y1 − x1 y2 • Ñaët F (x, y) = Ax + By + C , ta coù nhaän xeùt : < 0, neáu (x, y ) naèm phía treân ñöôøng thaúng  F (x, y)= 0, neáu (x, y ) thuoäc veà ñöôøng thaúng > 0, neáu (x, y ) naèm phía döôùi ñöôøng thaúng.  Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn veõ ñöôøng 11/22
  2. ÑOÀ HOÏA MAÙY TÍNH • Luùc naøy vieäc choïn caùc ñieåm S, P ôû treân ñöôïc ñöa veà  1 pi = 2 F (MidPoint ) = 2 F  xi + 1, yi +  . vieäc xeùt daáu cuûa  2 ♦ Neáu pi < 0 , ñieåm MidPoint naèm phía treân ñoaïn thaúng. Luùc naøy ñieåm thöïc Q naèm döôùi ñieåm MidPoint neân ta y i +1 = y i . choïn S, töùc laø ♦ Ngöôïc laïi, neáu pi ≥ 0 , ñieåm MidPoint naèm phía döôùi ñoaïn thaúng. Luùc naøy ñieåm thöïc Q naèm treân ñieåm MidPoint neân ta choïn P, töùc laø yi +1 = yi + 1 . • Maët khaùc : 1 1   pi +1 − pi = 2 F  x i +1 + 1, y i +1 +  − 2 F  x i + 1, y i +  2 2   1 1       ⇔ pi+1 − pi = 2 A(xi+1 + 1) + B yi+1 +  + C − 2 A(xi + 1) + B yi +  + C 2 2       ⇔ pi+1 − pi = 2 A + 2 B( yi+1 − yi ) = 2 Dy − 2 Dx( yi +1 − yi ) • Nhö vaäy : pi+1 = pi + 2 Dy , neáu pi < 0 do ta choïn yi +1 = yi . ♦ pi ≥ 0 pi +1 = pi + 2 Dy − 2 Dx , neáu do ta choïn ♦ y i +1 = y i + 1 . • Ta tính giaù trò p0 öùng vôùi ñieåm ban ñaàu (x 0 , y0 ) , vôùi nhaän xeùt raèng (x 0 , y0 ) laø ñieåm thuoäc veà ñoaïn thaúng, töùc laø coù : Ax0 + By0 + C = 0 1 1     p0 = 2 F  x 0 + 1, y0 +  = 2 A(x 0 + 1) + B y0 +  + C  2 2     ⇒ p0 = 2( Ax0 + By0 + C ) + 2 A + B = 2 A + B = 2 Dy − Dx Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn veõ ñöôøng 12/22
  3. ÑOÀ HOÏA MAÙY TÍNH Caâu hoûi kieåm tra • Xeùt thuaät toaùn Bresenham, vôùi caùch ñaët d1 vaø d2 nhö treân, coù khi naøo d1 hay d2 aâm hay khoâng ? Cho ví duï minh hoïa. • Taïi sao phaûi so saùnh giaù trò pi vôùi 0 trong caùc thuaät toaùn MidPoint vaø Bresenham, baûn chaát cuûa vieäc so saùnh naøy laø gì ? • Taïi sao phaûi nhaân F(MidPoint) vôùi 2 khi gaùn cho pi theo coâng thöùc pi=2*F(MidPoint) ? Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn veõ ñöôøng 13/22
  4. ÑOÀ HOÏA MAÙY TÍNH • Caøi ñaët thuaät toaùn cho tröôøng hôïp 0 ≤ m ≤ 1, Dx0 ñaõ caøi ñaët coäng theâm moät soá thay ñoåi sau : ♦ Thay bieåu thöùc x=x+1 baèng x=x-1 vaø y=y+1 baèng y=y-1 vì trong tröôøng hôïp naøy x vaø y ñeàu giaûm daàn. ♦ Nhaän xeùt raèng khi p0 vaø thay ñoåi moät soá ñieåm sau : v Neáu Dx
  5. ÑOÀ HOÏA MAÙY TÍNH Veõ ñöôøng troøn baèng thuaät toaùn MidPoint • Do tính ñoái xöùng cuûa ñöôøng troøn (C) neân ta chæ caàn veõ cung (C1/8) laø cung 1/8 ñöôøng troøn, sau ñoù laáy ñoái xöùng. Cung (C1/8) ñöôïc moâ taû nhö sau (cung cuûa phaàn toâ xaùm trong hình veõ) :  2 0 ≤ x ≤ R 2   2   2 ≤ y≤R R  (-x,y) (x,y) (y,x) (-y,x) R 2 (-y,-x) (y,-x) (-x,-y) (x,-y) • Nhö vaäy neáu coù (x, y) ∈ (C1/8) thì caùc ñieåm : (y, x), (y,- x), (x,-y), (-x,-y), (-y,-x), (-y,x), (-x,y) seõ thuoäc (C). Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn veõ ñöôøng 15/22
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2