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

[allegro] linie proste

Ostatnio zmodyfikowano 2009-05-04 17:03
Autor Wiadomość
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ę ??
P-6264
WunM
» 2009-05-01 15:16:31
1 Tak
2 Tak
P-6265
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
P-6266
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
P-6267
DejaVu
» 2009-05-01 15:31:19
C/C++
x1 = posX;
y1 = posY;
x2 = posX + dlugosc * sin( kat );
y2 = posY + dlugosc * cos( kat );
kat - wartość w radianach
P-6268
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;/
C/C++
#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... ;/; / ;/ ;;/
P-6269
DeBugger
» 2009-05-01 16:30:05
Może spróbuj to:
C/C++
#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;
}
P-6274
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???
P-6275
« 1 » 2
  Strona 1 z 2 Następna strona