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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Спирали Котеса на Pascal ABC 
:(
    Опции темы
RenatShaym
Дата 27.6.2019, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.6.2019

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



Доброго времени суток, форумчане! Помогите с проблемкой, пожалуйста! Мне необходимо написать программу, которая выводит в полярной или декартовой (на выбор) системе координат график спирали Котеса, окно должно масштабироваться. Единственная формула есть на википедии https://en.wikipedia.org/wiki/Cotes%27s_spiral
Вот что я намудрил по коду на Pascal ABC.Net

Код

Program Grafik_polar;
uses GraphABC;

const
    W = 800;
    H = 600;
    
var 
   x0,y0,x1,y1,i,j,m,k:integer;
   x,y,fi,r:real;
   s1,s2:string;

// Функция вычисления гиперболического косинуса   
function cosh(x:real):real;
begin
cosh:=(exp(x)+(exp(-x))/2);
end;  

// Функция вычисления гиперболического синуса
function sinh(x:real):real;
begin
sinh:=(exp(x)-(exp(-x))/2);;
end;

// Процедура вырисовки осей Оху с подписями и сеткой
procedure DrawPlotOxy;
begin 
SetWindowSize(W,H);
x0:=WindowWidth div 2;
y0:=WindowHeight div 2;
setPenWidth(2);
line(x0,0,x0,H); line(0,y0,W,y0); { оси координат }

// Вертикальные линии сетки и подписи на оси х
i:=0; j:=0; m:=0; SetPenWidth(1); SetPenColor(clGray);
while i<x0 do
 begin
 line(x0 + i,y0 + trunc(H/2),x0 + i,y0 - trunc(H/2)); // вправо от оси У
 line(x0 - i,y0 + trunc(H/2),x0 - i,y0 - trunc(H/2)); // влево от оси У
 s1:=IntToStr(j); s2:=IntToStr(m); // переводим числа в строки
 TextOut(x0 + i - 2, y0 + 4, s1); TextOut(x0 - i - 2, y0 + 4, s2); // выводим надписи вдоль оси Х
 i:=i+20; // увеличиваем шаг по оси Ох
 j:=j+1; m:=m-1;
 end;

// Горизонтальные линии сетки
i:=0;
while i<=y0 do
 begin
 line(0,y0 + i,W,y0 + i); // вверх относительно оси Ох
 line(0,y0 - i,W,y0 - i); // вниз относительно оси Ох
 i:=i+20;
 end;
 
end;

// Процедура вырисовки графика функции
procedure DrawFunc(a,n,eps:real);
begin
SetPenColor(clGreen); SetPenWidth(1);
fi:=0;
while fi<2*pi do
 begin
 r:=1/(a * exp(n*fi+eps));{уравнение в полярных координатах}
 x:=r * cos(fi);
 y:=r * sin(fi);
 x1:=trunc(x0 + x * k); y1:=trunc(y0 - y * k); { экранные координаты }
 Circle(x1,y1,1);
 fi:=fi+0.001;
 end;

end;

begin
DrawPlotOxy;
k:=20;
DrawFunc(10,1.5,1);
end.


Да это не тот код, но переделываю под формулу в википедии у меня не получается график. Как исправить данный код, чтоб все работало? Помогите, пожалуйста, очень надо!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

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

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

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

3. Оффтопить

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

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

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


 




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


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

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