В правильной четырехугольной пирамиде провести сечение, проходящее через диагональ основания и наклоненное к плоскости основания под углом 30° — Pascal(Паскаль)

uses crt,graph;
type Point=record
           x,y:integer;
           end;
var gd,gm,a,h,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,i,b1,b2:integer;
    p1,p2,p3 :array[1..4] of Point;
    k1,k2:real;
begin
clrscr;
{nachalnaya tochka osnovanya}
x1:=200;y1:=250;
{storona, vysota}
a:=300;h:=300;
{ostalnye tochki osnovanya}
x2:=x1+a;y2:=y1;
x3:=x1-round(a*0.71*0.71)+a;y3:=y1+round(a*0.71*0.71);
x4:=x1-round(a*0.71*0.71);y4:=y3;
{centr osnovanya}
x5:=x4+round(a/2*(1+0.71*0.71));y5:=y1+round((y3-y1)/2);
{vershina}
x6:=x5;y6:=y5-h;
{vychislenie koordinat vershiny sechenia}
k1:=-arctan((h*0.92)/(a*0.71));
b1:=h;
k2:=arctan(pi/6);
b2:=0;
x7:=x5+round(((b1-b2)/(k2-k1))*0.71);
y7:=y5-round(((k2*b1-k1*b2)/(k2-k1))/0.71);
{risovanye}
gd:=detect;
initgraph(gd,gm,'');
{Sechenie}
p3[1].x:=x1;p3[1].y:=y1;
p3[2].x:=x7;p3[2].y:=y7;
p3[3].x:=x3;p3[3].y:=y3;
p3[4].x:=x1;p3[4].y:=y1;
setcolor(12);
setlinestyle(1,0,1);
setfillstyle(3,12);
fillpoly(4,p3);
{pered}
p1[1].x:=x4;p1[1].y:=y4;
p1[2].x:=x6;p1[2].y:=y6;
p1[3].x:=x3;p1[3].y:=y3;
p1[4].x:=x4;p1[4].y:=y4;
setcolor(15);
setlinestyle(0,0,1);
moveto(p1[1].x,p1[1].y);
for i:=1 to 4 do
lineto(p1[i].x,p1[i].y);
{pravo}
p2[1].x:=x3;p2[1].y:=y3;
p2[2].x:=x6;p2[2].y:=y6;
p2[3].x:=x2;p2[3].y:=y2;
p2[4].x:=x3;p2[4].y:=y3;
moveto(p2[1].x,p2[1].y);
for i:=1 to 4 do
lineto(p2[i].x,p2[i].y);
{vnytri}
setlinestyle(1,0,1);
line(x1,y1,x3,y3);
line(x2,y2,x4,y4);
line(x1,y1,x4,y4);
line(x1,y1,x2,y2);
line(x1,y1,x6,y6);
line(x5,y5,x6,y6);
line(x5,y5,x7,y7);
readln;
closegraph;
end.

Leave a Comment

3 + 3 =