Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [Все]   Вниз
  Печать  
Автор Тема: Вывод на экран геометрических фигур  (Прочитано 67036 раз)
0 Пользователей и 1 Гость смотрят эту тему.
KrL
Участник

ru
Offline Offline

« : 20-02-2009 20:31 » 

Задание:
разработать программу, обеспечивающую изображение на экране дисплея определенного набора плоских и пространственнных геометрических фигур.
Предусмотреть в программе возможности масштабирования фигур или их изображения по задаваемым размерам и построения 3-х проекций для определенной фигуры.
Все предоставляемые услуги оформить в сервисное меню с библиотекой геометрических фигур.

Не знаю даже, с какой стороны подойти.
Можно писать в борланд С++ (т.е. консоль), в билдере и визуале. Что лучше выбрать?
Какие библиотеки лучше и проще использовать?
Какие книги по теме посоветуете почитать?
Язык Си изучаю только 2 семестр, т.е. знания еще не очень глубокие. Можно использовать С++, но будут лишние вопросы при сдаче.
« Последнее редактирование: 05-04-2009 15:57 от Ghost » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 20-02-2009 20:47 » 

Ну консоль сама собой исключается. Тебе все таки придется рисовать, а в тексте много не нарисуеш. Теперь вопрос по платформе MS-DOS или Windows?
От этого будет зависеть выбор среды программирования и сами графические библиотеки. А насчет языка программирования. Можно использовать хоть что угодно, если нет специальных ограничений от препопадавателя. Если он сказал, что нельзя использовать ООП, то в принципе С++ исключается.
« Последнее редактирование: 20-02-2009 20:49 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
KrL
Участник

ru
Offline Offline

« Ответ #2 : 17-03-2009 13:00 » 

Решил рисовать через opengl.. подкиньте плз почитать) есть у кого исходники которые ресуют там треугольнички, пирамидки?
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #3 : 17-03-2009 13:43 » 

Сдается мне, что суть курсовика в "ручной" работе с графикой, а не по использованию библиотек. Научиться самому масштабировать, проецировать... вообще с графическими данными работать. Обычно курсовая работа дается, как закрепление и проверка знаний по изученному за эти два семестра курсу лекций. имхо. Вот вам лекции по каким-нибудь библиотекам читали? По какому курсу лекций-то курсач?
« Последнее редактирование: 17-03-2009 13:45 от PooH » Записан

Удачного всем кодинга! -=x[PooH]x=-
KrL
Участник

ru
Offline Offline

« Ответ #4 : 02-04-2009 18:09 » 

Ну есть задание, а как ты его выполнишь без разницы) старшекурник делал это задание через опенгл, но так и не доделал( По курсовой вобще ничего не объяснялось, Прото дали задание. Проходили циклы, указатели, рекурсии - все в этом роде)
Препод даже не сказал че почитать можно.
Лекции были ток по стандартным библиотекам, тип stdio.h conio.h итд
Курс Си)
« Последнее редактирование: 02-04-2009 18:13 от KrL » Записан
KrL
Участник

ru
Offline Offline

« Ответ #5 : 26-04-2009 14:09 » 

возникло 2 вопроса) как сделать менюшку в в вин32 приложении(в дос окне т.е.)? из нее будет выбираться фигурка.
Дальше такая мысль. Сделать для каждой фигурки свой отдельный файл. конус.с пирамида.с итд. Из менюшки выбираешь фигуру и запускается файл как это реализовать?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 26-04-2009 16:49 » 

как сделать менюшку в в вин32 приложении(в дос окне т.е.)?

наверное, имеешь в виду не дос-окно, а консоль (иначе фраза без смысла)

а сделать можно так - как обычно создаёшь объект меню CreatePopupMenu , наполняешь, вываливаешь через TrackPopupMenu (указав флажок TPM_RETURNCMD ) и то, что вернётся из функции TrackPopupMenu - будет ID выбранного пункта
Записан

KrL
Участник

ru
Offline Offline

« Ответ #7 : 01-05-2009 10:25 » 

А можно по-подробнее?)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 02-05-2009 05:16 » 

KrL, а где именно споткнулся ?
Записан

Astr
Гость
« Ответ #9 : 04-05-2009 09:43 » 

конус.с пирамида.с итд. Из менюшки выбираешь фигуру и запускается файл как это реализовать?

1.выбор верно,отдельным модулем/файлом.создание кнопок/пунктов меню проходили? вот и выбор.
2. по учебнику геометрии берешь нужную мат.функцию, от кликнутых координат в цикле находишь и тут же рисуешь каждую точку фигуры.
3. по клику мышки определи 2 (при n-мерной сколько необходимо) точки: углы -угольника,центр и точку  окружности/овала.
Или стартуй от первой выбранной, типа начальные значения окружности координаты центра 1й клик, радиус =1. При передвижении мыша радиус увеличивается. Прорисовку предыдущего контура стираешь цветом фона при предшествующих параметрах. Второй клик - выход из процедурки.

Когда-то баловалась в DOSе на бесике, там вместо кликов все в клавишах с подсчетом передвижения курсора.
Записан
KrL
Участник

ru
Offline Offline

« Ответ #10 : 06-05-2009 17:46 » 

Алексей1153++, споткнулся на


 создаёшь объект меню CreatePopupMenu
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #11 : 07-05-2009 05:16 » 

Код:
enum
{
e_Element1,
e_Element2,
e_Element3,
e_Element4,
};

HMENU hm=::CreatePopupMenu();

::AppendMenu(hm,MF_STRING,e_Element1,"текст №1");
::AppendMenu(hm,MF_STRING,e_Element2,"текст №2");
::AppendMenu(hm,MF_STRING,e_Element3,"текст №3");
::AppendMenu(hm,MF_STRING,e_Element4,"текст №4");


int x=100;
int y=100;

HWND win= ... ;//любое окно твоего приложения

switch(::TrackPopupMenu(hm,TPM_RETURNCMD|TPM_NONOTIFY|TPM_LEFTALIGN,x,y,0,win,0))
{
case e_Element1:
{
::MessageBox(0,"1",0,MB_SYSTEMMODAL);
}
break;

case e_Element2:
{
::MessageBox(0,"2",0,MB_SYSTEMMODAL);
}
break;

case e_Element3:
{
::MessageBox(0,"3",0,MB_SYSTEMMODAL);
}
break;

case e_Element4:
{
::MessageBox(0,"4",0,MB_SYSTEMMODAL);
}
break;
}

поскольку указаны флаги TPM_RETURNCMD|TPM_NONOTIFY, то win можно (и нужно, иначе меню не покажется) присвоить хендл любого окна твоего приложения
Записан

Astr
Гость
« Ответ #12 : 07-05-2009 07:32 » 

"Ребята, давайте жить дружно"

Это ты кого мышами обозвал? Улыбаюсь

Цитата
Astr, я с Лёшей согласен в том, что твой первый пост оставляет некоторое недоумение...

Попробовала дать отправную точку, вариант с чего начать, как можно делать подобное без использования библиотек. Похоже задание состоит в этом. А еще можно подойти к преподу и спросить чтоб тот конкретизировал что хочет. Может все что надо - как раз использовать "то, что давно придумали немцы".
Записан
KrL
Участник

ru
Offline Offline

« Ответ #13 : 09-05-2009 13:21 » 

Алексей1153++,
А зачем двоеточия?
Навыдавала кучу ошибок((
 
Код:
error C2061: syntax error : identifier 'hm'
 error C2059: syntax error : ';'
 error C2513: '/*global*/ ' : no variable declared before '='
 error C2059: syntax error : ':'
error C2059: syntax error : ':'
 error C2059: syntax error : ':'
 error C2059: syntax error : ':'
error C2059: syntax error : ':'
 error C2061: syntax error : identifier 'win'
 error C2059: syntax error : ';'
 error C2513: '/*global*/ ' : no variable declared before '='
 error C2065: 'hMenu' : undeclared identifier
error C2059: syntax error : 'switch'
Как определить хендл окна?)

Astr, зачем все рисовать по точкам, когда есть уже готовые приметивы в OpenGL?

Написал код для вывода 2-х фигур. Конус:
Код:
#include <windows.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include "stdlib.h"
double R = 1, H = 2;

void CALLBACK Key_UP(void)
{
R = R + 0.2;
H = H + 0.4;
}
void CALLBACK Key_DOWN(void)
{
R = R - 0.2;
H = H - 0.4;
}
void DrawCone()
{
glPushMatrix();     // сохраняем текущие координаты
glTranslated(0.1,0,0);  // сдвигаемся в точку (2,0,0)
glRotated(-75, 0.1,0,0); // поворачиваем систему координат
glColor3d(0,1,0);
auxWireCone(R, H);   // рисуем конус
glPopMatrix();     // возвращаемся к старым координатам
}



void CALLBACK resize(int width,int height)
{
   glViewport(0,0,width,height);
   glMatrixMode( GL_PROJECTION );
   glLoadIdentity();
   glOrtho(-5,5, -5,5, 2,12);   
   gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
   glMatrixMode( GL_MODELVIEW );
}   



void CALLBACK display(void)
{
 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
 DrawCone();
 auxSwapBuffers();
}


void main()
{
float pos[4] = {3,3,3,1};
float dir[3] = {-1,-1,-1};

    GLfloat mat_specular[] = {1,1,1,1};

    auxInitPosition( 50, 10, 400, 400);
    auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
    auxInitWindow( "Glaux Template" );
    auxIdleFunc(display);
    auxReshapeFunc(resize);

auxKeyFunc(AUX_UP, Key_UP);
auxKeyFunc(AUX_DOWN, Key_DOWN);


 
    glEnable(GL_DEPTH_TEST);

    glEnable(GL_COLOR_MATERIAL);

    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glLightfv(GL_LIGHT0, GL_POSITION, pos);
    glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialf(GL_FRONT, GL_SHININESS, 128.0);


    /*
    * Enter your cod here
    */
    auxMainLoop(display);
}
Куб:
Код:
#include <windows.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include "stdlib.h"
double  h = 2;

void CALLBACK Key_UP(void)
{

h = h + 0.4;
}
void CALLBACK Key_DOWN(void)
{

h = h - 0.4;
}
void DrawCube()
{
glPushMatrix();     // сохраняем текущие координаты
glTranslated(0.1,0,0);  // сдвигаемся в точку (2,0,0)
glRotated(-75, 0.1,0,0); // поворачиваем систему координат
glColor3d(0,1,0);
auxWireCube(h);  // рисуем
glPopMatrix();     // возвращаемся к старым координатам
}



void CALLBACK resize(int width,int height)
{
   glViewport(0,0,width,height);
   glMatrixMode( GL_PROJECTION );
   glLoadIdentity();
   glOrtho(-5,5, -5,5, 2,12);   
   gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
   glMatrixMode( GL_MODELVIEW );
}   



void CALLBACK display(void)
{
 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
 DrawCube();
 auxSwapBuffers();
}


void main()
{
float pos[4] = {3,3,3,1};
float dir[3] = {-1,-1,-1};

    GLfloat mat_specular[] = {1,1,1,1};

    auxInitPosition( 50, 10, 400, 400);
    auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
    auxInitWindow( "Glaux Template" );
    auxIdleFunc(display);
    auxReshapeFunc(resize);

auxKeyFunc(AUX_UP, Key_UP);
auxKeyFunc(AUX_DOWN, Key_DOWN);


 
    glEnable(GL_DEPTH_TEST);

    glEnable(GL_COLOR_MATERIAL);

    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glLightfv(GL_LIGHT0, GL_POSITION, pos);
    glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialf(GL_FRONT, GL_SHININESS, 128.0);


    /*
    * Enter your cod here
    */
    auxMainLoop(display);
}

Названия файлов cone.c u cube.c
Можете объяснить на примере как сделать выбор между ними?)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #14 : 09-05-2009 13:27 » 

KrL,  насчёт ошибок - не знаю, почему, я проверял код.

двойное двоеточие - это обращение к глобальному варианту функции (можешь и убрать)
Записан

KrL
Участник

ru
Offline Offline

« Ответ #15 : 09-05-2009 15:00 » 

Ошибки могут быть из-за среды написания(визуал студио 2005)? надо определять тип hm? Надо какие-то хидеры\либы  подключать? функция main() нужна? Какую функцию из нее вызывать?
и где можно почитать про это все)) Есть 2 книжки для начинающих в них не слова(
Записан
KrL
Участник

ru
Offline Offline

« Ответ #16 : 11-05-2009 11:41 » 

Народ помогите) в субботу уже сдавать, мне только с меню осталось разобраться..
Я плохо понимаю что для чего и как должно быть.. Объясните плз на примере
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 11-05-2009 12:20 » 

KrL, давай разберёмся.
1. По заданию, использовать OpenGL - допустимо?
Если да, то:
2. Как так получается, что OpenGL используешь, а на уровне проекта с исходниками не выходит работать? Лично у меня уже вопрос
Цитата
функция main() нужна?
рождает много встречных вопросов, связанных с глубиной твоего владения C++.

Просто одно дело, если это лабораторная работа на 1м курсе, несколько иное - курсовик курсе на 2м, ну и так далее. Уровень твоих знаний предполагается разный, отсюда и решения могут быть различные.
Записан
KrL
Участник

ru
Offline Offline

« Ответ #18 : 11-05-2009 13:01 » 

OpenGL используется на уровне копи-паст) Прочитал учебник, нашел что для чего, немного подправил исходники под мою задачу
знаю только основы Си(массивы,циклы, итерации, указатели итд). С main лоханулся) С++ вобще не знаю. Но использовать можно если сможешь объяснить
Я на 1-м курсе. По курсовику ниче не объясняют или в 2-х словах.
З.Ы. Как определить хендл окна моего приложения?
Записан
KrL
Участник

ru
Offline Offline

« Ответ #19 : 12-05-2009 17:32 » 

Плз объясните подробно или киньте линк где прочитать можно.. я весь гугл уже облазил((
ссыль на проект(VS2005)
http://letitbit.net/download/970ebcc259/kursach.rar.html
Записан
KrL
Участник

ru
Offline Offline

« Ответ #20 : 15-05-2009 15:47 » 

\menu.cpp(18) : error C2664: 'AppendMenuW' : cannot convert parameter 4 from 'const char [9]' to 'LPCWSTR'
 error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [2]' to 'LPCWSTR'
1>        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Таких ошибок по 4 штуки выводит, как исправить?
Могли бы и сказать что windows.h надо подключать....
Как хидер окна определять? я такие вещи никогда не делал((
Объясните плз, завтра уже надо сдавать

З.Ы. С ошибками разобрался, там в юникоде дело было.. вопрос с хидером остался
« Последнее редактирование: 15-05-2009 17:01 от KrL » Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #21 : 15-05-2009 19:34 » 

Хидер? Может, handle (дескриптор)? Что ты конкретно хочешь сделать (что собираешься делать с хендлом) и в какой ситуации?
Создаётся ощущение, что задача, возможно, была сначала несколько проще.
Записан
KrL
Участник

ru
Offline Offline

« Ответ #22 : 15-05-2009 19:53 » 

Да хендл)
Для меню надо
Код:
enum
{
e_Element1,
e_Element2,
e_Element3,
e_Element4,
};

HMENU hm=::CreatePopupMenu();

::AppendMenu(hm,MF_STRING,e_Element1,"текст №1");
::AppendMenu(hm,MF_STRING,e_Element2,"текст №2");
::AppendMenu(hm,MF_STRING,e_Element3,"текст №3");
::AppendMenu(hm,MF_STRING,e_Element4,"текст №4");


int x=100;
int y=100;

HWND win= ... ;//любое окно твоего приложения

switch(::TrackPopupMenu(hm,TPM_RETURNCMD|TPM_NONOTIFY|TPM_LEFTALIGN,x,y,0,win,0))
{
case e_Element1:
{
::MessageBox(0,"1",0,MB_SYSTEMMODAL);
}
break;

case e_Element2:
{
::MessageBox(0,"2",0,MB_SYSTEMMODAL);
}
break;

case e_Element3:
{
::MessageBox(0,"3",0,MB_SYSTEMMODAL);
}
break;

case e_Element4:
{
::MessageBox(0,"4",0,MB_SYSTEMMODAL);
}
break;
}

Или напиши как по-другому можно)
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #23 : 15-05-2009 20:18 » 

Ну, телепаты перманентно в отпуске. Если у тебя приложение оконное - то надо думать, ты должен это меню не просто так из воздуха создавать, а по какому-то действию (правому клику, что ли, раз оно у тебя Popup). Соответственно, действие это совершается над окном, и там уже хэндл этого окна должен быть где-то рядом (либо в качестве параметра передаётся в обработчик события, либо ещё как - тут уж у меня ясновидения не хватает).
Записан
KrL
Участник

ru
Offline Offline

« Ответ #24 : 15-05-2009 20:28 » 

Блин.. Ссыль на проект давал выше, эту менюшку написал мне алексей, какое приложение тоже писал...
В общем еще раз)
Есть несколько cpp файлов. Каждый используется для вывода своей геометрической фигуры. Нужно организовать любую менюшку чтобы запускался необходимый cpp. Приложение win 32 console application пишу в визуал студио 2005. Фигуры выводятся с помощью OpenGL. Т.е создается новое окно, в нем фигурка. Фигурки клепал по учебнику тарасова http://www.opengl.org.ru/books/open_gl/
« Последнее редактирование: 15-05-2009 20:31 от KrL » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #25 : 15-05-2009 20:32 » 

win 32 console application и графика - такое возможно?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
KrL
Участник

ru
Offline Offline

« Ответ #26 : 15-05-2009 20:36 » 

Блин да елки палки) вот кусок курсовой откомпилированный, мне над сделать выбор между такими

* Курсовая v1.exe (80 Кб - загружено 1132 раз.)
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #27 : 15-05-2009 20:39 » 

Цитата: Sla
win 32 console application и графика - такое возможно?
Сам не пробовал, но говорили, что можно достать handle окна CMD и, соответственно, рисовать в нём.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #28 : 15-05-2009 20:44 » 

Вот и у меня крайнее недоумение оставляет сочетание графики и меню, с одной стороны, и консольного приложения, с другой. Не поленился, сходил, посмотрел. auxInitWindow - вот это что? Всё, что дальше, надо полагать, не консольное. То есть, консольным приложение можно считать очень условно.
На самом деле, откомпилированный кусок курсовой  и проект в целом мне почти ничего не даёт, поскольку я сижу под линуксом, и визуалки тут нэма.
Записан
KrL
Участник

ru
Offline Offline

« Ответ #29 : 15-05-2009 20:53 » 

Так... создаем срр файл menu.cpp. Он консольный. Там пофиг какую менюшку.. Там будут строчки конус, сфера и так далее. Клавишами или мышкой выбирать мне без разницы. Дальше запускается файл sphere.cpp или cone.cpp в зависимости от выбора. Так можно сделать? как?

З.Ы. я писал выше код фигур, OpenGL же кроссплатформенный))
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #30 : 15-05-2009 21:02 » 

Ёёёёё
так это ж другой вопрос


не знаю как там в сях ,будет какая-то смесь

writeln ("конус --> 1");
writeln ("цилиндр --> 2");
key = getchar
Саse char
  1: exec konys
  2: exec cilindr


долше можно издеваться над keypressed и прочими штуками, типа gotocursor

Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
KrL
Участник

ru
Offline Offline

« Ответ #31 : 15-05-2009 21:06 » 

Ну какую-нибудь боле-мене симпотную охота, такую бы я и сам написал) Т.е. или в окне консоли кнопочки(там вроде псевдо они), или вверху окна. Ну где обычно файл, справка итд
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #32 : 15-05-2009 21:12 » 

Охота кнопочки и менюшки - так не делай консольное приложение. Тем более, что консольным оно будет чисто формально - отрисовка-то всё равно оконная, выходит. ИМХО, с кнопочками в консоли побольше мороки будет.
Впрочем, повторюсь, мне уже не первый раз кажется, что ты как-то превратно понимаешь задание. Если смысл задания был в том, чтобы научиться рисовать графические примитивы, то OpenGL идёт лесом, а консоль превращается в DOS-приложение на каком-нибудь Turbo C++. Ну или ручками порисовать в виндовом окне, но это чистый WinAPI, и OpenGL опять отправляется в сад.
Записан
KrL
Участник

ru
Offline Offline

« Ответ #33 : 16-05-2009 14:56 » 

Вад
Все равно не может найти((

менюшка:
Код:
#include "stdio.h"
#include "conio.h"
#include "objects.h"

void cone();
void sphere();

int _tmain()
{
int funk, test=1;
while(test)
{
test=0;
scanf_s("%d",&funk);
switch(funk)
{
case 1: cone();
case 2: sphere();
default:
{
test = 1;
printf("error");
}
}
}
return 0;
}
objects.h
Код:
#if !defined OBLECTS_H
#define OBJECTS_H
void cone();
void sphere();
#endif

Выдает
>menu2.obj : error LNK2019: unresolved external symbol "void __cdecl cone(void)" (?cone@@YAXXZ) referenced in function "int __cdecl _tmain(void)" (?_tmain@@YAHXZ)
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1> fatal error LNK1120: 2 unresolved externals
еще вопрос, прототипы функций надо еще где-то кроме хидера писать?) пробовал подключать срр, не находит. я так понимаю нужно где-то путь прописывать?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #34 : 16-05-2009 15:05 » 

KrL, а тело функции cone то где ?
Записан

KrL
Участник

ru
Offline Offline

« Ответ #35 : 16-05-2009 16:03 » 

Ребят ну выше же все писал... только всесто main() cone(). Находится в файле cone.cpp
Код:
#include <windows.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include "stdlib.h"

void cone();

double R = 1, H = 2;

void CALLBACK Key_UP(void)
{
R = R + 0.2;
H = H + 0.4;
}
void CALLBACK Key_DOWN(void)
{
R = R - 0.2;
H = H - 0.4;
}
void DrawCone()
{
glPushMatrix();     // сохраняем текущие координаты
glTranslated(0.1,0,0);  // сдвигаемся в точку (2,0,0)
//glRotated(-75, 0.1,0,0); // поворачиваем систему координат
glRotated(-75, 0,1,0); // поворачиваем систему координат
glRotated(65, -1,0,0);
glColor3d(0,1,0);
auxWireCone(R, H);   // рисуем конус
glPopMatrix();     // возвращаемся к старым координатам
}



void CALLBACK resize(int width,int height)
{
   glViewport(0,0,width,height);
   glMatrixMode( GL_PROJECTION );
   glLoadIdentity();
   glOrtho(-5,5, -5,5, 2,12);   
   gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
   glMatrixMode( GL_MODELVIEW );
}   



void CALLBACK display(void)
{
 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
 DrawCone();
 auxSwapBuffers();
}


void cone()
{
float pos[4] = {3,3,3,1};
float dir[3] = {-1,-1,-1};

    GLfloat mat_specular[] = {1,1,1,1};

    auxInitPosition( 50, 10, 400, 400);
    auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
    auxInitWindow( "Glaux Template" );
    auxIdleFunc(display);
    auxReshapeFunc(resize);

auxKeyFunc(AUX_UP, Key_UP);
auxKeyFunc(AUX_DOWN, Key_DOWN);


 
    glEnable(GL_DEPTH_TEST);

    glEnable(GL_COLOR_MATERIAL);

    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glLightfv(GL_LIGHT0, GL_POSITION, pos);
    glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialf(GL_FRONT, GL_SHININESS, 128.0);

   
    /*
    * Enter your cod here
    */
    auxMainLoop(display);
}
Она точно рабочая)
Записан
KrL
Участник

ru
Offline Offline

« Ответ #36 : 19-05-2009 19:52 » 

Код:
int main()
{
int a;
int funk, test=1;
do
{
printf("Введите циферку))");
test=1;
while(test)
{
test=0;
scanf_s("%d",&funk);
switch(funk)
{
case 1: a=1;
break;
case 2: a=2;
break;
default:
{
test = 1;
printf("error");
break;
}
}
}
}
Open (funk);
return 0;
}

error C2061: syntax error : identifier 'Open'
Функция определена.. Почему то если закоментить весь цикл то ошибку не выдает.. Как исправить?
« Последнее редактирование: 19-05-2009 21:44 от KrL » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #37 : 19-05-2009 20:04 » 

по моему, тут лишнее " : ) )" в строчке
Код:
break; :))
Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #38 : 19-05-2009 20:13 » 

полностью согласен с Лёшкой
Код:
:)
эта конструкция что-то с чем-то!!!
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #39 : 19-05-2009 20:45 » 

KrL, при любо копи-пасте будь внимательным.


зы. Мне тут пришлось чей-то код целых два дня править, вернее форматировать, чтоб понять, что делают., в конце первого дня понял что самостоятельно написал бы быстрее.

ззы зы привел к примеру - делай самостоятельно
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
KrL
Участник

ru
Offline Offline

« Ответ #40 : 19-05-2009 21:42 » 

Блин у меня в коде нет смайла xDD я не знаю откуда он взялся) компилятор бы сразу заругался же
Еслиб все было так просто не парился бы второй день) Это пример нашего препода... У него код вечно не работает и не понятно почему xD
« Последнее редактирование: 19-05-2009 21:45 от KrL » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #41 : 19-05-2009 21:46 » 

Ты уверен, что
Код:
Open (funk);
что функция Open именно так у тебя определена?. В коде у тебя не видно, где вообше она у тебя определена.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
KrL
Участник

ru
Offline Offline

« Ответ #42 : 19-05-2009 22:46 » 

Код:
#include <windows.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include "stdlib.h"
#include "stdio.h"
#include "conio.h"

double R = 1, H = 2;

void DrawCylinder();
void DrawCone();


void Open (int a);

int main()
{
int a=0;
int funk=0, test=1;
do
{
printf("Введите циферку))");
test=1;
while(test)
{
test=0;
scanf_s("%d",&funk);
switch(funk)
{
case 1: a=1;
break;
case 2: a=2;
break;
default:
{
test = 1;
printf("error");
break;
}
}
}
}
Open (funk);
return 0;
}
//много букаф

void Open (int a)
{
float pos[4] = {3,3,3,1};
float dir[3] = {-1,-1,-1};

    GLfloat mat_specular[] = {1,1,1,1};

    auxInitPosition( 50, 10, 400, 400);
    auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
    auxInitWindow( "Glaux Template" );
printf("%d",a);
switch (a)
{
case 1: auxIdleFunc(display1);
break;
case 2: auxIdleFunc(display2);
break;


}
   
    auxReshapeFunc(resize);

auxKeyFunc(AUX_UP, Key_UP);
auxKeyFunc(AUX_DOWN, Key_DOWN);


 
    glEnable(GL_DEPTH_TEST);

    glEnable(GL_COLOR_MATERIAL);

    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glLightfv(GL_LIGHT0, GL_POSITION, pos);
    glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);

    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialf(GL_FRONT, GL_SHININESS, 128.0);

    auxMainLoop(display);
}
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #43 : 20-05-2009 03:00 » 

KrL, а препод у тебя шутник, просто Улыбаюсь
Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #44 : 20-05-2009 06:20 » 

KrL, у тебя цикл начинается: do { ... - а while где? Вот компилятор и удивляется, почему там, где должен быть while, стоит Open какое-то
Записан
KrL
Участник

ru
Offline Offline

« Ответ #45 : 20-05-2009 10:51 » 

спс))
Шутник еще какой.. сказал курсовые сдавать на их компах, на ноуте нельзя.. Там компы древние, винды засранные ужасно и самое прикольное визуал студио шестые...
Записан
KrL
Участник

ru
Offline Offline

« Ответ #46 : 20-05-2009 12:58 » 

Еще вопрос) Сложно сделать чтоб нормально русский отоброжался? ато крякозябры какие-то.. мне надо то 3 строчки написать..
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #47 : 20-05-2009 13:09 » 

какая у тебя кодировка в консоли? а какую выводишь?


Поиск наше ФСЁ. Лень - твое ФСЁ
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
KrL
Участник

ru
Offline Offline

« Ответ #48 : 20-05-2009 13:47 » 

Sla, ееее)) В консоли дос.. вывожу вроде юникод а там фиг его знает)
оффтоп как лень убить в себе? xD
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #49 : 20-05-2009 14:07 » 

Цитата: KrL
как лень убить в себе?
Работой. Развей в себе условный рефлекс: как только чувствуется лень - тут же хочется поработать Отлично
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
KrL
Участник

ru
Offline Offline

« Ответ #50 : 20-05-2009 20:14 » 

Гы.. он есть ток в обратную сторону...
Записан
KrL
Участник

ru
Offline Offline

« Ответ #51 : 25-05-2009 10:44 » 

Вроде закончил. Потестируйте плз)
В приложениях экзешник курсача и библиотека для него. Ее в папку систем 32.

З.Ы. Скинул 2-м знакомым у них не запускается. Пишет "Приложение не было запущено,поскольку оно не корректно настроено!Повторная установка приложения может решить данную проблему"
У меня все работает...

Как избавиться от этого?

* Kypca4 v2.exe (84 Кб - загружено 845 раз.)
* GLUT32.DLL (151 Кб - загружено 871 раз.)
« Последнее редактирование: 25-05-2009 10:56 от KrL » Записан
Anchorite
Гость
« Ответ #52 : 25-05-2009 19:57 » 

Твой "Kypca4 v2.exe" использует отладочные версии DLL из Visual Studio.
Не у всех эти DLL есть на машине.
Собери Release версию.
Записан
KrL
Участник

ru
Offline Offline

« Ответ #53 : 25-05-2009 20:50 » 

спс)
Я добавил длл к экзешнику, заработал, только теперь вместо 80 500кб весит(

З.Ы. По ходу ни у кого их нет((
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #54 : 26-05-2009 01:38 » 

KrL, тебе же сказали - нужно  Release версию сделать )
Записан

KrL
Участник

ru
Offline Offline

« Ответ #55 : 04-06-2009 01:47 » 

Я и сделал)
Записан
Страниц: 1 2 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines