Вот у меня созданный мною код для рисование функции Улитки Паскаля в OpenGL--Почему то график функции не отображается--если даже заменить содержание формули на параболу? В чем дело? Ибо линии рисуются.
| Код | #include <stdio.h> #include "math.h" #include <tchar.h> #include "windows.h" #include <GL/glut.h> int j=0; int a=5; int b=7; //int a[3]={1, 0.5, 0.9}; //int b[3]={7, 0.4, 0.2};
float rav (float te) { return a*cos(te)+b; }
void display() { int n = 300; glClear( GL_COLOR_BUFFER_BIT ); glBegin( GL_LINES ); glColor3d( 0.0, 0.0, 0.0 ); //1.Malyuyemo coordynatni osi chornym kolyorom glVertex2d( 0, -11 ); glVertex2d( 0, 11 ); glVertex2d( -11, 0 ); glVertex2d( 11, 0 ); glColor3d( 0.5, 0.5, 0.5 ); //2.Malyuyemo coordynatnu sitku chornym kolyorom glVertex2d( 0.5, -11 ); glVertex2d( 0.5, 11 ); glVertex2d( 0.5, -11 ); glVertex2d( 0.5, 11 ); glVertex2d( 1, -11 ); glVertex2d( 1, 11 ); glVertex2d( 1.5, -11 ); glVertex2d( 1.5, 11 ); glVertex2d( 2, -11 ); glVertex2d( 2, 11 ); glVertex2d( 2.5, -11 ); glVertex2d( 2.5, 11 ); glVertex2d( 3, -11 ); glVertex2d( 3, 11 ); glVertex2d( 3.5, -11 ); glVertex2d( 3.5, 11 ); glVertex2d( 4, -11 ); glVertex2d( 4, 11 ); glVertex2d( 4.5, -11 ); glVertex2d( 4.5, 11 ); glVertex2d( 5, -11 ); glVertex2d( 5, 11 ); glVertex2d( 5.5, -11 ); glVertex2d( 5.5, 11 ); glVertex2d( 6, -11 ); glVertex2d( 6, 11 ); glVertex2d( 6.5, -11 ); glVertex2d( 6.5, 11 );
glEnd(); glBegin(GL_LINE_STRIP); glColor3d( 0.0, 0.0, 0.0 ); for(int i=0; i <= n; i++) { float x = (8/300)*i-4; float y = rav (x); glVertex2f( x, y ); } glEnd(); glutSwapBuffers(); } void resize( int width, int height ) { glViewport( 0, 0, width, height ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); static double invRatio = 5.0; gluOrtho2D( -invRatio, invRatio, -invRatio, invRatio ); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB ); glutInitWindowSize(600,600); glutInitWindowPosition(100, 100); glutCreateWindow("Point"); glClearColor( 1.0, 1.0, 1.0, 1.0); glutDisplayFunc( display ); glutReshapeFunc( resize ); glutMainLoop(); return 0; }
void display() { int n = 300; glClear( GL_COLOR_BUFFER_BIT ); glBegin( GL_LINES ); glColor3d( 0.0, 0.0, 0.0 ); //1.Malyuyemo coordynatni osi chornym kolyorom glVertex2d( 0, -11 ); glVertex2d( 0, 11 ); glVertex2d( -11, 0 ); glVertex2d( 11, 0 ); glColor3d( 0.5, 0.5, 0.5 ); //2.Malyuyemo coordynatnu sitku chornym kolyorom glVertex2d( 0.5, -11 ); glVertex2d( 0.5, 11 ); glVertex2d( 0.5, -11 ); glVertex2d( 0.5, 11 ); glVertex2d( 1, -11 ); glVertex2d( 1, 11 ); glVertex2d( 1.5, -11 ); glVertex2d( 1.5, 11 ); glVertex2d( 2, -11 ); glVertex2d( 2, 11 ); glVertex2d( 2.5, -11 ); glVertex2d( 2.5, 11 ); glVertex2d( 3, -11 ); glVertex2d( 3, 11 ); glVertex2d( 3.5, -11 ); glVertex2d( 3.5, 11 ); glVertex2d( 4, -11 ); glVertex2d( 4, 11 ); glVertex2d( 4.5, -11 ); glVertex2d( 4.5, 11 ); glVertex2d( 5, -11 ); glVertex2d( 5, 11 ); glVertex2d( 5.5, -11 ); glVertex2d( 5.5, 11 ); glVertex2d( 6, -11 ); glVertex2d( 6, 11 ); glVertex2d( 6.5, -11 ); glVertex2d( 6.5, 11 );
glEnd(); glBegin(GL_LINE_STRIP); glColor3d( 0.0, 0.0, 0.0 ); for(int i=0; i <= n; i++) { float x = (8/300)*i-4; float y = rav (x); glVertex2f( x, y ); } glEnd(); glutSwapBuffers(); } void resize( int width, int height ) { glViewport( 0, 0, width, height ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); static double invRatio = 5.0; gluOrtho2D( -invRatio, invRatio, -invRatio, invRatio ); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB ); glutInitWindowSize(600,600); glutInitWindowPosition(100, 100); glutCreateWindow("Point"); glClearColor( 1.0, 1.0, 1.0, 1.0); glutDisplayFunc( display ); glutReshapeFunc( resize ); glutMainLoop(); return 0; }
|
Модератор: используйте подсветку кода |