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

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

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

 
 Ответить  Открыть новую тему 
> Фигуры Лиссажу, Графика на паскале
сообщение
Сообщение #1





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

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


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

Прошу помощи, потому как сам залез в тупик...
Это кусочек моей курсовой, где на экран мне надо вывести три фигуры Лиссажу, задаваемые с разными частотами(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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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)))); { <--- Здесь тоже }

и получаем отрисовку "за один проход" ... Так?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


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

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

 





- Текстовая версия 31.10.2020 0:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name