Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

rysowanie figury za pomocą znaków

Ostatnio zmodyfikowano 2011-01-14 17:02
Autor Wiadomość
pekfos
» 2011-01-12 16:42:56
szukałeś tutoriali? błędne założenia! do algorytmów nie ma zbytnio tutoriali.
co do obsługi konsoli, zmiany jej rozmiarów to zapraszam na MSDN. to jak wykonać program w miarę przystępnie ci napisałem. zostało tylko to poskładać. jaki masz termin tej pracy?

http://lmgtfy.com/?q=bresenham cały dzień na google? coś nie wierzę..

//edit: ty chyba nie szukałeś.. na wikipedii masz kod przejrzysty jak woda destylowana, z rysowaniem przez OGL. rozwiązania jak na tacy!
P-26466
killer625
Temat założony przez niniejszego użytkownika
» 2011-01-12 16:59:22
ale algorytm bresenhama jest do rysowania linii, a ja musze to narysować za pomocą znaków ASCII. Nie wiem, da sie jakoś za pomocą tego algorytmu rysować nie linią tylko znakami ? Tak jak mówie, traktujcie mnie jak totalnego laika w tym temacie, wszystko co miałem w szkole na ten temat do tej pory to tylko i wyłącznie programy do obliczania funkcji matematycznych typu liczby doskonałe, potęgi, silnie. termin: piątek.
P-26467
pekfos
» 2011-01-12 17:10:45
ale algorytm bresenhama jest do rysowania linii
taaak, zgadza się
a ja musze to narysować za pomocą znaków ASCII
a co za problem? jedno nie wyklucza drugiego. wszystko zależy od implementacji wyświetlania. załóż że jeden piksel z algorytmie to wybrany przez użytkownika znak..
P-26468
killer625
Temat założony przez niniejszego użytkownika
» 2011-01-12 17:27:32
C/C++
// x1 , y1 - współrzędne początku odcinka
// x2 , y2 - współrzędne konca odcinka
void BresenhamLine( const int x1, const int y1, const int x2, const int y2 )
{
    // zmienne pomocnicze
    int d, dx, dy, ai, bi, xi, yi;
    int x = x1, y = y1;
    // ustalenie kierunku rysowania
    if( x1 < x2 )
    {
        xi = 1;
        dx = x2 - x1;
    }
    else
    {
        xi = - 1;
        dx = x1 - x2;
    }
    // ustalenie kierunku rysowania
    if( y1 < y2 )
    {
        yi = 1;
        dy = y2 - y1;
    }
    else
    {
        yi = - 1;
        dy = y1 - y2;
    }
    // pierwszy piksel
    glVertex2i( x, y );
    // oś wiodąca OX
    if( dx > dy )
    {
        ai =( dy - dx ) * 2;
        bi = dy * 2;
        d = bi - dx;
        // pętla po kolejnych x
        while( x != x2 )
        {
            // test współczynnika
            if( d >= 0 )
            {
                x += xi;
                y += yi;
                d += ai;
            }
            else
            {
                d += bi;
                x += xi;
            }
            glVertex2i( x, y );
        }
    }
    // oś wiodąca OY
    else
    {
        ai =( dx - dy ) * 2;
        bi = dx * 2;
        d = bi - dy;
        // pętla po kolejnych y
        while( y != y2 )
        {
            // test współczynnika
            if( d >= 0 )
            {
                x += xi;
                y += yi;
                d += ai;
            }
            else
            {
                d += bi;
                y += yi;
            }
            glVertex2i( x, y );
        }
    }
}

zakładając że to kompletny algorytm Bresenhama, co tu trzeba zmienić aby rysował on za pomocą znaków ? ja nie mam pojęcia bo nie widzę tu rzeczy, które znam do wyświetlania czegoś na ekranie. Nie wspominając o fakcie że implementacja tego w taki sposób aby to współgrało z moim programem, to dla mnie chyba niemożliwe albo po prostu wszystko to co mam do tej pory staje się bezużyteczne przez ten algorytm czyli musiałbym kombinować nad całym programem od nowa pewno.
P-26469
pekfos
» 2011-01-12 18:17:11
tak, to pełna implementacja. zrób teraz bufor ekranu by szybko rysować znaki i zastąp vertexy funkcją która ma rysować na buforze, lub po prostu wal gotoxy i printf ale efekt bedzie mierny bo konsola zacznie migać
P-26471
killer625
Temat założony przez niniejszego użytkownika
» 2011-01-13 09:56:16
ehh coś mi się kompilator zrypał, non stop wyskakuje mi okienko z tekstem "Plik źródłowy nie został skompilowany" nawet hello world nie moge włączyć.

edit: uff działa po przeinstalowaniu.

jak sie robi bufor ekranu ?
P-26484
pekfos
» 2011-01-13 14:50:32
Plik źródłowy nie został skompilowany
to trzeba było skompilować..

bufor ekranu to nic innego jak tablica która buforuje krótkie, "skoczne" operacje.
jak chcesz by rozmiary były zmienne bufor musi być dynamicznie alokowany

//edit: a tak właściwie to sądząc po terminie tego programu i stopniu jego trudności to chyba jest on na 6 na semestr. zgadłem?
P-26487
killer625
Temat założony przez niniejszego użytkownika
» 2011-01-13 22:39:34
nie, jest to projekt ktory bedzie mial wplyw na 30% oceny koncowej(mamy pare ocen w polroczu ktore maja okreslona wage ). raczej tego nie zrobie, za gleboka woda ;/ praktycznie zadnej z rzeczy uzytej w tym programie nie mialem w szkole, z tego co piszesz, to jeszcze wiecej powinienem znac aby byc w stanie zrobic to poprawnie, nie ogarniam tego poki co.
P-26501
1 2 3 4 « 5 » 6 7
Poprzednia strona Strona 5 z 7 Następna strona