Построить лемнискату — кривую, уравнение которой в полярных координатах - Pascal ABC
Формулировка задачи:
Нужен код задачи что на картинке. Буду очень признателен!
http://www.cyberforum.ru/attachment....1&d=1445798510
Решение задачи: «Построить лемнискату — кривую, уравнение которой в полярных координатах»
textual
Листинг программы
uses graphABC; var x0,y0,i,x,y:integer; r,a,m,f:real; s:string; begin a:=2; x0:=windowwidth div 2; y0:=windowheight div 2; m:=(x0-50)/(a*sqrt(2)); line(0,y0,2*x0,y0); line(x0,0,x0,2*y0); for i:=1 to 2*(trunc(a*sqrt(2))+1) do begin line(x0+round(i*m/2),y0-3,x0+round(i*m/2),y0+3); line(x0-round(i*m/2),y0-3,x0-round(i*m/2),y0+3); line(x0+3,y0-round(i*m/2),x0-3,y0-round(i*m/2)); line(x0+3,y0+round(i*m/2),x0-3,y0+round(i*m/2)); str(i/2:0:1,s); textout(x0+round(i*m/2),y0+10,s); textout(x0-round(i*m/2),y0+10,'-'+s); textout(x0-20,y0-round(i*m/2),s); textout(x0-25,y0+round(i*m/2),'-'+s); end; f:=0; while f<=2*pi do begin if cos(2*f)>=0 then begin r:=a*sqrt(2*cos(2*f)); x:=x0+round(r*cos(f)*m); y:=y0-round(r*sin(f)*m); setpixel(x,y,clRed); end; f:=f+0.001; end; end.
Объяснение кода листинга программы
- Создается переменная
a
и присваивается ей значение 2. - Вычисляется среднее значение координат
x0
иy0
и присваивается переменнойx0
. - Вычисляется среднее значение координат
x0
иy0
и присваивается переменнойy0
. - Вычисляется значение
m
как половина от среднего значенияx0
иy0
. - Строится лемниската с помощью функции
line
. Первые две линии задают основную кривую, а последующие строки задают дополнительные ветви. - Строка
for i:=1 to 2*(trunc(a*sqrt(2))+1) do
выполняет цикл, который повторяется столько раз, сколько необходимо для построения дополнительных ветвей. - Внутри цикла строятся дополнительные ветви с помощью функции
line
. - Строка
str(i/2:0:1,s)
выводит значениеi
на экран. - Строка
textout(x0+round(i*m/2),y0+10,s)
выводит текст на экран. - Строка
textout(x0-round(i*m/2),y0+10,'-'+s)
выводит текст на экран. - Строка
textout(x0-20,y0-round(i*m/2),s)
выводит текст на экран. - Строка
textout(x0-25,y0+round(i*m/2),'-'+s)
выводит текст на экран. - Вычисляется значение
f
как угол, под которым находится текущая точка на кривой относительно начальной точки. - Если значение
cos(2*f)
больше или равно нулю, то строятся дополнительные ветви кривой. - Значение
r
вычисляется как длина дуги окружности, соответствующей углуf
. - Значения
x
иy
вычисляются как координаты точки на кривой. - Устанавливается цвет пикселя с помощью функции
setpixel
. - Значение
f
увеличивается на очень маленькое значение, чтобы перейти к следующей точке на кривой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д