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