Rysowanie pacmana
Ostatnio zmodyfikowano 2016-01-18 07:50
Garniturek Temat założony przez niniejszego użytkownika |
Rysowanie pacmana » 2016-01-17 18:31:05 Witam, mam do narysowania Pacmana w Open GL. W mojej opinii tak napisany program, powinien go rysować, a on mi rysuje ucięte kółko (bez wcięcia). Dodam, że jestem bardzo słaby z Open GL (dopiero zaczynam). pomocy :) glBegin( GL_TRIANGLE_FAN ); int licznik = 0; int licz = 1; int licznik_2 = 0; glVertex2f( 0.0, 0.0 ); for( kat = 0.0; kat <( 2.0 * GL_PI ); kat +=( GL_PI / 32.0 ) ) { if( licznik_2 == 0 ) { if( licz == 10 ) { licz = licznik; licznik_2++; } } if( licz > 21 ) licz = licznik + 1; if( licznik != licz ) { x = 1.01 * sin( kat ); y = 1.01 * cos( kat ); glVertex2f( x, y ); } licznik++; licz++; }
glEnd();
|
|
pekfos |
» 2016-01-17 20:44:01 on mi rysuje ucięte kółko (bez wcięcia) |
Czyli co? for( kat = 0.0; kat <( 2.0 * GL_PI ); kat +=( GL_PI / 32.0 ) ) { } |
Po co te wszystkie warunki i liczniki? To nie jest do niczego potrzebne. Masz zacząć od pewnego kąta 0-30 stopni i narysować ileśtam trójkątów dla pokrycia 300-360 kolejnych stopni. Do tego wystarczy sama zmienna kat i może jeden warunek, chociaż da się i bez niego. x = 1.01 * sin( kat ); y = 1.01 * cos( kat ); glVertex2f( x, y ); |
Zmienne x i y masz tu tylko po to, by były. Przedłużasz kod nie wnosząc niczego. |
|
Garniturek Temat założony przez niniejszego użytkownika |
» 2016-01-17 21:29:29 Poprawiłem, ale problem ten sam, rysuje takie coś, a w moim rozumieniu powinien zrobić wcięcie jak u Pacmana ;) http://www.fotoszok.pl/upload/244c2044.bmp glVertex2f( 0.0, 0.0 );
for( kat = 0.0; kat <( 2.0 * GL_PI ); kat +=( GL_PI / 32.0 ) ) { cout << kat << " "; if( kat < 1 || kat > 3 ) { x = 1.01 * sin( kat ); y = 1.01 * cos( kat ); glVertex2f( x, y ); } }
glEnd();
|
|
pekfos |
» 2016-01-17 21:45:03 Nie zrobiłeś tego, o czym pisałem. x = 1.01 * sin( kat ); y = 1.01 * cos( kat ); |
Odwrotnie. |
|
Garniturek Temat założony przez niniejszego użytkownika |
» 2016-01-17 22:01:25 Rzeczywiście, bezsensu te zmienne, ale problem pozostaje ten sam, nie potrafię tego narysować glBegin( GL_TRIANGLE_FAN );
glVertex2f( 0.0, 0.0 ); for( kat = 0.0; kat <( 2.0 * GL_PI ); kat +=( GL_PI / 32.0 ) ) { if( kat < 1 || kat > 3 ) glVertex2f( 1.01 * sin( kat ), 1.01 * cos( kat ) ); }
glEnd();
|
|
pekfos |
» 2016-01-17 22:34:43 Jak grochem o ścianę.. glVertex2f( cos( kat ), sin( kat ) );
|
|
Garniturek Temat założony przez niniejszego użytkownika |
» 2016-01-18 07:50:25 Ah. Przepraszam za moją ułomność. Dzięki wielkie za pomoc i cierpliwość! |
|
« 1 » |