Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> преобразование фигур 
:(
    Опции темы
Reptor
Дата 13.11.2007, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Вопрос состоит в том что есть например набор точек и они соеденены прямыми (пусть это будет 4 точки ну соответственно фигура будет пусть прямоугольник). Эти точки задаються 2 координатами. С помощью каких инструментов можно преобразовать эти точки в 3 мерное представление или что б фигура которая получица была 3-ех мерная (или даже не 3 мерная а как будто лежала на плоскости ну если например смотреть на стол то его столешница как бы так лежит тоесть она не плоская как если на бумажке соденить 4 точки ) ну вот что то такого плана??
PM MAIL ICQ   Вверх
Reptor
Дата 14.11.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Модераторы можно вас попросить что б вы переместили эту тему в раздел Программирование игр, графики и искусственного интеллекта. Мне кажеться этот вопрос туда больше подойдёт. Извеняюсь что сразу как то не сориентировался. 
PM MAIL ICQ   Вверх
Solomon
Дата 14.11.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

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



Ну с прямоугольником можно что то еще предумать, но вот с фигурой хоть немного посложное врятли что то выйдет... Т.е. я думаю можно какойто свой алгоритм сделать, но он будет работать только для конкретного случая, если я ошибась то пускай меня кто нибуть поправит. 

Reptor,  А можеш в общих чертах расказать для чего это требуется? 


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Reptor
Дата 14.11.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Solomon, ну надо сделать прожку в которой задаются точки (2 координаты) потом они соидиняются (ну просто линиями)  и получается обычный наобор точек который соединён линиями на плоскости. Вот а теперь зная точки просто надо что б то что получилось выглядело как 3Д. Вот такая задача
PM MAIL ICQ   Вверх
Solomon
Дата 15.11.2007, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

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



Понял что ничего не понял ))

Цитата(Reptor @  14.11.2007,  16:39 Найти цитируемый пост)
потом они соидиняются (ну просто линиями) 
 т.е. линиями соединяются в той последовательности в который мы их и ввели?
Сомневаюсь что при каких либо расскладах все эт будет выглядеть как 3Д. Я, если чесно, немогу себе это представить.



--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Reptor
Дата 15.11.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Solomon, можно сказать что задача стоит таким образом что просто надо сделать 3 мерную фигуру зная  2-ух мерные координаты точек. например как в 3Д studio Max есть вид  с боку и есть 3Д. Ну вот пример в прикрепленом файле. Мне надо получить то что в окне Prespective

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  primer.rar 12,26 Kb
PM MAIL ICQ   Вверх
Solomon
  Дата 16.11.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

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



Reptor, Это все хорошо конечно... smile
Там нет ничего подобного c тем что пытаешся сделать ты... 
Если делать перевод 3D-2D это просто, а вот наоборот практически не осуществимо, если конечно это не 100% что будет простой прямоугольник.


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Reptor
Дата 16.11.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Solomon, хорошо а как просто нарисовать такую картинку как та что в окне Prespective ?? без преобразования уже 2Д->3Д.

Добавлено через 1 минуту и 28 секунд
Ребята може ещё кто то присоеденится к беседе? может у кого есть какие идеи?
PM MAIL ICQ   Вверх
Solomon
  Дата 17.11.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

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



Reptor, Ну можно как это делается в 3Д Максе задаеш последовательно точки, которые имеют 3 координаты и соответственно последовательно соединяеш линиями... 

Хотя стой... что то придумать я думаю можно будет, хотя опять же только для плоских фигур, их можно будет покрутить в 3д простванстве, но это только с плоскими выдет.. тип прямоугольника или ромба, и при этом ему желательно сделать заливку и  если есть возможность то тень... тогда я думаю что то может выйти более мение нормальное.. smile




--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Reptor
Дата 17.11.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

Хотя стой... что то придумать я думаю можно будет, хотя опять же только для плоских фигур, их можно будет покрутить в 3д простванстве, но это только с плоскими выдет.. тип прямоугольника или ромба, и при этом ему желательно сделать заливку и  если есть возможность то тень... 



Solomon, да как раз это и надо что б фигура была плоская и 3Д. Только желательно что б это был многогранник а не только прямоугольник. Вот а всё остальное:
Цитата

 опять же только для плоских фигур, их можно будет покрутить в 3д простванстве

Цитата

 сделать заливку и  если есть возможность то тень... 


это то что надо  smile 

Только вот это хорошо что теоретически это возможно  но я понятия не имею как это реализовать? с помощью каких инструментов??

Добавлено через 1 минуту и 37 секунд
да может есть что почитать на эту тему? и примеры ?
PM MAIL ICQ   Вверх
Solomon
Дата 19.11.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

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



ты это с помощу чего хочеш реализовать? Open, Директ,...?


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Reptor
Дата 19.11.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Solomon, Да вот я даже не знаю а что луче? Ну скорее всего это будет openGL так как я на Java пишу. Да OpenGL.
PM MAIL ICQ   Вверх
DragonFire
Дата 20.11.2007, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



Берешь OpenGL иницитализируешь (примеров куча), задаешь режим воспроизведения - перспективный, рисуешь фигуру в трехмерном пространстве но чтобы все координаты z были равны 0. ПОворачиваешь фигуру по всем осям на 45 градусов и получаешь то что тебе нужно... Для наглядности можно будет прикрутить скажем плоскость xy (z=0) и тогда получится как будто твоя линия лежит на поверхности того же стола как ты и хотел. 
Доступно?) Сорь раньше не заглянул в тему...

Добавлено через 4 минуты и 46 секунд
Если надобно могу выделить 15 минут и написать исходники, но учти что я пишу на дельфях... 
Если интересно сразу скажи предпочитаешь ли ты разбираться в коде VCL или чистом API.. Если вообще не изучал OpenGL то сразу во все въехать будет проблематично) 


--------------------
PM MAIL ICQ   Вверх
Reptor
Дата 20.11.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



DragonFire, да огромное спасибо. Выдели плиз 15 мин. Я думаю мне тут всёровно или это VCL или API меня больше Open интересует.  На чём тебе больше нравится давай VCL. Можеш ещё посоветовать литературку и примеры так как я опен совсем не знаю. Вот надо начинать и сразу с такой задачи.

Добавлено через 1 минуту и 21 секунду
DragonFire, оттолкнусь от твоего примера. Разберу что и как буду очень благодарен за помощь. 
PM MAIL ICQ   Вверх
DragonFire
Дата 20.11.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



Создай чистый проект переименуй форму в frmGL присвой ей обработчики событий Create, Destroy, Resize, Paint и запускай))) 
Надеюсь это то что тебе нужно... КОмменты почти к каждой строке расставил разберешься... 

Код

unit ULook;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  OpenGL;

type
  TfrmGL = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormResize(Sender: TObject);

  private
    DC : HDC;
    hrc: HGLRC;
  end;

var
  frmGL: TfrmGL;

implementation

{$R *.DFM}

{=======================================================================
Перерисовка окна}
procedure TfrmGL.FormPaint(Sender: TObject);
begin
 glClear (GL_COLOR_BUFFER_BIT);      //Очистка буфера цвета
 glPushMatrix;                       //Запоминаем матрице
  //Двигаем матрицу
 glTranslatef(0,0,-5);               //Отодвигаем камеру подальше чтобы все было видно
 glROtatef(-45,1,1,1);               //Крутим все на 45 градусов чтобы было трехмерно

 glColor3f (0.55, 0.55, 0.55);       //Текущий цвет примитивов
 glBegin(GL_QUADS);                  //Рисуем плоскость
   glVertex3f(1.0, 1.0, 0);
   glVertex3f(-1.0, 1.0, 0);
   glVertex3f(-1.0, -1.0, 0);
   glVertex3f(1.0, -1.0, 0);
 glEnd;

 glColor3f (0.0, 0.0, 0.0);          //Текущий цвет примитивов
 glBegin (GL_LINE_STRIP);            //Рисуем линии
  glVertex3f(-0.5,-0.5,0);
  glVertex3f(0.5,0.5,0);
  glVertex3f(0.5,-0.6,0);
  glVertex3f(-0.1,-0.65,0);
 glEnd;

 glPopMatrix;                        //Матрице восстанавливаем
 SwapBuffers(DC);                    //Выводим на экран что нарисовали
end;

{=======================================================================
Формат пикселя}
procedure SetDCPixelFormat (hdc : HDC);
var
 pfd : TPixelFormatDescriptor;
 nPixelFormat : Integer;
begin
 FillChar (pfd, SizeOf (pfd), 0);
 pfd.dwFlags  := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
 nPixelFormat := ChoosePixelFormat (hdc, @pfd);
 SetPixelFormat (hdc, nPixelFormat, @pfd);
end;

{=======================================================================
Создание формы}
procedure TfrmGL.FormCreate(Sender: TObject);
begin
  //создаем ссылки разные
 DC := GetDC (Handle);
 SetDCPixelFormat (DC);
 hrc := wglCreateContext (DC);
 wglMakeCurrent (DC, hrc);
end;

{=======================================================================
Конец работы приложения}
procedure TfrmGL.FormDestroy(Sender: TObject);
begin
  //чистим ссылки
 wglMakeCurrent(0, 0);
 wglDeleteContext(hrc);
 ReleaseDC (Handle, DC);
 DeleteDC (DC);
end;

{=======================================================================
Изменение отображаемой области}
procedure TfrmGL.FormResize(Sender: TObject);
begin
 glLoadIdentity;                                              //Сбрасываем все настройки режима отображения (сдвиги матрицы вида)
 glViewPort(0,0,ClientWidth,ClientHeight);                    //Тут рисуем
 gluPerspective(50.0, ClientWidth / ClientHeight, 2.0, 10.0); //Включаем перспективу
 InvalidateRect(Handle, nil, False); //Перерипсовка окна
 glClearColor (0.3, 0.3, 0.55, 1.0); //Цвет фона
 glLineWidth(2.5);                   //Ширина линий
 glEnable(GL_LINE_SMOOTH);           //Сгладим линии чтобы было красиво
end;

end.



Добавлено через 2 минуты и 50 секунд
А ну и юнит переименуй с юнита ULook в Unit1


--------------------
PM MAIL ICQ   Вверх
Reptor
Дата 21.11.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



DragonFire,  запустил всё работает. Огромное спасибо да это то что надо  smile . Теперь старт есть буду разбираться как теперь это всё наполнять свойствами ну вроде что б можно было вращать по всем осям ну маштабировать ну что то в таком роде. Что б можно было под 2-им углом смотреть. 

Посоветуй пожалуста ещё литературку хорошую.
PM MAIL ICQ   Вверх
DragonFire
Дата 21.11.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



ну по OpenGL много хорошей литературы.. на форуме много вопросов разобрано. Поворот масштабирование - это все достаточно быстро освоишь... 
Я читал вначале Краснова "OpenGL. Графика в проектах Delphi". Вот лови: 
http://pv.bstu.ru/graphics/books/opengl_1.djvu 

Это сообщение отредактировал(а) DragonFire - 21.11.2007, 14:46


--------------------
PM MAIL ICQ   Вверх
Reptor
Дата 21.11.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



DragonFire, хорошо спасибо. Буду потихоньку начинать читать и разбираться что и как. 
PM MAIL ICQ   Вверх
Reptor
Дата 21.11.2007, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



а можно мне как то поменять систему координат?? что б не было 
 glVertex3f(1.0, 1.0, 0);
 glVertex3f(-1.0, 1.0, 0);

а было как стандартно  
glVertex3f(60, 30, 0);
glVertex3f(80, 90, 0); 
PM MAIL ICQ   Вверх
DragonFire
Дата 21.11.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



а что тебе мешает написать 
glVertex3f(1/60, 1/30, 0);
glVertex3f(1/80, 1/90, 0);

Добавлено через 1 минуту и 29 секунд
тогда все будет в пределах от -1 до 1)) 
А если не хочешь так то делай перед риссование уменьшение масштаба
glScalef(0.1,0.1,0.1); (уменьшить в 10 раз нарисованное ниже)

Это сообщение отредактировал(а) DragonFire - 21.11.2007, 22:06


--------------------
PM MAIL ICQ   Вверх
Reptor
Дата 22.11.2007, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



что то я не понимаю почему линия (картинка в атаче) идёт под углом  smile  smile 
Код


 glTranslatef(0,0,-5);               
 glROtatef(0,0,0,0); //-70, 90 , 0, 0             
 glColor3f (0.55, 0.55, 0.55);       
 glScalef(0.1,0.1,0.1);
 glBegin(GL_POLYGON);         

    glVertex3f(10, 10, 0);     // verh pravo

    glVertex3f(-10, 10, 0);   //verh levo
    glVertex3f(-10, 5, 0);
    glVertex3f(-30, 5, 0);
    glVertex3f(-30, -5, 0);
    glVertex3f(-10, -5, 0);
    glVertex3f(-10, -10, 0);       //niz levo

    glVertex3f(10, -10, 0);                    // niz pravo




Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  qqq.rar 5,84 Kb
PM MAIL ICQ   Вверх
DragonFire
Дата 23.11.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



Код

 glBegin(GL_QUADS);                
    glVertex3f(10, 10, 0);   
    glVertex3f(-10, 10, 0);  
    glVertex3f(-10, -10, 0);      
    glVertex3f(10, -10, 0);
 glEnd;
 glBegin(GL_QUADS);
    glVertex3f(-30, -5, 0);
    glVertex3f(-10, -5, 0);
     glVertex3f(-10, 5, 0);
    glVertex3f(-30, 5, 0);
 glEnd;

Делай так.. QUADS рисует тока четырехугольники... 


--------------------
PM MAIL ICQ   Вверх
Reptor
Дата 23.11.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

QUADS рисует тока четырехугольники... 

DragonFire, да я понял но я ведь пользуюсь (в том коде что привёл выше)  GL_POLYGON вот в чём не ясность почему он рисует линию под углом? 


PM MAIL ICQ   Вверх
DragonFire
Дата 23.11.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



разбиратся ща некогда, а GL_POLYGON я вообще не использую... 
Это несколько нестандартный подход, замедляющий работу, лучше все выводи треугольниками... 
Если всеже нужно именно GL_POLYGON, то ночью послезавтра могу покопать и сказать что не так... 


--------------------
PM MAIL ICQ   Вверх
Reptor
Дата 23.11.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



DragonFire, да было б очень здорово. Я что то совсем не могу понять что не так  smile  smile  smile  Вроде обычные точки соединяю по координатам и чё оно его кривит совсем не ясно. И как это треугольниками не совсем понял?
PM MAIL ICQ   Вверх
DragonFire
Дата 23.11.2007, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



Ну просто у меня через GL_POLYGON вообще криво отображает все опенжл... Бъет на квадраты по 4 точки... Так что хз...
А стандартный и самый быстрый метод вывода плоскости на экран - это разбить ее на треугольники и выводить по треугольникам.. Но это я так.. прирост скорости заметен тока при большом количестве примитивов... 


--------------------
PM MAIL ICQ   Вверх
Reptor
Дата 24.11.2007, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



DragonFire, ну а всё таки как это треугольниками?
PM MAIL ICQ   Вверх
DragonFire
Дата 25.11.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



ну хочешь ты вывести плоскость скажем квадратную - берешь и рисуешь 2 треугольника прямоугольных - вместо одного квадрата... И т.д.


--------------------
PM MAIL ICQ   Вверх
mes
Дата 2.12.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Reptor @  22.11.2007,  18:46 Найти цитируемый пост)
что то я не понимаю почему линия (картинка в атаче) идёт под углом     



Рисунок отображенный в к аттаче ( qqq.rar 5,84 Kb ) не может соответвовать  коду приведенному в посте. smile 




--------------------
PM MAIL WWW   Вверх
DragonFire
Дата 2.12.2007, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



У мну тож не то совсем отображается, но возможно OpenGL багнутый на компе стоит.... 


--------------------
PM MAIL ICQ   Вверх
Reptor
Дата 9.12.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



mes, да вот в том то и дело что не может. Мне совсем не понятно почему так.  smile   Но что есть то есть просто выполнил код и зделал скриншот резкльтата. 
PM MAIL ICQ   Вверх
Gongex
Дата 2.1.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



делал на днях трехмерный куб,вращающийся...Сначала сделал 4 точки,потом соединил линиями,и начал двигать их.Получилась плоскость,а сделать из 4-х точек куб,это так:

если у тебя есть x(1,2,3,4)   и    y(1,2,3,4) и плоскость которая "лежит на столе":

 ddx = qx(2) - qx(3) + qx(3) - qx(1)
 ddy = qy(2) - qy(3) + qy(3) - qy(1)

ddx это ровная "высота"от х1 и х2

линии вниз
Line (x(3) - ddx, y(3) + ddy)-(x(3) , y(3) )
Line (x(1)  - ddx, y(1) + ddy)-(x(1) , y(1) )
Line (x(2) - ddx, y(2)  + ddy)-(x(2) , y(2) )
Line (x(4) - ddx, y(4)  + ddy)-(x(4) , y(4) )

вторая спроецированная плоскость
Line (x(3) - ddx, y(3)  + ddy)-(x(1)  - ddx, y(1) + ddy)
Line (x(1)  - ddx, y(1)  + ddy)-(x(2)  - ddx, y(2)  + ddy)
Line (x(2) - ddx, y(2)  + ddy)-(x(4)  - ddx, y(4) + ddy)
Line (x(4)  - ddx, y(4)  + ddy)-(x(3)  - ddx, y(3) + ddy)

извини это при условии что известны 4 точки,

4 точки расположены так:вверху слева х1 справа х2,внизу слева х3,справа х4

если у тебя прога на vb давай код я спроецирую

Это сообщение отредактировал(а) Gongex - 2.1.2008, 21:28
PM MAIL   Вверх
Gongex
Дата 2.1.2008, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вот вычисления чтобы из двух точек получить квадрат:

Код

Private Sub Form_Load()
x(1) = 4000
x(2) = 6000
y(1) = 5000
y(2) = 5000

b(1) = 2
b(5) = 2
b(2) = 1 ' это направление смещения точек
b(6) = 1


от таймера:

Cls

это эффект жвижения квадрата

Код

If b(1) = 1 Then x(1) = x(1) - 65
If b(1) = 2 Then x(1) = x(1) + 65
If x(1) < 4000 Then b(1) = 2
If x(1) > 6000 Then b(1) = 1

If b(2) = 1 Then x(2) = x(2) - 65
If b(2) = 2 Then x(2) = x(2) + 65
If x(2) < 4000 Then b(2) = 2
If x(2) > 6000 Then b(2) = 1

If b(5) = 1 Then y(1) = y(1) - 65
If b(5) = 2 Then y(1) = y(1) + 65
If y(1) < 4000 Then b(5) = 2
If y(1) > 6000 Then b(5) = 1

If b(6) = 1 Then y(2) = y(2) - 65
If b(6) = 2 Then y(2) = y(2) + 65
If y(2) < 4000 Then b(6) = 2
If y(2) > 6000 Then b(6) = 1

получаем остальные две точки:

Line (x(1), y(1))-(x(2), y(2)) это известно

x(3) = x(1) + y(1) - y(2)    игреки к иксу
y(3) = y(1) + x(2) - x(1)  а иксы к игреку

Line (x(1), y(1))-(x(3), y(3))

x(4) = x(2) + y(1) - y(2)
y(4) = y(2) + x(2) - x(1)

Line (x(2), y(2))-(x(4), y(4))


потом эти х1 и х2 крути как хочешь,куб должен быть ровным

Добавлено @ 23:45
Цитата(DragonFire @ 20.11.2007,  22:06)
(1.0, 1.0, 0);
   glVertex3f(-1.0, 1.0, 0);
   glVertex3f(-1.0, -1.0, 0);
   glVertex3f(1.0, -1.0, 0);
 glEnd;

 glColor3f (0.0, 0.0, 0.0);          //Текущий цвет примитивов
 glBegin (GL_LINE_STRIP);            //Рисуем линии
  glVertex3f(-0.5,-0.5,0);
 

у DragonFire такой код длиннющий,уверен все можно сделать 10-ю строками

Gongex, 
M
arilou
используйте тэги форматирования кода


Это сообщение отредактировал(а) arilou - 11.1.2008, 13:00
PM MAIL   Вверх
DragonFire
Дата 10.1.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



Gongex, 
Процедуру рисования возможно и можно упросить, только вот код не для оптимизированного движка выкладывался а как наглядный пример, насколько я помню) 


--------------------
PM MAIL ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




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


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

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