Построить пирамиду, в основании которой лежит правильный десятиугольник - Turbo Pascal

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

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

построить пирамиду, в основании которой лежит правильный десятиугольник. Фигура должна быть синего цвета и вращаться против часовой стрелки.

Решение задачи: «Построить пирамиду, в основании которой лежит правильный десятиугольник»

textual
Листинг программы
uses graph,crt;
{принадлежность точки треугольнику}
function prin(a,b,c,t:pointtype):boolean;
function s2(a,b,c:pointtype):real;{удвоенная площадь треугольника}
begin
s2:=(a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y);
end;
var f1,f2,f3:real;
begin
f1:=s2(t,a,b);
f2:=s2(t,b,c);
f3:=s2(t,c,a);
prin:=(f1*f2<0)or(f2*f3<0);
end;
 
var xc,yc,a,b,h,i,x,y:integer;
    os:array[0..11] of pointtype;{массив точек основания}
    gr:array[1..10] of array[1..4] of pointtype;{массив граней}
    u,f:real;
begin
initgraph(xc,yc,'');
a:=100;
b:=50;
h:=200;
xc:=getmaxX div 2;
yc:=getmaxY div 2+h div 2;
u:=pi/2;
f:=0;
repeat
cleardevice;
for i:=1 to 11 do
 begin
  os[i].x:=xc+round(a*cos(u+f));
  os[i].y:=yc-round(b*sin(u+f));
  u:=u+pi/5;
 end;
os[0]:=os[10];
setcolor(15);
setfillstyle(1,9);
for i:=1 to 10 do
 begin
  gr[i,1].x:=os[i].x;
  gr[i,1].y:=os[i].y;
  gr[i,2].x:=os[i+1].x;
  gr[i,2].y:=os[i+1].y;
  gr[i,3].x:=xc;
  gr[i,3].y:=yc-h;
  gr[i,4]:=gr[i,1];
  if((gr[i,1].y>yc)and(gr[i,2].y>yc)){все передние грани}
  or((gr[i,1].y>=yc)and(gr[i,2].y<=yc)
  and prin(gr[i,1],gr[i+1,1],gr[i+1,2],gr[i+1,3])){левая видимая грань}
  or((gr[i,1].y<=yc)and(gr[i,2].y>=yc)
  and prin(gr[i,1],gr[i-1,1],gr[i-1,2],gr[i-1,3])){правая видимая грань}
  then fillpoly(4,gr[i]);{рисум все видимые}
 end;
delay(50);
f:=f+0.1;
until keypressed;
readln
end.

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

  1. Используется библиотека graph для работы с графиками и crt для вывода точек на график.
  2. Определена функция prin, которая проверяет, принадлежит ли точка треугольнику.
  3. Определены функции s2, которые вычисляет удвоенную площадь треугольника.
  4. Объявлены переменные f1, f2, f3, которые будут использоваться для хранения результатов вычислений функций s2.
  5. Объявлены переменные xc, yc, a, b, h, i, x, y, которые будут использоваться для построения пирамиды.
  6. Вычисляются координаты точек основания os с помощью формулы x = xc + round(a cos(u + f)), y = yc - round(b sin(u + f)), где u = pi/2, а f = 0.
  7. Устанавливается цвет фона и заполнителя на 15 и 9 соответственно.
  8. Рисуются грани пирамиды с помощью функции fillpoly, где gr[i] — это массив граней пирамиды.
  9. Если условие выполняется, то рисуются все видимые грани пирамиды.
  10. Задержка в 50 мс делается с помощью функции delay.
  11. Переменная f увеличивается на 0.1 каждую секунду.
  12. Программа завершается после нажатия клавиши.

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


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

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

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