[DHMT]Thuật Toán Vẽ Đường Tròn P1

Bài này tôi muốn nói về thuật toán vẽ đường tròn như Breasenham hay Midpoint . Trước khi sâu vào các thuật toán chúng ta cần coi kỹ phần ý tưởng để nắm bắt kỹ.

  1. Ý Tưởng
    duongtron

2

Tóm tắt: Chỉ cần vẽ 1/8 của đường tròn và lấy đối xứng qua 2 trục tọa độ

2. Thuật Toán Breasenham trong vẽ đường tròn.

1

Giả sử ta đã vẽ được điểm (xi,yi) tiếp theo ta sẽ vẽ điểm (xi+1,yi) hay (xi+1,yi-1)

12

13

14

Thuật Toán

Thuật toán mình có thể code là

void ve8diem(int x0, int y0, int x, int y)
{
setPixel(x0 + x, y0 + y);
setPixel(x0 – x, y0 + y);
setPixel(x0 + x, y0 – y);
setPixel(x0 – x, y0 – y);
setPixel(x0 + y, y0 + x);
setPixel(x0 – y, y0 + x);
setPixel(x0 + y, y0 – x);
setPixel(x0 – y, y0 – x);
}
void CircleBreasenham(int x0, int y0, int r)
{
int x, y;
x = 0; y = r;
int p = (3 – 2 * r);

while (x <= y)
{

ve8diem(x0, y0, x, y);
if (p < 0)
p += 4 * x + 6;
else
{
p += 4 * (x – y) + 10;
y=y-1;
}
x=x+1;
}
}

Hết Phần 1

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s