Модераторы: 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   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

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

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

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

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


 




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


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

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