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

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

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

> Графика. Двужущаяся точка., Точка совершает колебания
Accer
сообщение 28.12.2007 6:09
Сообщение #1


Новичок
*

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

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


Помогите с графикой! Нужно изобразить точку, совершающую независимые гармонические колебания с частотой w1 по горизонтали и с частотой w2 по вертикали. (амплитуда тех и других колебаний равна а). Считать, что в момент времени t точка имеет координаты x=a cos w1(t-t1) y=a cos w2(t-t2); t1 и t2 даны. Предусмотреть возможность управления с клавиатуры значениями w1 и w2.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
Ответов(1 - 19)
Lapp
сообщение 28.12.2007 6:44
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Что именно не получается с графикой?
Рисуешь точку, запоминаешь координаты, пересчитываешь координаты на новое положение, стираешь точку в старом положении, рисуешь в новом... и т.д...


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Accer
сообщение 28.12.2007 7:23
Сообщение #3


Новичок
*

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

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


В графике ноль. Точку могу с трудом нарисовать.

Сообщение отредактировано: Accer - 28.12.2007 7:23
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 28.12.2007 9:18
Сообщение #4


Гуру
*****

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

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


Цитата(Accer @ 28.12.2007 7:23) *
Точку могу с трудом нарисовать.
Судя по условию, именно это от тебя и требуется. :D
Реально по такому задаию можно сделать очень красивую программу, рисующую фигуры Лиссажу.
ПОказывай, что уже сделал.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Accer
сообщение 28.12.2007 16:24
Сообщение #5


Новичок
*

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

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


Я не понимаю алгоритм работы этой программы!!!
Рисуем точку-удаляеи-русуем в другом месте-снова удаляем-...-повторяем все снова?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 28.12.2007 18:38
Сообщение #6


Гуру
*****

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

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


Абсолютно верно! Алгоритм понят.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Accer
сообщение 28.12.2007 19:36
Сообщение #7


Новичок
*

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

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


smile.gif а как задать связать с формулой???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 28.12.2007 19:41
Сообщение #8


Гуру
*****

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

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


Связать что с чем?

Небольшое уточнение в алгоритме: рисуем, делаем небольшую задержку, чтобы показать пользователю, удаляем, вычисляем новвые координаты, рисуем, задержка, удаляем...

Сообщение отредактировано: andriano - 28.12.2007 19:42
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Accer
сообщение 28.12.2007 20:51
Сообщение #9


Новичок
*

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

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


wacko.gif wacko.gif wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Чужак
сообщение 28.12.2007 22:02
Сообщение #10


меркантильный
***

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

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


Что-то недополнял задание.
Точка должна колебаться либо в вертикальной, либо в
горизонтальной плоскости (по выбору пользователя)/или же
одновременно в вертикальной и горизонтальной
(тогда как это реализовать-направлений движения-четыре
вверх/вниз/вправо/влево, а точка то одна)?


--------------------
Смысл откроется тебе. Красками играя
Жизнь предстанет как поток без конца и края.


В этом мире порой разбиваютсямечты
Но чтобы он стал другой Вдруг в него приходишь ТЫ...

После странствий и скитаний настают другие времена.
Старая волна уходит и приходит новая волна.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Accer
сообщение 29.12.2007 5:27
Сообщение #11


Новичок
*

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

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


А можно увидеть пример с простым движением точки туда обратно smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 29.12.2007 7:24
Сообщение #12


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Чужак @ 28.12.2007 22:02) *
Точка должна колебаться либо в вертикальной, либо в горизонтальной плоскости (по выбору пользователя)/или же одновременно в вертикальной и горизонтальной (тогда как это реализовать-направлений движения-четыре
вверх/вниз/вправо/влево, а точка то одна)?
Чужак, не фантазируй, про плоскости никто ничего не говорил. Точка колеблется вдоль горизонтальной оси (скажем, Х) и вертикальной оси (скажем, Y). Иначе говоря:
x=a cos w1(t-t1)
y=a cos w2(t-t2)
- как сказано в условии.
Accer, что тебе нужно связать? Математические координаты с экранными? Это можно сделать примерно так:
xs:=Round((x-x1)/(x2-x1)*GetMaxX);
ys:=Round((y2-y)/(y2-y1)*GetMaxY);
Если ты оформишь их как функции:
function Xs(x:real):integer;
begin
Xs:=(x-x1)/(x2-x1)*GetMaxX
end;

(и аналогично для Ys; здесь х1 - левая граница экрана, а х2 - правая, например х1=-а и х2=а)
- то, например, вот так можно нарисовать оси координат:
Line(x1,0,x2,0);
Line(0,y1,0,y2);

А так ставить саму точку:
PutPixel(Xs(x),Ys(y),White)

- и так ее стирать:
PutPixel(Xs(x),Ys(y),Black)


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Accer
сообщение 29.12.2007 8:01
Сообщение #13


Новичок
*

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

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


Спасибо, я попоробую сделать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Чужак
сообщение 29.12.2007 22:11
Сообщение #14


меркантильный
***

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

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


Цитата(Lapp @ 29.12.2007 7:24) *

Чужак, не фантазируй, про плоскости никто ничего не говорил. Точка колеблется вдоль горизонтальной оси (скажем, Х) и вертикальной оси (скажем, Y). Иначе говоря:
x=a cos w1(t-t1)
y=a cos w2(t-t2)
- как сказано в условии.

Я это и имел в виду. Слово "плоскость" не вполне уместна...
Цитата(Lapp @ 29.12.2007 7:24) *

Если ты оформишь их как функции:
function Xs(x:real):integer;
begin
Xs:=(x-x1)/(x2-x1)*GetMaxX
end;

(и аналогично для Ys; здесь х1 - левая граница экрана, а х2 - правая, например х1=-а и х2=а)

Нужны ли сдесь функции?
Цитата(Accer @ 29.12.2007 5:27) *

А можно увидеть пример с простым движением точки туда обратно smile.gif

Можно, увидишь... cool.gif
Я тут делаю программу, которая условно называется
"визуализатор синусоид". (В программе использован фрагмент кода volvo,
помещенный на форуме-линия вращалась в круге).

program VisualSinusoid;
Uses Crt, Graph;
Const r = 80;
Label 1;
Var gd, gm: Integer; t,X,Y: Real;
Begin
InitGraph(gd,gm,''); t:=0;
1: X:=280;
SetColor(15);
Circle(120,240,r);
SetColor(2);
Line(120, 240, Round(120+r*cos(t)), Round(240+r*sin(t)));
Line(Round(120+r*cos(t)), Round(240+r*sin(t)),
280, Round(240+r*sin(t)) );
X:=X+1; Y:=240+r*sin(t);
PutPixel(Round(X), Round(Y), 11);
Delay(300);
SetColor(0);
Line(120, 240, Round(120+r*cos(t)), Round(240+r*sin(t)));
Line(Round(120+r*cos(t)), Round(240+r*sin(t)),
280, Round(240+r*sin(t)));
t:=t+0.05;
if X>600 then begin ClearDevice; goto 1; end
until KeyPressed;
CloseGraph
End.



--------------------
Смысл откроется тебе. Красками играя
Жизнь предстанет как поток без конца и края.


В этом мире порой разбиваютсямечты
Но чтобы он стал другой Вдруг в него приходишь ТЫ...

После странствий и скитаний настают другие времена.
Старая волна уходит и приходит новая волна.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 29.12.2007 23:51
Сообщение #15


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Чужак @ 29.12.2007 22:11) *

Нужны ли сдесь функции?

Функции здесь не обязательны, но в высшей степени полезны с точки зрения логики. Очень правильно разделять экранные координаты и абстрактные (математические). Функции служат именно этой цели. Новички, как правило, работают непосредственно в экранных координатах, подстраивая свою задачу под них. В маленьких прогах это допустимо, но в больших приведет к проблемам.
Более того, во многих случаях удобно ввести еще один уровень..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Accer
сообщение 30.12.2007 17:11
Сообщение #16


Новичок
*

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

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


Компилятор не может найти Graph.tpu!!!!

Что делать unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 30.12.2007 17:24
Сообщение #17


Профи
****

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

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


Скопируй из папки Units файлы Graph.Tpu в папку BIN
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Accer
сообщение 30.12.2007 17:35
Сообщение #18


Новичок
*

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

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


GRAPH3.TPU был, его скопировал, не работает
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 30.12.2007 17:47
Сообщение #19


Профи
****

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

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


А сама прога там же (в BIN)?
А остальные тож скопировал (Graph.Tpu)?

Сообщение отредактировано: Client - 30.12.2007 17:48
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Accer
сообщение 30.12.2007 17:52
Сообщение #20


Новичок
*

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

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


ЕГО НЕТ blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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