Rysowanie wykresu sin z pomocą Allegro

Odpowiedz Nowy wątek
2014-05-02 19:38

Rejestracja: 5 lat temu

Ostatnio: 5 lat temu

0

Witam.
Nie potrafię poradzić sobie z pozoru dla mnie prostym zadaniem. Mam narysować w języku C z pomocą biblioteki Allegro jeden okres Sin(x) rozpięty na ekranie 640x480 - i z tą częścią poradziłem sobie bez problemów. Jednakże druga część sprawia mi już duży kłopot. Należy zrobić to samo z funkcją sin(x)+(1/3)*sin(3x)+(1/5)*sin(5x).

Byłbym bardzo wdzięczny gdyby ktoś był w stanie mi pomóc i wyjaśnić jak mogę uzyskać drugi wykres.

Oto niedziałający kod:

#include<iostream> 
#define USE_CONSOLE 
#include<allegro.h> 
#include<cmath> 
using namespace std; 

int main() 
{ 
    double y,x,a,b,c,z;
    allegro_init();
    install_keyboard();
    set_color_depth(desktop_color_depth());
    set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);
    acquire_screen();
    x=0;
    for(int i=0;i<640;i++)
    {
           line( screen, i-1, 480-480*((sin(x-0.0098179457921875)+1)/2), i, 480-480*((sin(x)+1)/2), makecol( 255, 255, 255 ) );
           x=x+0.0098179457921875;
    }//ta petla rysuje sin(x)
    x=0;

    for(int i=0;i<640;i++)
    {
           a=(sin(x)+((1/3)*sin(3*x))+((1/5)*sin(5*x)));
           putpixel( screen, i, 480-480*((a+(14/15))/(28/15)), makecol( 255,0,0 ) );
           x=x+0.0098179457921875;
    }//ta powinna rysowac sin(x)+(1/3)*sin(3x)+(1/5)*sin(5x)
           line( screen, 0, 240, 640, 240, makecol(255,255,255));
           line( screen, 320, 0,320, 480, makecol(255,255,255));
    release_screen();
    readkey();
    system("pause");
    return 0 ;
} 
END_OF_MAIN() 
edytowany 1x, ostatnio: MrWaciciel, 2014-05-02 19:38

Pozostało 580 znaków

2014-05-02 19:41

Rejestracja: 7 lat temu

Ostatnio: 3 lata temu

Lokalizacja: Kraków

Używasz literałów całkowitoliczbowych zamiast zmiennoprzecinkowych.
Zamiast 28 wpisuj 28.0, ewentualnie 28.0f, lub 28.0L. W zależności od tego co potrzebujesz.
http://www.cplusplus.com/doc/tutorial/constants/

Pozostało 580 znaków

2014-05-02 19:52

Rejestracja: 5 lat temu

Ostatnio: 5 lat temu

0

Bardzo dziękuję rada była pomocna :)

Pozostało 580 znaków

Odpowiedz

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