Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2012, 16:12   #1
Ada_A
 
Регистрация: 24.06.2012
Сообщений: 6
Вопрос OpenGL VC2010

нашла пример
но он не работает
Код:
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <StdAfx.h>
#include <glos.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include <math.h>

using namespace std;
sign(float x); //задание точек
float c(float x,float y);
float s(float x,float y);
float cT(float x,float y,float z);
float x(float x,float y,float z);
float y(float x,float y,float z);
float z(float x);


void Model(void);
void CALLBACK Prikaz(void); // отображение
void CALLBACK Okno(GLsizei w, GLsizei h);

#define PI 3.141592654

float ALFA,Ax,Ay,Az,e,n;
float u,v;

struct Koord
{
 float X,Y,Z;
};

Koord T[19][19];

int Kot_x ,Kot_y ,Kot_z;
float p=1;

// Поворот кнопки со стрелками, и масштабирование
void CALLBACK Rotacija_Gor (void)
{
 Kot_x = (Kot_x - 15) % 360;
}

void CALLBACK Rotacija_Dol (void)
{
 Kot_x = (Kot_x + 15) % 360;
}

void CALLBACK Rotacija_Levo (void)
{
 Kot_z = (Kot_z - 15) % 360;
}

void CALLBACK Rotacija_Desno (void)
{
 Kot_z = (Kot_z + 15) % 360;
}

void CALLBACK Oddaljuje_Pogled (void)
{
 p = p - 0.1;
}

void CALLBACK Priblizuje_Pogled (void)
{
 p = p + 0.1;
}

void CALLBACK Hiter_Prikaz(void)
{
 Prikaz(); //повторное проектирование участка
}

 

// Рассчитать каждое КООРДИНАТЫ
//tocka x

float x(float x,float y,float z)
{
 float w;
 w=Ax*cT(y,n,z)*c(x,e);
 return(w);
}

//tocka y
float y(float x,float y,float z)
{
 float w;
 w=Ay*cT(y,n,z)*s(x,e);
 return(w);
}

//tocka z
float z(float x)
{
 float y;
 y=Az*s(x,n);
 return(y);
}

//funkcija cT
float cT(float x,float y,float z)
{
float w;
 w=c(x,y)+z;
return (w);
}

//funkcija s
float s(float x, float y)
{
float z;
 if (fabs(sin(x))<0.0001 && y<=0)
 z=0.0;
 else
 z=sign(sin(x))*pow(fabs(sin(x)),y);
return (z);
}

//funkcija c
float c(float x, float y)
{
float z;
 if (fabs(cos(x))<0.0001 && y<=0)
 z=0.0;
 else
 z=sign(cos(x))*pow(fabs(cos(x)),y);
return (z);
}

//signum funkcija
sign(float x)
{
int y;
 if (x<0)
 y=-1.;
 else if (x>0)
 y=1.;
 else
 y=0.;
return(y);
}

 

// Эти файлы с параметрами: ALFA, Ax, Ay, Az, n in e
void Branje(void)
{
 FILE *param;
 param=fopen("param.txt","r");
 fscanf(param,"%f\n",&ALFA);
 fscanf(param,"%f\n",&Ax);
 fscanf(param,"%f\n",&Ay);
 fscanf(param,"%f\n",&Az);
 fscanf(param,"%f\n",&n);
 fscanf(param,"%f\n",&e);
 fclose(param);
}

  

// IZRIS MODELA
void Model(void)
{
//izracun tock
 int i,j;
 for(i=0, u=-PI;u<=PI;i++, u=u+PI/9.)
 {
 for (j=0, v=-PI;v<=PI;j++, v=v+PI/9.)
 {
 T[i][j].X=x(u,v,ALFA);
 T[i][j].Y=y(u,v,ALFA);
 T[i][j].Z=z(v);
 }
 }

glNewList(1, GL_COMPILE);
//построение горизонтальных линий
 for (i=0;i<18;i++)
 {
 for (int j=0;j<19;j++)
 {
 glBegin(GL_LINES);
 glColor3f (1.0, 0.0, 0.0);
 glVertex3f(T[i][j].X, T[i][j].Y, T[i][j].Z);
 glVertex3f(T[i+1][j].X, T[i+1][j].Y, T[i+1][j].Z);
 glEnd();
 }
 }

//построения вертикальных линий
 for (i=0;i<19;i++)
 {
 for (j=0;j<18;j++)
 {
 glBegin(GL_LINES);
 glColor3f (1.0, 0.0, 0.0);
 glVertex3f(T[i][j].X, T[i][j].Y, T[i][j].Z);
 glVertex3f(T[i][j+1].X, T[i][j+1].Y, T[i][j+1].Z);
 glEnd();
 }
 }
glEndList();
}

// МОДЕЛЬ Вращение и масштабирование
void CALLBACK Prikaz(void)
{
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glColor3f (1.0, 0.0, 0.0);
 glPushMatrix();
 glRotatef (Kot_x, 1, 0, 0);
 glRotatef (Kot_y, 0, 1, 0);
 glRotatef (Kot_z, 0, 0, 1);
 glScalef (p,p,p);
 glCallList(1);
 glPopMatrix();
 glFlush();
 auxSwapBuffers();
}

// ИЗМЕНЕНИЕ окна 
void CALLBACK Okno(GLsizei w, GLsizei h)
{
 if (!h) return;
 glViewport(0, 0, w, h);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluPerspective(60.0, 1, 1.0, 50.0); //глубина участка
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 glTranslatef (0.0, 0.0, -20); //просмотр высоты
}


int main(void)
{
 auxInitDisplayMode (AUX_DOUBLE | AUX_RGB | AUX_DEPTH16);
 auxInitPosition (0, 0, 500, 500);
 auxInitWindow ("SuperQuadric");
 Branje();
 Model();
//Масштабирование
 auxKeyFunc (AUX_q, Oddaljuje_Pogled);
 auxKeyFunc (AUX_a, Priblizuje_Pogled);
 auxKeyFunc (AUX_Q, Oddaljuje_Pogled);
 auxKeyFunc (AUX_A, Priblizuje_Pogled);
//ключи для поворота
 auxKeyFunc (AUX_UP, Rotacija_Gor);
 auxKeyFunc (AUX_DOWN, Rotacija_Dol);
 auxKeyFunc (AUX_LEFT, Rotacija_Levo);
 auxKeyFunc (AUX_RIGHT, Rotacija_Desno);
//работать для восстановления
 auxReshapeFunc (Okno);
 auxIdleFunc (Hiter_Prikaz);
 auxMainLoop(Prikaz);
 return(0);
}
ошибка такова:
fatal error C1083: Не удается открыть файл включение: StdAfx.h: No such file or directory
так же ругается на <glos.h>, если закомментить StdAfx.h
Ada_A вне форума Ответить с цитированием
Старый 24.06.2012, 19:13   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

комментируйте оба
p51x вне форума Ответить с цитированием
Старый 24.06.2012, 19:34   #3
Ada_A
 
Регистрация: 24.06.2012
Сообщений: 6
По умолчанию

пробовала
становится совсем страшно

1> 1.cpp
1>c:\program files\microsoft visual studio 10.0\vc\include\gl\glaux.h(17): warning C4068: неизвестная директива pragma
1>c:\program files\microsoft visual studio 10.0\vc\include\gl\glaux.h(374): warning C4068: неизвестная директива pragma
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(13): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(64): warning C4244: =: преобразование "double" в "float", возможна потеря данных
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(69): warning C4244: =: преобразование "double" в "float", возможна потеря данных
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(137): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(140): warning C4244: =: преобразование "double" в "int", возможна потеря данных
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(142): warning C4244: =: преобразование "double" в "int", возможна потеря данных
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(144): warning C4244: =: преобразование "double" в "int", возможна потеря данных
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(171): warning C4305: =: усечение из "double" к "float"
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(171): warning C4244: =: преобразование "double" в "float", возможна потеря данных
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(173): warning C4305: =: усечение из "double" к "float"
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(173): warning C4244: =: преобразование "double" в "float", возможна потеря данных
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(216): warning C4244: аргумент: преобразование "int" в "GLfloat", возможна потеря данных
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(217): warning C4244: аргумент: преобразование "int" в "GLfloat", возможна потеря данных
1>c:\курсач\суперквадрика-пример\суперквадрика-пример\1.cpp(218): warning C4244: аргумент: преобразование "int" в "GLfloat", возможна потеря данных
1>
1>СБОЙ построения.

паника паника
Ada_A вне форума Ответить с цитированием
Старый 25.06.2012, 09:07   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Не бойтесь. В глосе.х как раз и отключалось большинство предупреждений. )

Код:
sign(float x); //задание точек
на
Код:
int sign(float x); //задание точек
и
Код:
sign(float x)
{
на
Код:
int sign(float x)
{
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ OpenGL Kukurudza Общие вопросы C/C++ 4 08.02.2012 18:48
Opengl revaldo666 Общие вопросы C/C++ 12 28.07.2010 22:43
OpenGL revaldo666 Общие вопросы C/C++ 2 22.07.2010 10:39
Ошибка прикомпиляции в Vc2010 attt123 Общие вопросы C/C++ 1 04.04.2010 08:19
OpenGL в С# LeGAl Общие вопросы .NET 0 30.04.2009 02:15