Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.09.2006, 22:43
RUS_Hacker RUS_Hacker вне форума
Новичок
 
Регистрация: 23.07.2006
Сообщения: 54
Репутация: 10
Лампочка 2 сложных вопроса по OpenGL

Вопрос 1:
Как можно поместить объект, нарисованный на OpenGL, в буфер обмена ?
Вопрос 2 (попроще) :
Как нарисовать овал ?
Заранее благодарен
Ответить с цитированием
  #2  
Старый 05.09.2006, 00:36
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Цитата:
Как нарисовать овал ?
Если ты имеешь ввиду 2d овал, попробуй так:

Код:
procedure TForm1.FormPaint(Sender: TObject);
const
  Step = 80;
  RadiusX = 0.8;
  RadiusY = 0.5;
var
  i: integer;
  x, y, oldx, oldy: GLfloat;
begin
   glClear( GL_COLOR_BUFFER_BIT );

   oldx := RadiusX * cos( 360/Step*pi/180 );
   oldy := RadiusY * sin( 360/Step*pi/180 );
   for i := 2 to Step+1 do
   begin
      x := RadiusX * cos( 360/Step*i*pi/180 );
      y := RadiusY * sin( 360/Step*i*pi/180 );
      glBegin( GL_LINES );
         glVertex2f( oldx, oldy );
         glVertex2f( x, y );
      glEnd;
      oldx := x;
      oldy := y;
   end;

   SwapBuffers( DC );
end;
Цитата:
Как можно поместить объект, нарисованный на OpenGL, в буфер обмена ?
Меня это тоже интересует. Кто знает, напишите...
Ответить с цитированием
  #3  
Старый 05.09.2006, 13:27
RUS_Hacker RUS_Hacker вне форума
Новичок
 
Регистрация: 23.07.2006
Сообщения: 54
Репутация: 10
По умолчанию

За 2д овал спасибо, но хотелось бы знать как нарисовать 3д овал.
Ответить с цитированием
  #4  
Старый 05.09.2006, 14:38
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Где-то у меня были формулы... Вечером посмотрю...

А если ты знаешь как нарисовать сферу, то можешь использовать этот алгоритм, но вместо одного радиуса использовать два, по x и y...

Последний раз редактировалось Decoding, 05.09.2006 в 14:40.
Ответить с цитированием
  #5  
Старый 05.09.2006, 22:36
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Вот формулы:

Код:
function GetX(a, b: double): double;
begin
   Result := RadiusX * sin( a ) * cos( b );
end;

function GetY(a, b: double): double;
begin
   Result := RadiusY * sin( a ) * sin( b );
end;

function GetZ(a, b: double): double;
begin
   Result := RadiusY * cos( a );
end;

a и b - кол-во сторон и граней на стороне соответственно. Сам сможешь нарисовать?

P.S.
Если под 3D овалом ты понимаешь тор, то формулы будут такие:
Код:
function GetX(a, b: double): double;
begin
   Result := ( RadiusOuter + RadiusInner * cos( a ) ) * cos( b );
end;

function GetY(a, b: double): double;
begin
   Result := ( RadiusOuter + RadiusInner * cos( a ) ) * sin( b );
end;

function GetZ(a, b: double): double;
begin
   Result := RadiusInner * sin( a );
end;

Последний раз редактировалось Decoding, 06.09.2006 в 02:07.
Ответить с цитированием
  #6  
Старый 09.09.2006, 18:13
RUS_Hacker RUS_Hacker вне форума
Новичок
 
Регистрация: 23.07.2006
Сообщения: 54
Репутация: 10
По умолчанию

Измени меня за мою тупость, но я так и не смог нарисовать 3d овал
Может у тебя есть конкретный пример ?
Ответить с цитированием
  #7  
Старый 09.09.2006, 19:06
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Есть и пример.

primer.zip
Ответить с цитированием
  #8  
Старый 10.09.2006, 12:32
RUS_Hacker RUS_Hacker вне форума
Новичок
 
Регистрация: 23.07.2006
Сообщения: 54
Репутация: 10
По умолчанию

Огромное тебе спасибо !
Ответить с цитированием
  #9  
Старый 09.10.2006, 18:51
Ruba Ruba вне форума
Прохожий
 
Регистрация: 09.10.2006
Сообщения: 3
Репутация: 10
По умолчанию

По поводу обьекта.
1. Если ты хочешь сделать его простой принтскрин, то это делается через Clipboard. Правда алгоритм выделения самого обьекта получится достаточно сложный... Можно его связать с цветом обьекта или формой, написав что-то типа сканируещей линии, как при заполнении полигонов.
2-й способ. Сохрани координаты обекта и построй его там, где нужно тебе его вставить помощью Opengl или любой другой граф. библиотеки, смотря что юзаешьи смотря куда вставлять надо. Если при этом сделаешь и выделение обьектов с помощью мыши - то ты гений=)
А на счет сферы - бегом иди учить аналитку=)
Ответить с цитированием
  #10  
Старый 11.10.2006, 10:20
Аватар для Exai1e
Exai1e Exai1e вне форума
Прохожий
 
Регистрация: 13.09.2006
Сообщения: 5
Репутация: 10
По умолчанию

http://forum.mirgames.ru/index.php?s...=0&#entry37805
__________________
Токо учусь...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter