IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Графика на Паскале, Помогите описать программу
RoachSka
сообщение 29.05.2008 21:36
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской
Реальное имя: Кирилл

Репутация: -  0  +


Ребята, мне написали программу в Паскале котрая выводит конус который вращается вокруг оси(X,Y,Z), входными данными являются высота, радиус, ось вращения, сторона вращения, помогите написать что за что отвечает в этой программе. Вот текст программы
unit Unit_Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OpenGL, StdCtrls, ExtCtrls, Spin;

type
TMainForm = class(TForm)
Panel: TPanel;
RadioGroupDir: TRadioGroup;
RadioGroupAxis: TRadioGroup;
Timer: TTimer;
SpinEdit1: TSpinEdit;
Label1: TLabel;
SpinEdit2: TSpinEdit;
Label2: TLabel;
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
private
hrc: HGLRC;
angleX, angleY, angleZ: Integer;
A,B:integer;
quadObj:GLUquadricObj;
public
{ Public declarations }
end;

var
MainForm: TMainForm;

implementation

{$R *.dfm}

procedure SetDCPixelFormat(hdc: HDC);
var
pfd: TPixelFormatDescriptor;
nPixelFormat: Integer;
begin
FillChar(pfd, SizeOf(pfd), 0);
pfd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
nPixelFormat := ChoosePixelFormat(hdc, @pfd);
SetPixelFormat(hdc, nPixelFormat, @pfd);
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
SetDCPixelFormat(Canvas.Handle);
hrc := wglCreateContext(Canvas.Handle);
A:=SpinEdit1.Value;
B:=SpinEdit2.Value;
quadObj:=gluNewQuadric;
gluQuadricDrawStyle(quadObj,GLU_FILL);
gluQuadricOrientation(quadObj,GLU_INSIDE);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
wglDeleteContext(hrc);
end;

procedure TMainForm.FormPaint(Sender: TObject);
begin
wglMakeCurrent(Canvas.Handle, hrc);
glViewPort(0, 0, ClientWidth-Panel.ClientWidth, ClientHeight);
glClearColor(0.0, 0.0, 0.0, 1.0);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glFrustum(-1, 1, -1, 1, 4, 10);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity;

glTranslatef(0.0, 0.0, -8.0);

glColor3f(0.0, 0.0, 1.0);
glBegin(GL_LINES);
glNormal3f(0.0, 0.0, 2.0);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(1.7, 0.0, 0.0);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 1.7, 0.0);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(-1.0, -1.0, 1.0);
glEnd;
glColor3f(1.0, 1.0, 0.0);
glPushMatrix;
glTranslatef(1.7,0,0);
glRotatef(90,0,1,0);
gluCylinder(quadObj,0.05,0.0,0.1,10,10);
glPopMatrix;
glPushMatrix;
glTranslatef(-1.0,-1.0,1.0);
glRotatef(-30,-1,1,1);
gluCylinder(quadObj,0.05,0.0,0.1,10,10);
glPopMatrix;
glPushMatrix;
glTranslatef(0.0,1.7,0.0);
glRotatef(-90,1,0,0);
gluCylinder(quadObj,0.05,0.0,0.1,10,10);
glPopMatrix;

glColor3f(1.0, 0.0, 0.0);

glRotatef(angleX+20, 1.0, 0.0, 0.0); // поворот объекта - ось X
glRotatef(angleY, 0.0, 1.0, 0.0); // поворот объекта - ось Y
glRotatef(angleZ, 0.0, 0.0, 1.0); // поворот объекта - ось Z

glRotatef(90, -1.0, 0.0, 0.0);
gluCylinder(quadObj,0.01*B,0.0,0.01*A,10,10);
gluQuadricOrientation(quadObj,GLU_INSIDE);
gluDisk(quadObj,0.0,0.01*B,10,10);
gluQuadricOrientation(quadObj,GLU_OUTSIDE);
SwapBuffers(Canvas.Handle);
wglMakeCurrent(0, 0);
end;

procedure TMainForm.TimerTimer(Sender: TObject);
const
delta = 6;
var
d_angle: Integer;
begin
if RadioGroupDir.ItemIndex = 0 then
d_angle := delta
else
d_angle := -delta;
case RadioGroupAxis.ItemIndex of
0: begin
angleX := (angleX + d_angle) mod 360;
angleY := 0;
angleZ := 0;
end;
1: begin
angleX := 0;
angleY := (angleY + d_angle) mod 360;
angleZ := 0;
end;
2: begin
angleX := 0;
angleY := -30;
angleZ := (angleZ + d_angle) mod 360;
end;
3: begin
angleX := (angleX + d_angle) mod 360;
angleY := (angleY + d_angle) mod 360;
angleZ := (angleZ + d_angle) mod 360;
end;
end;
InvalidateRect(Handle, nil, False);
end;

procedure TMainForm.SpinEdit1Change(Sender: TObject);
begin
A:=SpinEdit1.Value;
end;

procedure TMainForm.SpinEdit2Change(Sender: TObject);
begin
B:=SpinEdit2.Value;
end;

end.
Заранее благодарен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 29.05.2008 21:49
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Начнем с того что программа написана на Delphi, это во-первых, а во-вторых

Цитата
мне написали программу... помогите написать что за что отвечает в этой программе


Автора не пробовал попросить ? Или ты действительно думаешь что кто-то будет сидеть, разбираться в куче чужего кода, тем более графика ... и еще это дело комментировать ? Не теряй время и не жди,этого не будет.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 30.05.2008 14:14
Сообщение #3


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


тем более, что в теме 2 нарушения правил (не тот раздел и не использованы теги для кода).


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.05.2024 0:24
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"