Rysowanie wykresu sin z pomocą Allegro

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() 
1

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/

0

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

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