Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2008, 19:39   #1
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
Восклицание Пирамиад

Здравствуйте, у меня такая проблема: мне сложно дается пространственная геометрия, и мне нужно написать такую прогу, с помощью которой можно было бы смотреть трехмерную модель пирамиды(а не такую, которую мы чертим в школе), посмотреть на нее снизу, сверху, ее содержимое, например диагонали. Может быть есть компонент такой? Помогите пожалуйста. Заранее благодарен.
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 05.04.2008, 19:42   #2
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

OpenGl тебе в помощь!
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 05.04.2008, 19:44   #3
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

В первый раз слышу Можете рассказать каким образом?
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 05.04.2008, 20:34   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

для Delphi можешь посмотреть в сторону GLScene. там эту пирамиду будет достаточно просто сделать. Хотя изучение OpenGL было бы полезнее)
pu4koff вне форума Ответить с цитированием
Старый 05.04.2008, 21:47   #5
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
dc:HDC;
hrc:HDC;

implementation

{$R *.dfm}
procedure SetDCPixelFormat (hdc : HDC); /
var pfd : TPixelFormatDescriptor;
nPixelFormat : Integer;
begin
FillChar (pfd, SizeOf (pfd), 0);
pfd.dwFlags :=PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
nPixelFormat :=ChoosePixelFormat (hdc, @pfd);
SetPixelFormat(hdc, nPixelFormat, @pfd);
end;


procedure TForm1.FormCreate(Sender: TObject); // а это инициализация
begin
DC := GetDC (Handle);
SetDCPixelFormat(DC);
hrc := wglCreateContext(DC);
wglMakeCurrent(DC, hrc);
glClearColor (0.0, 0.0, 0.75, 1.0);
glMatrixMode (GL_PROJECTION);
glLoadIdentity;
glFrustum (-1, 1, -1, 1, 2, 20);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity;
glTranslatef(0.0, 0.0, -6.0);
end;

procedure TForm1.FormDestroy(Sender: TObject); // выгружаемся
begin
wglMakeCurrent(0, 0);
wglDeleteContext(hrc);
ReleaseDC (Handle, DC);
DeleteDC (DC);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
glEnable (GL_LIGHTING);
glEnable (GL_LIGHT0);
glEnable (GL_DEPTH_TEST);
timer1.enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
glRotatef(1.0, 1.0, -1.0, -1.0); // поворачиваем на:


SwapBuffers(DC);
InvalidateRect(Handle, nil, False);
end;

procedure Tform1.FormPaint(Sender: TObject);

begin

glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glBegin(GL_QUADS);
glNormal3f(0,0,1);
glVertex3f(1,0,-1);
glVertex3f(0,1,-1);
glVertex3f(-1,0,-1);
glVertex3f(0,-1,-1);
glEnd;
glBegin(GL_POLYGON);
glNormal3f(1, 1, 0);
glVertex3f(0,1,-1);
glVertex3f(1,0,-1);
glVertex3f(0,0,0);
glEnd;
glBegin(GL_POLYGON);
glNormal3f(1, -1, 0);
glVertex3f(1,0,-1);
glVertex3f(0,-1,-1);
glVertex3f(0,0,0);
glEnd;
glBegin(GL_POLYGON);
glNormal3f(-1, -1, 0);
glVertex3f(0,-1,-1);
glVertex3f(-1,0,-1);
glVertex3f(0,0,0);
glEnd;
glBegin(GL_POLYGON);
glNormal3f(-1, 1, 0);
glVertex3f(-1,0,-1);
glVertex3f(0,1,-1);
glVertex3f(0,0,0);
glEnd;
glBegin(GL_LINES);
glColor(240, 157, 132);
glNormal3f(-1, 1, 0);
glVertex3f(1,0,-1.01);
glVertex3f(-1,0,-1.01);
glEnd;
end;

end.

Вот код друг мне скачал из инета, объяснить пожалуйста очень подробно, что за что отвечает и напишите пожалуйста
, каким образом сделать так, чтобы пирамида стала прозрачной, чтобы ее можно было крутить мышкоЙ.
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 05.04.2008, 22:00   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

книжку по OpenGL скачай
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц