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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2014, 00:21   #1
Nil09511
Пользователь
 
Регистрация: 11.11.2014
Сообщений: 13
По умолчанию Графика в Pascal ABC

Помогите переделать программу.
Начальная задача:
Построить спираль вокруг начала координат с n витками и внешним радиусом r; начальное направление спирали образует с осью OX угол альфа. Параметрическое представление спирали: x=rcost, y=rsint, r=t/2.
Вот код этой программы
Код:
uses
   graphABC;
var
   xc, yc, x, y, i, Scale : integer;
   Radius, CurrentRadius, CornerT : real;
   s: string;
begin
   writeln('Построение спирали Архимеда');
   writeln('Введите начальный угол t спирали');
   read(CornerT);
   CornerT := CornerT * pi / 180; {Градусы в радианы}
   xc := windowwidth div 2; {Положение оси абсцисс}
   yc := windowheight div 2; {Положение оси ординат}
   line(0, yc, 2 * xc, yc); {Рисование оси абсцисс}
   line(xc, 0, xc, 2 * yc); {Рисование оси ординат}
   Scale := 15; {масштаб}
   Radius := 15; {внешний радиус}
   for i := 1 to round(Radius) do begin {максимальное количество засечек в одну сторону}
     str(i, s);
     {if i mod 2 = 0 then begin}
     {засечки на оси Oy}
     line(xc - 3, yc - i * Scale, xc + 3, yc - i * Scale);{на полож y} 
     line(xc - 3, yc + i * Scale, xc + 3, yc + i * Scale); {на отриц y}
     {подпись оси Oy}
     textout(xc + 5, yc - i * Scale - 7, s);  {на положительных y}
     textout(xc + 5, yc + i * Scale - 7, '-' + s); {на отрицательных y}
     {засечки на оси Ox}
     line(xc + i * Scale, yc - 3, xc + i * Scale, yc + 3); {на полож x}
     line(xc - i * Scale, yc - 3, xc - i * Scale, yc + 3); {на отр x}
     {подпись оси Ox}
     textout(xc + i * Scale - 5, yc + 10, s); {на полож x}
     textout(xc - i * Scale - 7, yc + 10, '-' + s); {на отр x}
    {end;}
   end;
   {центр}
   textout(xc + 1, yc + 1, '0');
   {подписи концов осей}
   textout(xc + round(Radius * Scale), yc - 20, 'x');
   textout(xc - 13, yc - round(Radius * Scale) - 10, 'y');
   CurrentRadius := 0; {текуший радиус}
   setpencolor(clBlue);
   moveto(xc, yc);
   while CurrentRadius <= Radius do begin {рисование спирали пока внешний радиус не станет равен заданному}
      CurrentRadius := CornerT / 2;
      x := xc + round(Scale * CurrentRadius * cos(CornerT));
      y := yc - round(Scale * CurrentRadius * sin(CornerT));
      lineto(x, y);
      CornerT := CornerT + 0.1;
   end;
end.
А нужно чтобы помимо внешнего радиуса и начального угла спирали можно было задавать ещё и количество витков спирали. Для этого уравнения будут другие. Они есть здесь https://ru.wikipedia.org/wiki/%D0%90...B0%D0%BB%D1%8C
Nil09511 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
графика в Pascal ABC Анна_ Помощь студентам 1 30.03.2012 19:51
Графика Pascal ABC maxon56 Помощь студентам 2 24.04.2011 19:18