IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Задание на Pascal, Вопрос по литературе.
Элио
сообщение 19.10.2008, 17:24
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 3
Регистрация: 19.10.2008
Город: Москва
Вы: студент



Прошу прощения, что озаглавил тему, как "Задание на Pascal, Вопрос по литературе.". Тут уже далеко не о литературе =)
Доброго времени суток, друзья. Получил вот такое задание на выполнение:

Изобразить кривую R = a*cos(φ) + L.
Построение выполнить для a=L. Обеспечить вращение изображение в плоскости экрана против часовой стрелки с одновременным перемещением по средней горизонтали слева направо. Когда правый край экрана будет достигнут, появляются еще два изображения в верхнем и нижнем правых углах и перемещаются влево.

Как я понимаю, в выполнении этого задания мне понадобится знание Графики на Pascal. А такого у меня не имеется (изучение закончилось на динамической памяти). Теперь перехожу к вопросу. Какую литературу посоветуете? (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Inspektor
сообщение 19.10.2008, 17:57
Сообщение #2


Аспирант
***

Группа: Активисты
Сообщений: 384
Регистрация: 11.6.2008
Город: Крыжополь
Учебное заведение: БГТУ
Вы: студент



Выбирайте:
Графика. От простого к сложному.
Графика в Turbo Pascal
В первой книге есть всё о графиках. И ещё по теме:
http://rusproject.narod.ru/article/polar2.htm#cardioid
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Элио
сообщение 21.10.2008, 5:07
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 3
Регистрация: 19.10.2008
Город: Москва
Вы: студент



Огромное спасибо.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Элио
сообщение 26.10.2008, 13:01
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 3
Регистрация: 19.10.2008
Город: Москва
Вы: студент



Хм, немножко разобрался с графикой, но всё-таки не до конца. Нарисовать фигуру (как я понял, это кардиоида) я смог, а вот сделать так, чтобы она вертелась и перемещалась что-то никак не могу. Вот мой текст программы, рисующий, кардиоиду:

Цитата
Program
Cardioida;
Uses
Crt, Graph;
Const
r=50;
Var
i:integer;
a,L:integer;
t:real;
Procedure Graphinterface;
Var
driver, mode:Integer;
Begin
driver:=detect;
Initgraph(driver,mode,'D:\tp7\BGI');
end;

Function x(t:real):real;
begin
x:=(L*cos(t)+a*cos(t)*cos(t));
end;

Function y(t:real):real;
begin
y:=(L*sin(t)+a*sin(t)*cos(t));
end;

Begin
t:=0; a:=2; L:=2;
Graphinterface;
repeat
putpixel(round(r*x(t)+31),round(r*y(t)+240),4);
t:=t+0.001;
until t>2*pi;
Readln;
CloseGraph;
End.

Долго пытался что-то изобразить, но так и не смог. Буду рад любым подсказкам в решении данной проблемы (IMG:style_emoticons/default/blush.gif)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
crazymaster
сообщение 27.10.2008, 6:39
Сообщение #5


Студент
**

Группа: Продвинутые
Сообщений: 240
Регистрация: 9.3.2007
Город: Нефтеюганск
Учебное заведение: ТУСУР
Вы: студент



Может быть вот так попробовать сделать.
[x,y,1] - координаты точек вашей фигуры. Ввели третью (1) компоненту для переноса по осям.
Чтобы точки вращались, нужно сначала каждую точку нарисовать, затем закрасить ее (в черный), потом преобразовать, снова нарисовать...и т.д.
Повернуть и сместить точку на плоскости можно так:
. . . . . . |cosф sinф 0|
[x,y,1]*|-sinф cosф 0|
. . . . . . | . n . . . m . 1|
n - перенос по оси x,
m - по оси y
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 27.10.2008, 18:21
Сообщение #6


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Я когда-то писал об этом в этой теме.
Там небольшой примерчик.
Чтобы добавить вращение и перемещение - я бы изменил режим вывода изображения при котором повторный вывод данного изображения его стирает (функция SetWriteMode, судя из справки).
Затем добавил обработчик кнопок. Что-то вроде
Код
uses crt;
begin
  repeat
    case readkey of
      #27:halt; {Нажата esc}
      '1':write('2'); {Нажата 1}
      '2':write('1'); {Нажата 2}
    else
      write('-'); {Все остальное}
    end;
  until keypressed;
end.

Помнится, по паскалю был хороший двухтомник Фаронова, в том числе там были подобные примеры.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Inspektor
сообщение 6.11.2008, 23:10
Сообщение #7


Аспирант
***

Группа: Активисты
Сообщений: 384
Регистрация: 11.6.2008
Город: Крыжополь
Учебное заведение: БГТУ
Вы: студент



для перемещения самое простое это после построения изображения воспользоваться процедурами 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"- угол между горизонтальной осью экрана и прямой, которая проходит через центр поворота и точкой, которую поворачиваем.
Цитата
Помнится, по паскалю был хороший двухтомник Фаронова, в том числе там были подобные примеры.

Не, поворота там точно нет и вообще слишком много воды в книге. ИМХО это скорее справочник, чем учебник, т.к. чтоб его до конца прочитать , надо иметь хорошую выдержку.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 8.11.2008, 12:21
Сообщение #8


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Inspektor
Поворота может быть и не было (в той теме, на которую я дал ссылку, есть готовый пример с поворотом), но летающую тарелочку на фоне звездного неба я помню (IMG:style_emoticons/default/smile.gif).
Но Фаронова лучше обсуждать в личных сообщениях (IMG:style_emoticons/default/wink.gif).
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 



- Текстовая версия Сейчас: 25.5.2025, 17:00

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru