![]() |
[pascal]Graph
Как реализовать точку, движущуюся в заданном прямоугольнике(rectangle(x1,y1,x2,y2 ) ), чтобы она отскакивала от краев?
Начинает движение под углом A. |
Что непонятно, алгоритм отражения? Угол падения равен углу отражения (они рядом лежат через перпендикуляр к отражающей поверхности)
|
дворд он не про это, это он курсач пишет, сто пудов))) я по такой же теме в том году писал.
чувак, у те должна быть методичка смори как реализовывать граф. а так те нужно к математикам обращаться, уравнение получить |
>>движущуюся в заданном прямоугольнике(rectangle(x1,y1,x2,y2 ) )
при ударе об боковые стенки координата х меняется на противоположную, при ударе об нижнюю или верхнюю стенку y. >>дворд он не про это, это он курсач пишет, сто пудов))) я по такой же теме в том >>году писал. чувак, у те должна быть методичка смори как реализовывать граф. а так >>те нужно к математикам обращаться, уравнение получить а при чем тут графы? |
Да, графы тут непричем. Название темы, как я понимаю, от слова "графика"
|
ГЫ. Херасебе курсовые... у меня на первом курсе надо было написать язык прогграммирования, со сходными паскалю командами - тоесть полностью поддержка ООП, обращение к памяти... пришлось пас выучить досконально. На самом деле все действительно очень просто - выводишь уравнение движения(по х и по у), и потом выделяя целую часть из каждой координыты строишь точку. уравнения можно взять из линейной алгебры, если незнаешь как )))
|
Lexx, расскажи пожалуйста что у тебя за институт и факультет. Если стесняешься, можно в приватные сообщения.
|
У меня Белорусский государственный университет, факультет радиофизики и электроники. Специальность компьютерная безопасность. Кстати если есть желание - где то на bsu.by можно скачать электронные конспекты почти по всем предметам - линейная алгебра - 1 курс Березкина Л.Л. там ооочень хорошо распиана вся линейка и аналитическая геометрия.
|
Спасибо мне на самом деле было бы очень интересно почитать официальный сайт, если на нем размещены курсы учебных планов например и какие-то конспекты
|
Слово
Цитата:
Ну в идеале я ожидал хотя бы пару строк кода.. А тема ушла в обсуждение "какой я крутой, а ты лох". То что угол падения равен углу отражения это я и так знаю("от старшего брата"), пишу я не курсовую. Спасибо за напоминание. Спасибо за ответы. |
угу с графом на первом курсе в своё время веселились(хотя задание веселое попалось, реализовать посадку спутника на планету, увеличивая уменьшая тягу), ну это поофтопил чутка...
я раньше на с+ писал подобное, но доделланый код затерялся. С точкой сделать проще, чем с кругом. Как и написал ZaCo, меняешь x и y на противоположный.Например есть шаги dx и dy, вначале они равны по 1, при достигании максимому по например x2-1(так как точка будет иметь радиус=1), меняем dx=-1,это если по прямой летает, если под углом, то и соответствующий dy. Только в таком случае, фигурка летает под углом 45 градусов, а для разноообразного начала движения, использовал рандомное значения dx и dy (-1 или 1 для каждого) |
G1yuK ответил наиболее правильно.
Просто определяешь dx и dy dx:=sin(угол)*скорость; dy:=cos(угол)*скорость; а потом в цикле прибавляешь их к x и y x:=x+dx; y:=y+dy; if ((x<rect.left) or (x>rect.right)) then dx:=-dx; if ((y<rect.top) or (y>rect.bottom)) then dy:=-dy; и перерисовываешь точку That's it! |
Ну вот что-то написал, может кто-нибудь поможет дописать? Очень надо =(
Код:
uses crt,graph; |
вот этот кусок кода
Код:
det:=detect;Ещё ты писал что точка начинает двигаться под углом А. Но у тебя нигде нет ввода угла А. Так же немного не ясно, зачем функция lie. Она вроде как рисует прямоугольник вручную? |
Для угла 45гр добавь две переменные vx,vy:integer;
Код:
|
Цитата:
На угол мне уже пофик, лишбы двигалась точка, хотя, конечно, и угол не помешал бы. Цитата:
Xserg с п а с и б о!) Переделал вот так: Код:
p:=x1; vx:=trunc(sin(a))+3; |
Так, как я уже писал, остается вычислить соприкасается ли Удав и точка...
Чтобы мне сравнить координаты точки(он же зайчек) и удава, мне нужно чтобы ф-я возвращала в программу параметры? Правильно я написал? Что-то нет у меня радостного сообщения на экране "congrats!" Код:
uses crt,graph; |
Код:
if (k=1) thenТак же тебе надо синхронизировать передвижение зайца и удава. А то у тебя удав делает полный круг и заяц делает ход. Может хотя бы разбить те 4 цикла на 4 функции. Передвижение по нижней планке ,левой правой, верхней. И вызывать по определённому условию |
| Время: 11:27 |