To tylko jedna z 7 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
/*************************************************************************/
// Trochę bardziej skomplikowany program wykorzystujący funkcje biblioteki OpenGL
/*************************************************************************/
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef float point3[3];
typedef float point2[2];
const int szczeg = 15; //stała określająca liczbę losowanych funkcji
static int doc = 25; //zmienna przechowująca dokładność szczegółów
point2 tab2D[100]; //tablica z funkcją w 2D
point3 tab[szczeg][100];//tablica przechowująca współrzędne wszystkich punktów w przestrzeni 3D
float taba[szczeg]; //przechowje współczynniki a dla poszczególnych funkcji
int poziom = 90; //maksymalna granica losowania parametru a
int model = 0; //1-zwiększanie górnej granicy losowania parametru a, 2-zmniejszenie
int gen = 1; //jeżeli 1 to należy generować nowe współrzędne
point3 kolor[szczeg][100]; //tablica przechowująca kolory
//zmienne interakcji
static GLfloat pix2angleh;
static GLfloat pix2anglev;
static GLfloat viewer[] = {0.0, 0.0, 0.0};
static int x_stare = 0;
static int y_stare = 0;
static int z_stare = 0;
static GLfloat azymut = 0.0;
static GLfloat elewacja = 0.0;
static GLfloat d_azymut = 0.0;
static GLfloat d_elewacja = 0.0;
static GLfloat zoom = 0.0;
static GLfloat R = 30.0;
static int status = 0;
/*************************************************************************/
//losowanie koloru
void losowanie_kolorow()
{
for( int i = 0 ; i
(…)
… = 0 ; j<100 ; j++ )
{
kolor[i][j][2] = kolor[i][j][1] = kolor[i][j][0] = rand()%2;
}
}
}
//funkcja zwracająca wartość (y) funkcji weierstrassa w punkcie x
float weierstrass(float a, float x)
{
float wynik = 0;
for( int k = 1 ; k<=20 ; k++ )
{
wynik += sin(3.14*pow(k,a)*x)/(3.14*pow(k,a));
}
if( wynik < 0 )
wynik *= (-1);
return wynik;
}
// funkcja generująca współrzędne 2D (wykres funkcji…
… = 0 ; j<szczeg ; j++ ) // dla wszystkich funkcji
{
generuj_tab2D(taba[j]);//generujemy wykres funkcji dla podanego parametru a
//każdą współrzędną 2D przeliczamy na współrzędną 3D
for( int i = 0 ; i<doc ; i++ )
{
tab[j][i][0] = tab2D[i][0]-5;
tab[j][i][1] = tab2D[i][1] * sin(3.14*(alfa/180.0));
tab[j][i][2] = tab2D[i][1] * cos(3.14*(alfa/180.0));
}
alfa += 180.0/(szczeg-1); //zwiększamy kąt obrotu…
…) są
// przekazywane do funkcji za każdym razem gdy zmieni się rozmiar okna.
void ChangeSize(GLsizei horizontal, GLsizei vertical )
{
pix2angleh = 360.0/(float)horizontal; // przeliczenie pikseli na stopnie
pix2anglev = 360.0/(float)vertical;
glMatrixMode(GL_PROJECTION);
// Przełączenie macierzy bieżącej na macierz projekcji
glLoadIdentity();
// Czyszcznie macierzy bieżącej gluPerspective(70, 1.0, 1.0, 30.0…
... zobacz całą notatkę
Komentarze użytkowników (0)