30/09/2018, 19:01

Vẽ đường tròn nét đặc C++

Làm thế nào để vẽ được đường tròn với nét đặc nhỉ?
Như hình bên dưới mình vẽ bằng cách này:

void MyRenderer::drawCircle(Circle circle)
{
    for (int angle = 0; angle < 360; angle++) {
        int x = circle.getMidPoint().getX() + circle.getRadius() * cos(angle);
        int y = circle.getMidPoint().getY() + circle.getRadius() * sin(angle);

        SDL_RenderDrawPoint(renderer, x, y);
    }
}

thì khi bán kính càng lớn, nét vẽ lại càng rời rạc hơn.

viết 21:02 ngày 30/09/2018

do chỉ vẽ có 360 điểm, nên khoảng cách giữa mỗi điểm là (chu vi) / 360. Bán kính càng lớn thì chu vi càng lớn, khoảng cách này càng lớn nên thấy khoảng trắng giữa các điểm thôi.

xài SDL_RenderDrawLines mà vẽ 359 đường thẳng nối 360 điểm. Nhớ nối điểm đầu và điểm cuối nữa bằng SDL_RenderDrawLine.

xài SDL2_gfx mà vẽ hình tròn đi. Doc ở đây. Ngoài vẽ circle bình thường còn có cho vẽ anti-alias circle, có cho vẽ hình tròn đặc, nếu muốn tròn đặc anti-alias thì vẽ thêm cái aaCircle đè lên…

Còn ko thì vẽ hình tròn trong mấy chương trình khác rồi lưu lại png, vẽ cái hình .png cho dễ

source vẽ hình tròn của nó: (nó vẽ ellipse với rx = ry). Đọc chả hiểu gì

... viết 21:02 ngày 30/09/2018

A post was merged into an existing topic: Topic này chứa các post được cho là Off-topic

Văn Dương viết 21:09 ngày 30/09/2018

Sử dụng thuật toán loang hoặc đệ quy.

Bắt đầu từ 1 điểm bất kỳ nằm trên đường tròn rồi sẽ lan ra các điểm khác.
Đường tròn dù to đến mấy vẫn là đặc.

Bài liên quan
0