![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Вопрос 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
|
||||
|
||||
|
|