Okrąg

0

Mam zadanie aby podać promien okregu i ze znaków # (hasz) narysowac okrag o podanym promieniu. Od wujka google dowiedzialem sie tyle zeby uzyc wzoru na okrag i zastosowac jakies sensowne przyblizenie ale nie moge sobie z tym poradzic. Aktualnie moj kod wyglada tak:

 #include <iostream>

using namespace std;

int main()
{
    double r;
    cin>>r;
    for(double j=r;j>=-r;j--)
    {
        for(double i=r;i>=-r;i--)
        {

            if((j)*(j)+(i)*(i)==(r*r)) cout<<"#";
            else if(((j)*(j)+(i)*(i)>=(r*r)+((5/4)-r))&&((j)*(j)+(i)*(i)<=(r*r)-((5/4)-r))) cout<<"#";
            else if(((j)*(j)+(i)*(i)>=(r*r)+((5/4)+r))&&((j)*(j)+(i)*(i)<=(r*r)-((5/4)+r))) cout<<"#";
            else cout<<" ";

        }
        cout<<endl;
    }

    return 0;
}

no i cos tam rysuje ale na pewno da sie lepiej, no i pewnie da se prosciej dlatego chciałbym prosic o ulepszenie tej wersji albo o podpowiedz jak to zrobic sensowniej? Oczywiscie nie chodzi mi o perfekcyjny okrag bo pewnie sie nie da ale cos najbardziej zblizonego do okregu i bez wielkich przerw pomiedzy # (zeby to bylo dosyc ciągłe) ( te wszystkie nawiasy to nie pytajcie po co one tam są po prostu zostaly tam po całej mojej tworczosci :D)

0

To pewnie jakiś algorytm specjalny. Czytałem o nim kiedyś (jeśli to ten algorytm). Ale szczerze mówiąc nie kumam tego kodu, który wkleiłeś i nie chce mi się w to wnikać.

Ale ja bym się tak nie bawił i po prostu albo użył cosinusa i sinusa przemnożonych przez promień - do obliczania punktu na okręgu zakładając, że kąt jest znany - wtedy należałoby iterować przez kolejne kąty od 0 do 360 stopni (ew. 2 pi radianów).

albo bym użył wzoru pitagorasa do obliczenia odległości od środka okręgu. Pewnie to ci się bardziej nada, bo jeśli to robisz w trybie tekstowym, to musisz i tak przejechać przez wszystkie "piksele". Wtedy dla każdego "piksela" obliczałbyś odległość od środka okręgu (z twierdzenia pitagorasa), i jeśli odległość jest dość zbliżona do promienia, to stawiasz '#', a jak nie to spację.

Oba wzory są na stronie wikipedii: https://pl.wikipedia.org/wiki/Okr%C4%85g

2

@LukeJL: Ale równanie okręgu ułatwia tu właśnie życie. Dla podanego X dostajesz wprost ze wzoru wartości -Y / +Y i rysujesz ten okrąg, jak każdy inny wykres:
https://exceliadam.pl/excel/jak-zrobic-wykres-okregu-wykres-punktowy-xy-widzowie-112

1 użytkowników online, w tym zalogowanych: 0, gości: 1