raptor22 Temat założony przez niniejszego użytkownika |
Fraktale.Problem z rysowaniem. » 2014-06-04 00:00:36 Witam. Mam problem z napisaniem programu do rysowania fraktali. Mam już cały kod,ale po uruchomieniu wyświetla mi się czarny ekran.Czy mógłby ktoś znaleźć błąd w kodzie? Treść polecenia : Rozważmy następujące odwzorowanie na płaszczyźnie: zn+1 = zn^2 +c gdzie: c jest stałą liczbą zespoloną. Jeżeli c = - 0.123 + j 0.745, a z0(z zero) = 0.5 + j 0.5, to z1 = - 0.123 + j 1.245. Zbiory Julia tworzą te punkty na płaszczyźnie zespolonej, których odległość od początku układu współrzędnych jest skończona. Napisz program, który generuje nMax = 30 iteracji powyższego odwzorowania. Generuj kolejne iteracje dopóki ich odległość od początku układu współrzędnych będzie mniejsza od 2. Punkt początkowy z0(z zero)= x0 + j y0 wybierz arbitralnie ale tak, aby -1.5<x0 <1.5 i -1.5<y0 <1.5. Jeśli po nMax =30 iteracjach odległość jest wciąż mniejsza od 2 to na wykresie w punkcie o współrzędnych x0 i y0 rysujemy piksel. Do obliczeń, dla dostatecznie dużej liczby punktów, wykorzystaj zagnieżdżone pętle for. Obliczenia przeprowadź dla: c = - 0.75, c = - 0.391 – j 0.587, c = - 0.123 + j 0.745 mój kod: #include <iostream> #include <complex> #define USE_CONSOLE #include<vector> #include <allegro.h> #define _USE_MATH_DEFINES #include<cmath> using namespace std; int main() { complex < float > c; double x; double y; complex < float > z; int i = 0; { allegro_init(); install_keyboard(); set_color_depth( desktop_color_depth() ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); acquire_screen(); c =( - 0.123, 0.745 ); for( x = 0; x < 640; x++ ) { for( y = 0; y < 480; y++ ) { z =(( 3 * x ) / 640 - 1.5,( 480 - y ) / 160 - 1.5 ); while( i < 30 ) { z = z * z + c; i = i + 1; } if( abs( z ) < 2.0 ) { putpixel( screen, x, y, makecol( 255, 211, 244 ) ); } } } c =( - 0.75, 0.0 ); for( x = 0; x < 640; y++ ) { for( y = 0; y < 480; y++ ) { z =(( 3 * x ) / 640 - 1.5,( 480 - y ) / 160 - 1.5 ); while( i < 30 ) { z = z * z + c; i = i + 1; } if( abs( z ) < 2.0 ) { putpixel( screen, x, y, makecol( 145, 225, 211 ) ); } } } c =( - 0.391, - 0, 587 ); for( x = 0; x < 640; y++ ) { for( y = 0; y < 480; y++ ) { z =(( 3 * x ) / 640 - 1.5,( 480 - y ) / 160 - 1.5 ); while( i < 30 ) { z = z * z + c; i = i + 1; } if( abs( z ) < 2.0 ) { putpixel( screen, x, y, makecol( 155, 200, 255 ) ); } } } release_screen(); readkey(); return 0; } } END_OF_MAIN();
|
|
michal11 |
» 2014-06-04 14:01:33 Wstaw kod w odpowiednie znaczniki, łatwiej będzie to odczytać. |
|
raptor22 Temat założony przez niniejszego użytkownika |
» 2014-06-06 09:09:33 Proszę o pomoc,ponieważ od tego zależy moje zaliczenie . |
|
pekfos |
» 2014-06-06 12:56:05 |
|
raptor22 Temat założony przez niniejszego użytkownika |
» 2014-06-06 15:12:18 to wartości przyjmowane przez zmienną 'c' przy danej pętli i danym fraktalu. |
|
pekfos |
» 2014-06-06 16:33:20 To tak nie działa. |
|
raptor22 Temat założony przez niniejszego użytkownika |
» 2014-06-06 17:27:50 to już niestety nie mam pomysłów jak to dalej ruszyć :( |
|
pekfos |
» 2014-06-06 17:29:48 c = std::complex < float >( - 0.123, 0.745 );
|
|
« 1 » 2 3 4 |