Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2014, 21:50   #1
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию эвольвента на Delphi

Здравствуйте ! Я не шарю в Delphi, сделал прогу в паскале. Помогите переделать на Delphi , и исправить ошибки если есть. Я строю эвольвенту. Мне надо чтобы t менялось от "-"бесконечности до "+"бесконечности и вывести график на середину(т.е. правее). И еще там же построить график y=lnx. Вот что получилось :

Код:
uses graphABC;
var a,l,xc,yc,px,py,lny:integer;
    t,r,x,y:real;
begin
a:=2;
l:=2;
xc:=windowwidth div 2;
yc:=windowheight div 2;
t:=0;
px:=0;
while abs(xc-px)<=xc do//до горизонтальных краев экрана
 begin
  r:=a*cos(t)+l;
  x:=r*cos(t)+a*(t)*sin(t);
  px:=xc+round(x);
  y:=r*sin(t)-a*(t)*cos(t);
  py:=yc-round(y);
  setpixel(px,py,clRed);
  if x>0 then
   begin
    lny:=yc-round(ln(x));
    setpixel(px,lny,clBlue);
   end;
  t:=t+0.001;
 end;
end.

Последний раз редактировалось Zaraaa; 28.09.2014 в 21:56.
Zaraaa вне форума Ответить с цитированием
Старый 28.09.2014, 22:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Расслабься. Бесконечность не запрограммировать.
А эвольвенту строй от скажем 0 до 360.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.09.2014, 22:49   #3
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Кладём на форму Image, и Button. 2 раза кликаем по button, копируем внутрь процедуры код, чтоб получилось так
Код:
procedure TForm1.Button1Click(Sender: TObject);
var a,l,xc,yc,px,py:integer;
    t,r,x,y:real;
begin
a:=2;
l:=2;
xc:=Image1.width div 2;
yc:=Image1.height div 2;
t:=0;
px:=0;
while abs(xc-px)<=xc do//до горизонтальных краев экрана
 begin
  r:=a*cos(t)+l;
  x:=r*cos(t)+a*(t)*sin(t);
  px:=xc+round(x);
  y:=r*sin(t)-a*(t)*cos(t);
  py:=yc-round(y);
  Image1.Canvas.Pixels[px,py] := clRed;
  if x>0 then
   begin
    Image1.Canvas.Pixels[px,py] := clBlue;
   end;
  t:=t+0.001;
end;
end;
Компилируем, наслаждаемся.
indexx вне форума Ответить с цитированием
Старый 29.09.2014, 12:22   #4
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию

Код все верно, только вот что то не то....
Zaraaa вне форума Ответить с цитированием
Старый 29.09.2014, 12:23   #5
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию

график не такой
Zaraaa вне форума Ответить с цитированием
Старый 29.09.2014, 12:40   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты позаботился(лась) о переводе из градусов в радианы? cos() и sin() работают с радианами.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2014, 13:13   #7
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Мне не с чём сравнить, поэтому не могу сказать, что не так.
indexx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не изменяется интерфейс моей программы при переходе с Delphi 7 на Delphi 2010 Elvisnya Общие вопросы Delphi 3 28.04.2011 15:59
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54