Прошу прощения, что озаглавил тему, как "Задание на Pascal, Вопрос по литературе.". Тут уже далеко не о литературе =)
Доброго времени суток, друзья. Получил вот такое задание на выполнение:
Изобразить кривую R = a*cos(φ) + L.
Построение выполнить для a=L. Обеспечить вращение изображение в плоскости экрана против часовой стрелки с одновременным перемещением по средней горизонтали слева направо. Когда правый край экрана будет достигнут, появляются еще два изображения в верхнем и нижнем правых углах и перемещаются влево.
Как я понимаю, в выполнении этого задания мне понадобится знание Графики на Pascal. А такого у меня не имеется (изучение закончилось на динамической памяти). Теперь перехожу к вопросу. Какую литературу посоветуете?
Выбирайте:
http://rapidshare.com/files/155576345/05030703.doc.html
http://rapidshare.com/files/155576885/ __1050___1085___1080___1075___1072____1043___1088___1072___1092___1080___1082___
1072____1074__T_Pasc.html
В первой книге есть всё о графиках. И ещё по теме:
http://rusproject.narod.ru/article/polar2.htm#cardioid
Огромное спасибо.
Хм, немножко разобрался с графикой, но всё-таки не до конца. Нарисовать фигуру (как я понял, это кардиоида) я смог, а вот сделать так, чтобы она вертелась и перемещалась что-то никак не могу. Вот мой текст программы, рисующий, кардиоиду:
Может быть вот так попробовать сделать.
[x,y,1] - координаты точек вашей фигуры. Ввели третью (1) компоненту для переноса по осям.
Чтобы точки вращались, нужно сначала каждую точку нарисовать, затем закрасить ее (в черный), потом преобразовать, снова нарисовать...и т.д.
Повернуть и сместить точку на плоскости можно так:
. . . . . . |cosф sinф 0|
[x,y,1]*|-sinф cosф 0|
. . . . . . | . n . . . m . 1|
n - перенос по оси x,
m - по оси y
Я когда-то писал об этом в http://www.prepody.ru/topic1295.html?hl=&view=findpost&p=6986 теме.
Там небольшой примерчик.
Чтобы добавить вращение и перемещение - я бы изменил режим вывода изображения при котором повторный вывод данного изображения его стирает (функция SetWriteMode, судя из справки).
Затем добавил обработчик кнопок. Что-то вроде
для перемещения самое простое это после построения изображения воспользоваться процедурами GetImage/PutImage.
С поворотом так просто не разделаться. У меня получилось такое соотношение:
X=X[sub]0[/sub]+L*cos(A+1)
Y=Y[sub]0[/sub]+L*sin(A+1)
X и Y- это новые координаты точки (X[sub]0[/sub],Y[sub]0[/sub]). L- это расстояние от центра поворота до точки которую мы поворачиваем, а "A"- угол между горизонтальной осью экрана и прямой, которая проходит через центр поворота и точкой, которую поворачиваем.
Inspektor
Поворота может быть и не было (в той теме, на которую я дал ссылку, есть готовый пример с поворотом), но летающую тарелочку на фоне звездного неба я помню .
Но Фаронова лучше обсуждать в личных сообщениях .
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)