Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Образовательный студенческий форум _ Информатика / Программирование _ Паскаль

Автор: flait 15.10.2007, 21:12

если кто знает, помогите или знает где найти:
Изобразить кривую R = a*cos(φ) + L.
Построение выполнить для a>L. Обеспечить вращение изображения в плоскости экрана вокруг центра по часовой стрелке с одновременным перемещением по средней вертикали сверху вниз. По достижении нижнего края экрана, появляются аналогичные изображения в левом и правом нижних углах и перемещаются вверх до исчезновения с экрана.

Просто я реально не знаю как это сделать

Автор: flait 27.10.2007, 12:15

Ребяты, помогите пожалуйста, очень нада

Автор: creer 28.10.2007, 18:39

Вот основа:

Код
Program Project1;
Uses Graph;

procedure InitGr;
var
  gd, gm: SmallInt;
begin
  gd:=0;
  gm:=0;
  InitGraph(gd, gm, '');
end;

function f(a,phi,L:real):real;
begin
  Result:=a*cos(phi)+L;
end;

procedure Draw(x,y:integer;ang:real); //Угол в градусах
const
  countpixels = 360;
  expand = 100;
var
  a,phi,L:real;
  i:integer;
begin
//x=r*cos(phi);
//y=r*sin(phi);
a:=2;
L:=1;

SetColor(15);

phi:=0;
MoveTo(round(f(a,phi,L)*cos(phi+2*pi/360*ang)*expand)+x,round(f(a,phi,L)*sin(phi+2*pi/360*ang)*expand+y));

for i:=1 to countpixels do
begin
  phi:=2*pi/countpixels*i;
  LineTo(round(f(a,phi,L)*cos(phi+2*pi/360*ang)*expand)+x,round(f(a,phi,L)*sin(phi+2*pi/360*ang)*expand+y));
end;

end;
begin
  InitGr;
  Draw(100,200,50);
  CloseGraph;
end.


Draw(100,200,50); - рисует кривую с началом координат в точке (100;200) и поворотом на 50 градусов по часовой стрелке.

Автор: Julia 29.10.2007, 2:47

2creer: мы всегда рады новым помощникам, но не всегда стоит полностью выкладывать готовое решение.

Автор: creer 29.10.2007, 7:38

Julia, если я правильно понял задание, решение далеко не полное, необходимо еще обеспечить перемещение (с учетом двойной прорисовки данной фигуры при частичном выходе за края графической области) и вращение фигуры по экрану в динамике. Для этого придется слегка изменить процедуру рисования и добавить реакцию на клавиши или сдвигать фигуру по таймеру.
Если бы проект "Решебник.Ру" занимался решением задач по информатике, я бы не стал приводить этот код.

Автор: flait 29.10.2007, 10:29

Ребяты, а вы это в дельфях писали???

Автор: creer 29.10.2007, 17:55

Нет, это обычный паскаль.

Автор: flait 30.10.2007, 7:48

SmallInt - пишет как неизвестный индитификатор

Автор: creer 30.10.2007, 9:45

Замени на "integer". Fpc не откомпилировал с integer'ом.
Посмотри как работать с графикой в Паскале, думаю пригодится :-).

Автор: RisingForceOnline 5.11.2007, 15:08

Sirs!, what it is necessary to make that GRAPH to start? Then i write "var graph;"pascal say to me "file not found: GRAPH.TPU"
I have this file in folder "units".What happened?Help me,please=))

not "var", sorry I Write "units GRAPH;",)xD

Автор: creer 5.11.2007, 15:57

You must write "uses graph;" :-)
In Borland Pascal help wrote "To compile a program that uses the Graph unit, you don't need any external files. (Of course, you'll need your program's source code, the compiler, and access to the standard units in TURBO.TPL)."
May be, you need "turbo.tpl" file.

Автор: RisingForceOnline 5.11.2007, 16:11

ладно,давай по-русски))
я и пишу uses GRAPH;
эт я там опечатался,переиграл сегодня в рф)))

Мне паскаль пишет, что не найден GRAPH.TPU!,но он есть у мну в папке юнитс, и че он работает???
и откуда взять этот турбо?

Автор: creer 5.11.2007, 17:15

Я и на русском умею :-)
turbo.tpl у меня лежит в \BP\BIN :-)

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)