driver1995 Temat założony przez niniejszego użytkownika |
[allegro] linie proste » 2009-05-01 15:15:04 Dzień dobry ;) Mam 2 pytania... 1. Czy da się w allegro jakoś narysować kilka linii których jeden punkt miałby stałe x,y a drugi, np. w pętli do..while przemieszczał się tak, żeby stworzyć ostateczny efekt - koło (wypełnione).. Nie chodzi mi o np. circle() i fill(), lub arc(), albo coś w tym stylu, tylko koniecznie z lini... 2. Czy da się pogrubić narysowaną linię ?? |
|
WunM |
» 2009-05-01 15:16:31 1 Tak 2 Tak |
|
driver1995 Temat założony przez niniejszego użytkownika |
» 2009-05-01 15:17:19 Haha... No dobra, to było takie pytanie retoryczne... Właściwie chodziło mi o to: jak? ;p;p;p |
|
WunM |
» 2009-05-01 15:24:01 Zakładam że umiesz rysować linie w Allegro. Jeśli nie to break.
1. Krok I __Rysuj linię na początek np. szerokość 2px Krok II __Rysuj linię niżej (o 1px) o szerokości 3px (++1) Krok III __To co wyżej aż szerokość osiągnie punkt krytyczny (średnica koła) Krok IV __Rysuj linię poniżej o 1px jednak zmniejszając szerokość o 1px Krok V __To co wyżej aż szerokość lini osiągnie szerokość minimalną (2px)
2. Krok I __Rysuj linię o szerokości jaką tam chcesz (chodzi o położenie x1 i x2) Krok II __Rysuj linię o takiej samej szerokości poniżej powyższej o 1px Krok III __To co wyżej tyle razy ile chcesz aby była gruba lini (w px)
//edit
Poprawiłem bo mi się nie podobało |
|
DejaVu |
» 2009-05-01 15:31:19 x1 = posX; y1 = posY; x2 = posX + dlugosc * sin( kat ); y2 = posY + dlugosc * cos( kat );
kat - wartość w radianach |
|
driver1995 Temat założony przez niniejszego użytkownika |
» 2009-05-01 15:40:38 @2up - 1. wychodzi kwadrat, przekrzywiony, i bardziej mi chodziło o "od środka" 2. hehe... to wiedziałem, ale mi chodzi o pogrubienie naturalnie jednej lini.. Ale mimo to dzięki ;) @up - spróbuje i dam edita ;) //edit: Dalej nie kumam... wychodzi to samo co mógłbym zrobić bez tego;/ #include <allegro.h> #include<math.h> int main() { allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); clear_to_color( screen, makecol( 0, 0, 0 ) ); int posX = 400; int posY = 400; int dlugosc = 100; int x1 = posX; int y1 = posY; int x2 = posX + dlugosc * sin( 1 ); int y2 = posY + dlugosc * cos( 1 ); do { line( screen, x1, y1, x2, y2, makecol( 255, 255, 255 ) ); x2++; y2++; } while( y2 != 500 && !key[ KEY_ESC ] ); readkey(); allegro_exit(); return 0; } END_OF_MAIN(); Nie wiem czy to z tym cos i sin jest dobrze (raczej nie)... Więc, co z tym zrobić?? (chodzi mi dla przykładu o kawałek koła, więc całego nie rysowałem... ;/; / ;/ ;;/ |
|
DeBugger |
» 2009-05-01 16:30:05 Może spróbuj to: #include <allegro.h> #include<cmath> int main() { allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); clear_to_color( screen, makecol( 0, 0, 0 ) ); int obrot = 1; int posX = 400; int posY = 400; int dlugosc = 100; int x1 = posX; int y1 = posY; int x2 = posX + dlugosc * sin( obrot ); int y2 = posY + dlugosc * cos( obrot ); do { line( screen, x1, y1, x2, y2, makecol( 255, 255, 255 ) ); obrot++; x2 = posX + dlugosc * sin( obrot ); y2 = posY + dlugosc * cos( obrot ); } while( y2 != 500 && !key[ KEY_ESC ] ); readkey(); allegro_exit(); return 0; } |
|
driver1995 Temat założony przez niniejszego użytkownika |
» 2009-05-01 16:35:34 Ok... Dzięki...
//edit:
A właśnie, byłbym zapomniał... A z tą pogrubioną linią to można tylko 2 linie obok siebie??? |
|
« 1 » 2 |