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

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

Форум «Всё о Паскале» _ Задачи _ Фигуры Лиссажу

Автор: vzhik 20.11.2006 1:39

Вечер добрый=)

Прошу помощи, потому как сам залез в тупик...
Это кусочек моей курсовой, где на экран мне надо вывести три фигуры Лиссажу, задаваемые с разными частотами(w). Привожу код, где рисуется первая фигура(остальные выкладывать нет смысла, потому как они отличаются только частотой и координатами центра). Так вот суть проблемы: преподаватель просит переделать програму так, чтобы фигура плавно из исходной точки вырисовывалась одним пикселем, а у меня рисует как-то отрывисто. Подскажите, если не трудно, как это сделать.


Program KURS;

uses Graph,crt;

const
A=50;w1=1;w2=2;

var
driver,mode,x,y,t:integer;

procedure FFigure(w1,w2:integer);
begin
driver:=detect;
mode:=detect;
initgraph(driver,mode,'c:\bp\bgi');
for t:=1 to 1000 do
begin
OutTextXY(5, 10, 'first graph');
putpixel(x,y,white);
x:=((GetMaxx div 2)+round(a*cos(w1*t)));
y:=((round(GetMaxy/8))+round(a*sin(w2*t)));
delay(500);
end;
end;

begin
FFigure(w1,w2);
end.

Автор: volvo 20.11.2006 3:39

Sin/Cos считают, что им передаются радианы... А ты по-моему хочешь работать в градусах. Я прав? smile.gif

   x:=((GetMaxx div 2)+round(a*cos(w1*t / (180/Pi)))); { <--- Переводим T в градусы }
y:=((round(GetMaxy/8))+round(a*sin(w2*t / (180/Pi)))); { <--- Здесь тоже }

и получаем отрисовку "за один проход" ... Так?

Автор: vzhik 20.11.2006 4:07

как же обидно, что сам не додумался, знал бы ты сколько я над этим корпел=)
вроде проверял, везде правильно...а тут такой очевидный ляпсус=)
спасибо огромное)