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

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

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

> Посмотрите на исходник, где-то ошибка есть, Исходник
Manner
сообщение 11.11.2005 6:47
Сообщение #1





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

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


Программа должна рисовать катащийся эллипс. Элиппс рисовать вроде получается, а вот дальше непонятно, формулы поворота вроде верны. Но что-то не то получается. У кого есть время гляньте плз.
 
uses graph,crt;

const
sizex=30;
sizey=300;
sizexp=25;
sizeyp=15;
speed=1;
one=pi/180;
t=one*speed;
ms=2000;
Type TEllipse=object
f1,f2:real;
angle,xxpp,yypp,xxp,yyp:real;
x,y:integer;
Constructor Init (focus1,focus2:integer; xp,yp:integer);
Procedure show;
procedure rotate (xO,yO:integer;xp:real);
Destructor Done;
end;
TScreen=object(TEllipse)
Constructor Init(focus1,focus2:integer; xp,yp:integer);
Procedure GraphInit;
Procedure Go;
Destructor Done;
end;

Constructor TEllipse.Init(focus1,focus2:integer; xp,yp:integer);
begin
x:=focus1; y:=focus2;
f1:=xp;
f2:=yp;
fillellipse(x,y,round(f1),round(f2));
end;
Procedure TEllipse.Rotate(xO,yO:integer; xp:real);
begin
x:=xo;
y:=yo;
xxpp:=xo+(xp*(cos(t)));
yypp:=yo+(xp*(sin(t)));
fillellipse(x,y,Round(xxpp),Round(yypp));
end;
procedure TEllipse.show;
begin
end;
Destructor TEllipse.Done;
begin end;

Constructor TScreen.Init(focus1,focus2:integer; xp,yp:integer);
begin
x:=focus1;
y:=focus2;
f1:=xp;
f2:=yp;
fillellipse(x,y,round(f1),round(f2));
angle:=0;
end;

Procedure TScreen.GraphInit;
var gd,gm,ErrorCode:integer;
begin
if GetGraphMode=2 then Exit;
gd:=Detect;
InitGraph(gd,gm,'');
ErrorCode:=GraphResult;
if ErrorCode<>grok then begin
writeln('Error: ',GraphErrorMsg(ErrorCode));
Halt(1);
end;
end;
procedure TScreen.Go;
begin
repeat
angle:=angle+t;
rotate(x,y,Round(xxpp));
delay(ms);
show;
until keypressed;
end;
Destructor Tscreen.done;
begin CloseGraph; end;

{$I GrInit}
var Screen:Tscreen;
begin
GRInit;
Screen.Init(sizex,sizey,sizexp,sizeyp);
Screen.GraphInit;
Screen.Go;
Screen.done;
end.

.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Manner
сообщение 11.11.2005 13:52
Сообщение #2





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

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


Да, если можно был бы рад посмотреть как параметрически решается данная задача.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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