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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2009, 11:00   #1
baltushka
 
Регистрация: 08.06.2009
Сообщений: 6
По умолчанию Нужна помощь в понимании программы, написанной на С

Всем доброго времени!
Помогите, пожалуйста, разобраться с кодом программы на С! Собственно, что она делает и получает в итоге, ибо непонятно и нужно перевести в код на delphi!

#include "glos.h"
#include <stdio.h>
#include <process.h>
#include <math.h>

#include <GL\\gl.h>
#include <GL\\glu.h>
#include <GL\\glaux.h> //glaux.lib, opengl32.lib, glu32.lib
// FILE *stream;
#define kol 15
void myinit(void);
void init_surface(void);
void CALLBACK display(void);
void CALLBACK myReshape(GLsizei w, GLsizei h);

GLfloat ctlpoints[4][4][3];

GLUnurbsObj *theNurb;

/*
* Initializes the control points of the surface to a small hill.
* The control points range from -3 to +3 in x, y, and z
*/
void init_surface(void)
{
int u, v;
for (u = 0; u < 4; u++) {
for (v = 0; v < 4; v++) {
ctlpoints[u][v][0] = 2.0*((GLfloat)u - 1.5);
ctlpoints[u][v][1] = 2.0*((GLfloat)v - 1.5);

if ( (u == 1 || u == 2) && (v == 1 || v == 2))
ctlpoints[u][v][2] = 3.0;
else
ctlpoints[u][v][2] = -3.0;
}
}
}

/* Initialize material property and depth buffer.
*/
void myinit(void)
{
GLfloat mat_diffuse[] = { 0.7, 0.7, 0.7, 1.0 };
GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_shininess[] = { 100.0 };

glClearColor (0.0, 0.0, 0.0, 1.0);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);

init_surface();

theNurb = gluNewNurbsRenderer();
gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 25.0);
gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_OUTLINE_POLYGON);
// gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL);
}

void CALLBACK display(void)
{ int D = 0, i = 0, k, M = 0, mi, ma = 0, x, y;
//double D = 0.;
double s;
int Res[kol] = {15, 32, 31,31, 16, 31, 16, 15, 32,15, 16, 31, 16, 31, 16};

{
GLfloat knots[8] = {0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0};

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPushMatrix();

glRotatef(330.0, 1,0.,0.);

glScalef (0.5, 0.5, 0.5);

gluBeginSurface(theNurb);

gluNurbsSurface(theNurb,
8, knots,
8, knots,
4 * 3,
3,
&ctlpoints[0][0][0],
4, 4,
GL_MAP2_VERTEX_3);

gluEndSurface(theNurb);
glPopMatrix();

glFlush();


}
}

void CALLBACK myReshape(GLsizei w, GLsizei h)
{
if (!h) return;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective (45.0, (GLdouble)w/(GLdouble)h, 3.0, 8.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef (0.0, 0.0, -5.0);
}

/* Main Loop
*/
int main(int argc, char** argv)
{
auxInitDisplayMode (AUX_SINGLE | AUX_RGB);
auxInitPosition (0, 0, 500, 500);
auxInitWindow ("NURBS Surface");
myinit();
auxReshapeFunc (myReshape);
auxMainLoop(display);

return(0);
}
baltushka вне форума Ответить с цитированием
Старый 08.06.2009, 11:11   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

Я пять лет СИ изучал в СГУ, всякое доводилось видеть, но такого еще не видел!!! похоже на рассчёты какой-то кривой с параметрами. Не дай бог трёхмерная кривулька...
На Дельфи перевёл бы. если б хоть какую-то чать понял. Это тебе препод дал? Он тогда просто маньяк!!!! Надо ж так студентов пугать...

P.S. По-моему от тебя на факультете хотят избавиться...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 08.06.2009, 11:31   #3
baltushka
 
Регистрация: 08.06.2009
Сообщений: 6
По умолчанию

да, это препод(( по этой проге надо писать курсовую по измерению ее производительности, понять бы еще что там..
baltushka вне форума Ответить с цитированием
Старый 08.06.2009, 12:28   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Эээ... А библиотечки графические(которые вверху подключаются) он вам дал, чтоб вы могли хоть эту прогу скомпилировать?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 08.06.2009, 12:34   #5
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Изучай OpenGl!
Levsha100 вне форума Ответить с цитированием
Старый 08.06.2009, 12:36   #6
baltushka
 
Регистрация: 08.06.2009
Сообщений: 6
По умолчанию

При запуске появляется ошибка
1>LINK : error LNK2001: неразрешенный внешний символ "_mainCRTStartup"
fatal error LNK1120: 1 неразрешенных внешних элементов

Что с этим делать?? Помогите!!!!
baltushka вне форума Ответить с цитированием
Старый 08.06.2009, 12:39   #7
baltushka
 
Регистрация: 08.06.2009
Сообщений: 6
По умолчанию

библиотек не дал, я их скачала, но запустить пока не удается.

OpenGl учу, но прога на С и непонятна
baltushka вне форума Ответить с цитированием
Старый 05.10.2011, 17:10   #8
Григоренко Степан
Пользователь
 
Регистрация: 05.05.2011
Сообщений: 35
По умолчанию

эта прога совершенно точно строит NURBS. вот полезная сцылка:
http://www.open-gl.com/index.php?opt...=40&Itemid=398
Григоренко Степан вне форума Ответить с цитированием
Старый 05.10.2011, 17:14   #9
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

baltushka, советую не парится и скачать набор компонент для работы с OpenGL.
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 05.10.2011, 17:19   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ага. Парился baltushka 2 года, но вот наконец решение найдено и он таки сдаст свою курсовую )
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интерфейс для программы написанной в MS-DOS Скарам Общие вопросы C/C++ 6 15.05.2009 20:37
Создание инсталлятора для программы, написанной на Delphi7 Anna_4493155 Общие вопросы Delphi 2 18.09.2008 09:12
нужна помощь - 2 программы в С++ Nemisoi Фриланс 1 22.04.2008 23:10
Откат написанной программы фЁдОр Свободное общение 13 20.12.2007 11:35
ДД. Нужен человек для поддержки программы, написанной в Microsoft Office Access 2003 gsvgsv Фриланс 1 06.09.2007 11:52