Построить кривую: Улитка Паскаля - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Построить кривую по заданному параметрическому представлению. Улитка Паскаля: x = a*(cost)^2+b*cost y = a*cost*sint+b*sintt Рассмотреть случаи b>=2a, a<b<2a, a>b. Вот текст программы, а мне нужно чтоб еще было на координатной плоскости штриховка. Очень срочно.. завтра сдавать нужно: cry: ПОЖАЛУЙСТА..

Решение задачи: «Построить кривую: Улитка Паскаля»

textual
Листинг программы
program Snail;
uses crt, GraphABC;
var A, B: real;
    MidX, MidY: Integer;
    g: Integer;
    t: Real;
    X, Y: Real;
    m:real;
    i:integer;
    n:integer;
    s:string;
begin
hidecursor;
writeln('vvedite A');
readln(A);
writeln('vvedite B');
readln(B);
clearwindow;
SetWindowTitle ('Кривая');
SetWindowSize(500,500);
MidX := WindowWidth div 2;
MidY := WindowHeight div 2;
if b>a then
 begin
  m:=(MidX-30)/(2*b);
  n:=trunc(2*b)+1;
 end
else
 begin
  m:=(MidX-30)/(2*a);
  n:=trunc(2*a)+1;
 end;
for i:=1 to n do
 begin
  str(i,s);
  textout(MidX+round(i*m)+5,MidY+10,s);
  textout(MidX-round(i*m)+5,MidY+10,'-'+s);
  textout(MidX-20,MidY+round(i*m),s);
  textout(MidX-20,MidY-round(i*m),'-'+s);
  line(MidX+round(i*m),0,MidX+round(i*m),2*MidY);
  line(MidX-round(i*m),0,MidX-round(i*m),2*MidY);
  line(0,Midy+round(i*m),2*MidX,Midy+round(i*m));
  line(0,Midy-round(i*m),2*MidX,Midy-round(i*m));
 end;
textout(MidX+4,MidY+10,'0');
setpenwidth(3);
Line(0, MidY, WindowWidth, MidY);
Line(MidX, 0, MidX, WindowHeight);
setpencolor(clRed);
for g := 0 to 360 do
  begin
   t := g * Pi / 180;
   X := MidX + m*A * Sqr(Cos(t)) + m*B * Cos(t);
   Y := MidY + m*A * Cos(t) * Sin(t) + m*B * Sin(t);
   if g = 0 then MoveTo(Round(X), Round(Y))
   else LineTo(Round(X), Round(Y));
 end;
end.

Объяснение кода листинга программы

  1. Объявление переменных: A, B (считаются значения), MidX, MidY, g, t, X, Y, m, i, n, s, a, b.
  2. Установка размера и положения окна, а также скрытие курсора.
  3. Проверка, какое из значений A или B больше, и в зависимости от этого вычисление значений m и n.
  4. Цикл по i от 1 до n, который выводит на экран точки и линии, соответствующие координаты которых вычисляются как MidX±round(im) и MidY±round(im).
  5. Вывод на экран чисел 0 и координат (MidX, MidY).
  6. Вывод на экран окружности с центром в (MidX, MidY) и радиусом mA и mB, где g принимает значения от 0 до 360.
  7. Для каждого значения g вычисляются значения X и Y, и если g=0, то выполняется команда MoveTo(Round(X), Round(Y)), иначе выполняется команда LineTo(Round(X), Round(Y)).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5
Похожие ответы