|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.04.2008, 19:39 | #1 |
Форумчанин
Регистрация: 30.03.2008
Сообщений: 392
|
Пирамиад
Здравствуйте, у меня такая проблема: мне сложно дается пространственная геометрия, и мне нужно написать такую прогу, с помощью которой можно было бы смотреть трехмерную модель пирамиды(а не такую, которую мы чертим в школе), посмотреть на нее снизу, сверху, ее содержимое, например диагонали. Может быть есть компонент такой? Помогите пожалуйста. Заранее благодарен.
Программирование - это великое искусство... Такое же как например и живопись!
|
05.04.2008, 19:42 | #2 |
Капсула от спама
Форумчанин
Регистрация: 04.03.2008
Сообщений: 779
|
OpenGl тебе в помощь!
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг |
05.04.2008, 19:44 | #3 |
Форумчанин
Регистрация: 30.03.2008
Сообщений: 392
|
В первый раз слышу Можете рассказать каким образом?
Программирование - это великое искусство... Такое же как например и живопись!
|
05.04.2008, 20:34 | #4 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
для Delphi можешь посмотреть в сторону GLScene. там эту пирамиду будет достаточно просто сделать. Хотя изучение OpenGL было бы полезнее)
|
05.04.2008, 21:47 | #5 |
Форумчанин
Регистрация: 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. Вот код друг мне скачал из инета, объяснить пожалуйста очень подробно, что за что отвечает и напишите пожалуйста , каким образом сделать так, чтобы пирамида стала прозрачной, чтобы ее можно было крутить мышкоЙ.
Программирование - это великое искусство... Такое же как например и живопись!
|
05.04.2008, 22:00 | #6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
книжку по OpenGL скачай
|