Mam do napisania program w OpenGl :
Pierścień o promieniu wewnętrznym 15,przekrojem jego ma być kwadrat o
boku 5 i przekątnej równoległej do płaszczyzny XZ w trybie modelowania
GL_TRIANGLE_STRIP. Mam wszystko tylko kłopot mi sprawia ta przekątna
równoległa do płaszczyzny.
na razie mam cos takiego daleko od idealu:
Zamieszczam część kodu
// Definicja stalych
#define DLUGOSC_BOKU 5.0
#define OBSERWATOR_ODLEGLOSC 40.0
#define OBSERWATOR_OBROT_X 20.0
#define OBSERWATOR_OBROT_Y 20.0
#define OBSERWATOR_FOV_Y 30.0
#define PI 3.1415926535897932384626433832795
// Zmienne globalne
double bok = DLUGOSC_BOKU; // Dlugosc boku szescianu
int szerokoscOkna = 800;
int wysokoscOkna = 600;
float pod1 = 12.0;
float xx = 0.0;
float yy = 0.0;
float zz = 0.0;
float r_zew = 20.0, r_wew = 15.0;
float x,y;
float xxx_obrot = 20.0, yyy_obrot = 20.0, zzz_obrot;
float radian(double a)
{
return (a*PI)/180;
}
void RysujPierscien(double a)
{
glBegin(GL_TRIANGLE_STRIP);
glColor3f (0.5,0.5,0.5);
for
( x = 0.0; x <= 360.0; x+=
360.0/pod1)
{
glVertex3f(r_zewcos(radian(x+(360.0/pod1))),3.0,-r_zewsin(radian(x+(360.0/pod1))));
glVertex3f(r_zewcos(radian(x+(360.0/pod1))),0.0,-r_zewsin(radian(x+(360.0/pod1))));
glVertex3f(r_zewcos(radian(x)),0.0,-r_zewsin(radian(x)));
glVertex3f(r_wewcos(radian(x+(360.0/pod1))),3.0,-r_wewsin(radian(x+(360.0/pod1))));
glVertex3f(r_wewcos(radian(x+(360.0/pod1))),0.0,-r_wewsin(radian(x+(360.0/pod1))));
glVertex3f(r_wewcos(radian(x)),0.0,-r_wewsin(radian(x)));
glVertex3f(r_wewcos(radian(x+(360.0/pod1))),3.0,-r_wewsin(radian(x+(360.0/pod1))));
glVertex3f(r_wewcos(radian(x+(360.0/pod1))),0.0,-r_wewsin(radian(x+(360.0/pod1))));
glVertex3f(r_wewcos(radian(x)),0.0,-r_wewsin(radian(x)));
glVertex3f(r_wewcos(radian(x+(360.0/pod1))),3.0,-r_wewsin(radian(x+(360.0/pod1))));
glVertex3f(r_wewcos(radian(x+(360.0/pod1))),3.0,-r_wewsin(radian(x+(360.0/pod1))));
glVertex3f(r_zewcos(radian(x)),3.0,-r_zewsin(radian(x)));
glVertex3f(r_zewcos(radian(x)),0.0,-r_zewsin(radian(x)));
}
glEnd();
}