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