|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
2 сложных вопроса по OpenGL
Вопрос 1:
Как можно поместить объект, нарисованный на OpenGL, в буфер обмена ? Вопрос 2 (попроще) : Как нарисовать овал ? Заранее благодарен |
#2
|
||||
|
||||
Цитата:
Код:
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; Цитата:
|
#3
|
|||
|
|||
За 2д овал спасибо, но хотелось бы знать как нарисовать 3д овал.
|
#4
|
||||
|
||||
Где-то у меня были формулы... Вечером посмотрю...
А если ты знаешь как нарисовать сферу, то можешь использовать этот алгоритм, но вместо одного радиуса использовать два, по x и y... Последний раз редактировалось Decoding, 05.09.2006 в 14:40. |
#5
|
||||
|
||||
Вот формулы:
Код:
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
|
|||
|
|||
Измени меня за мою тупость, но я так и не смог нарисовать 3d овал
Может у тебя есть конкретный пример ? |
#7
|
||||
|
||||
|
#8
|
|||
|
|||
Огромное тебе спасибо !
|
#9
|
|||
|
|||
По поводу обьекта.
1. Если ты хочешь сделать его простой принтскрин, то это делается через Clipboard. Правда алгоритм выделения самого обьекта получится достаточно сложный... Можно его связать с цветом обьекта или формой, написав что-то типа сканируещей линии, как при заполнении полигонов. 2-й способ. Сохрани координаты обекта и построй его там, где нужно тебе его вставить помощью Opengl или любой другой граф. библиотеки, смотря что юзаешьи смотря куда вставлять надо. Если при этом сделаешь и выделение обьектов с помощью мыши - то ты гений=) А на счет сферы - бегом иди учить аналитку=) |
#10
|
||||
|
||||
Токо учусь... |