Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [pascal] графика. движущийся рисунок, иллюзия движения рисунка-кардиоида 
V
    Опции темы
ohucheni
  Дата 11.11.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.12.2008
Где: Щелково

Репутация: нет
Всего: нет



помогите пожалуйста доделать программу, которая должна осуществить движение графика-кардиоиды заданной параметрически
X = a*cos(t)*(1+cos(t)),
Y = a*sin(t)*(1+cos(t)), a>0, tЄ[0,2пи).
движение должно осуществляться от начала координат  до точек A,B,C,D, расположенных на осях равноудаленно от начала координат . причем движение надо сделать с поворотом этого графика на 90 градусов и с уменьшением масштаба в 1,5 раза по оси Х smile
т.е. его надо двигать поступательно по оси от начала координат на расстояние дельта вверх/вниз/влево/вправо при этом одновременно вращая его и изменяя масштаб!! smile  
для наглядности выложил рисунок.
и программа которая выводит этот график и
осуществляет поворот осей координат на 90 градусов и сжимает по горизонтальной оси Х в 1.5 раза. в ней остается доделать движение, описанное выше smile 
Код

Uses CRT, Graph;
 Var d,m:integer;
          a, x, y, t:real;
 Begin
 InitGraph(d,m,'C:\TP7\BGI');  {tut pomenyat' na vash adres papki "BGI" v pascal'e  dlya inicializacii grafiki}
SetColor (5);
Line(0, 240, 640, 240);
Line(320, 0, 320, 480);
t:=0; a:=3;
While t<= 6.28 do
begin
x:=a*cos(t)*(1+cos(t));
y:= a * sin(t)*(1+cos(t));
{centr} PutPixel(round(x*15) + 320, round(y*15) +240, 15);
x:=a*cos(t+0.785)*(1+cos(t-0.785));
y:=a*sin(t+0.785)*(1+cos(t-0.785));
{sleva} putpixel(round(x*10)+170,round(y*15)+240,15);
x:=a*cos(t-0.785)*(1+cos(t+0.785));
y:= a * sin(t-0.785)*(1+cos(t+0.785));
{sprava} PutPixel(round(x*10) + 470, round(y*15) +240, 15);
x:=-a*cos(t)*(1+cos(t));
y:= -a * sin(t)*(1+cos(t));
{sverhu} PutPixel(round(x*10) + 320, round(y*15) +90, 15);
x:=a*cos(t)*(1+cos(t));
y:= a * sin(t)*(1+cos(t));
{snizu} PutPixel(round(x*10) + 320, round(y*15) +390, 15);
{x:= x+ 0.01; }
t := t + 0.005;
end;
readln;
CloseGraph;
 End.


Это сообщение отредактировал(а) ohucheni - 11.11.2009, 22:53

Присоединённый файл ( Кол-во скачиваний: 21 )
Присоединённый файл  ____________004.jpg 824,67 Kb
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0386 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.