Построить лемнискату — кривую, уравнение которой в полярных координатах - 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.

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

  1. Создается переменная a и присваивается ей значение 2.
  2. Вычисляется среднее значение координат x0 и y0 и присваивается переменной x0.
  3. Вычисляется среднее значение координат x0 и y0 и присваивается переменной y0.
  4. Вычисляется значение m как половина от среднего значения x0 и y0.
  5. Строится лемниската с помощью функции line. Первые две линии задают основную кривую, а последующие строки задают дополнительные ветви.
  6. Строка for i:=1 to 2*(trunc(a*sqrt(2))+1) do выполняет цикл, который повторяется столько раз, сколько необходимо для построения дополнительных ветвей.
  7. Внутри цикла строятся дополнительные ветви с помощью функции line.
  8. Строка str(i/2:0:1,s) выводит значение i на экран.
  9. Строка textout(x0+round(i*m/2),y0+10,s) выводит текст на экран.
  10. Строка textout(x0-round(i*m/2),y0+10,'-'+s) выводит текст на экран.
  11. Строка textout(x0-20,y0-round(i*m/2),s) выводит текст на экран.
  12. Строка textout(x0-25,y0+round(i*m/2),'-'+s) выводит текст на экран.
  13. Вычисляется значение f как угол, под которым находится текущая точка на кривой относительно начальной точки.
  14. Если значение cos(2*f) больше или равно нулю, то строятся дополнительные ветви кривой.
  15. Значение r вычисляется как длина дуги окружности, соответствующей углу f.
  16. Значения x и y вычисляются как координаты точки на кривой.
  17. Устанавливается цвет пикселя с помощью функции setpixel.
  18. Значение f увеличивается на очень маленькое значение, чтобы перейти к следующей точке на кривой.

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


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

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

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