Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите сделать программу 
:(
    Опции темы
lobster213
Дата 12.6.2008, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.6.2008

Репутация: нет
Всего: нет



помогите сделать программу, в соответствии с вариантом а то я в этом вообще не шарю, описание во вложении
user posted image

Это сообщение отредактировал(а) lobster213 - 12.6.2008, 21:07

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  lab_rab_14.zip 144,57 Kb
PM MAIL   Вверх
Andrey44
Дата 13.6.2008, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



lobster213, ну скажем за тебя программу писать никто не будет.
Пиши, а по-ходу возникшие вопросы задавай тут, тогда помогут.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
LavYaAll
Дата 13.6.2008, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 62
Регистрация: 1.5.2008

Репутация: нет
Всего: 1



Код

void CALLBACK display (void) {
glClear( GL_COLOR_BUFFER_BIT);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(130,1,0,100);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
gluLookAt (0, 0, z, 0, 0, 0, 0, 1, 0);
glPushMatrix();
CTime ct = CTime::GetCurrentTime();
i1 = ct.GetSecond();
glTranslated(10*sin(0.5*i1),10*cos(0.5*i1),0);
glTranslated(x,y,0);
glColor3d(1,0,0);
auxWireCube(10);
glPopMatrix();
glColor3d(1,0,0);
glBegin(GL_LINE_LOOP);
glColor3d(1,0,0);
glVertex3d(0, 0, 0);
glVertex3d(200, 0, 0);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3d(0,1,0);
glVertex3d(0, 0, 0);
glVertex3d(0, 200, 0);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3d(0,0,1);
glVertex3d(0, 0, 0);
glVertex3d(0, 0, 200);
glEnd();
glFlush();
}

1) Я вот не совсем пойму, зачем надо каждый раз при перерисовке заново устанавливать перспективную проекцию. Обычно такое ставят на glutReshapeFunc, кстати говоря туда добавляют и  настройку порта вывода при помощи glViewport.

2) Тут явно используется не GLUT/FreeGLUT, а какая-то другая либа. Если уж просил чтоб сделали, то надо было бы и ее приаттачить.

4) И еще, как понять вот это:
Код

glBegin(GL_LINE_LOOP);
glColor3d(1,0,0);
glVertex3d(0, 0, 0);
glVertex3d(200, 0, 0);
glEnd();

glBegin(GL_LINE_LOOP);
glColor3d(0,1,0);
glVertex3d(0, 0, 0);
glVertex3d(0, 200, 0);
glEnd();

glBegin(GL_LINE_LOOP);
glColor3d(0,0,1);
glVertex3d(0, 0, 0);
glVertex3d(0, 0, 200);
glEnd();

Назначение GL_LINE_LOOP состоит в том, чтоб соединять все указанные тобой точки образуя замкнутый контур. А тут почему-то в каждом блоке glBegin...glEnd указаны всего 2 точки.  smile
Для таких целей есть GL_LINES.

5) А зачем 3 раза подряд устанавливать одно и то же значение цвета? Это чтоб компилятор убедить?  smile 
Код

glColor3d(1,0,0);
auxWireCube(10);
glPopMatrix();
glColor3d(1,0,0);
glBegin(GL_LINE_LOOP);
glColor3d(1,0,0);


3) Солидарен с предыдущим участником. Делай, а мы поможем тебе по ходу. И еще учти, что тебе не просто придется выполнять работу по шагам, а еще и пересмотреть эти шаги. Потому что преподу который тебе это дал, надо самому почитать какую-нибудь умную книжку по OGL.

Это сообщение отредактировал(а) LavYaAll - 13.6.2008, 08:11
PM   Вверх
lobster213
Дата 15.6.2008, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.6.2008

Репутация: нет
Всего: нет



короче сделал сам, вся сложность была в матем. расчетах

Код

#include "stdafx.h"
#include "Lr14.h"

#include "stdafx.h"
#include "math.h"

#include "GL/gl.h"
#include "GL/glu.h"
#include "GL/glaux.h"
void myinit(void);
void CALLBACK display(void);
void CALLBACK ProcUp(void);
void CALLBACK ProcDown(void);
void CALLBACK RrocLeft(void);
void CALLBACK ProcRight(void);
void CALLBACK Proca(void);
void CALLBACK Procz(void);
void myinit (void) {
x = 0.0;
y = 0.0;
z = 100.0;
dx = 4.0;
dy = 4.0;
dz = 4.0;
i1 = 0;
}
void CALLBACK display (void) {
glClear( GL_COLOR_BUFFER_BIT);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(130,1,0,100);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
gluLookAt (0, 0, z, 0, 0, 0, 0, 1, 0);
glPushMatrix();
CTime ct = CTime::GetCurrentTime();
i1 = ct.GetSecond();

if ((i1>=0)&&(i1<15))
glTranslated(6*i1,120-120*i1/15,0);

if ((i1>=15)&&(i1<30))
glTranslated(180-6*i1,120-120*i1/15,0);

if ((i1>=30)&&(i1<45))
glTranslated(180-6*i1,-360+120*i1/15,0);

if ((i1>=45)&&(i1<60))
glTranslated(-360+6*i1,-360+120*i1/15,0);

glTranslated(x,y,0);
glColor3d(0,0,1);
auxSolidIcosahedron(15);
glPopMatrix();
glColor3d(1,0,0);
glBegin(GL_LINE_LOOP);
glColor3d(1,0,0);
glVertex3d(0, 0, 0);
glVertex3d(200, 0, 0);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3d(0,1,0);
glVertex3d(0, 0, 0);
glVertex3d(0, 200, 0);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3d(0,0,1);
glVertex3d(0, 0, 0);
glVertex3d(0, 0, 200);
glEnd();
glFlush();
}
int main(int argc, char** argv) {
auxInitDisplayMode (AUX_SINGLE | AUX_RGB);
auxInitPosition (0, 0, 500, 500);
auxInitWindow ("lab14");
myinit();
auxKeyFunc(AUX_UP, ProcUp);
auxKeyFunc(AUX_DOWN, ProcDown);
auxKeyFunc(AUX_LEFT, RrocLeft);
auxKeyFunc(AUX_RIGHT, ProcRight);
auxKeyFunc(AUX_a, Procz);
auxKeyFunc(AUX_z, Proca);
auxIdleFunc(display);
auxMainLoop(display);
return(0);
}
void CALLBACK ProcUp (void) {
y=y-dy;
}
void CALLBACK ProcDown (void) {
y=y+dy;
}
void CALLBACK RrocLeft(void) {
x=x+dx;
}
void CALLBACK ProcRight(void) {
x=x-dx;
}
void CALLBACK Proca(void) {
z=z+dz;
}
void CALLBACK Procz(void) {
z=z-dz;
}


Добавлено через 3 минуты и 57 секунд
LavYaAll, мне вообще всё-равно на сам код, главное результат и сдать работу, так что мог-бы так не разбираться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.