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

uses crt,graph;
var p1,p2,p3,p4:array[1..5]of Pointtype;
    gd,gm:integer;
    i,x0,y0,x1,y1,x2,y2,x3,y3:integer;
begin
clrscr;
InitGraph(gd,gm,'');
{Osi}
x0:=200;y0:=240;
x1:=x0+300;y1:=y0;x2:=x0-round((x1-x0)*0.71*0.71);y2:=y0+round((x1-x0)*0.71*0.71);
x3:=x0;y3:=y0-230;
setlinestyle(0,0,1);
line(x0,y0,x1,y1);line(x0,y0,x2,y2);line(x0,y0,x3,y3);
OuttextXY(x1-5,y1-15,'Y');OuttextXY(x2-5,y2-15,'X');OuttextXY(x3+10,y3,'Z');
{Parallelepiped}
{Sechenie}
p4[1].x:=150;p4[1].y:=180;
p4[2].x:=290; p4[2].y:=40;
p4[3].x:=450;p4[3].y:=220;
p4[4].x:=310;p4[4].y:=400;
setcolor(12);
setlinestyle(1,0,1);
setfillstyle(3,12);
fillpoly(4,p4);
{pered}
setlinestyle(0,0,1);
p1[1].x:=150;p1[1].y:=400;
p1[2].x:=310;p1[2].y:=400;
p1[3].x:=310;p1[3].y:=180;
p1[4].x:=150;p1[4].y:=180;
p1[5].x:=150;p1[5].y:=400;
setcolor(11);
moveto(p1[1].x,p1[1].y);
for i:=1 to 5 do
lineto(p1[i].x,p1[i].y);
{verh}
p2[1].x:=150;p2[1].y:=180;
p2[2].x:=290;p2[2].y:=40;
p2[3].x:=450;p2[3].y:=40;
p2[4].x:=310;p2[4].y:=180;
setcolor(11);
moveto(p2[1].x,p2[1].y);
for i:=1 to 4 do
lineto(p2[i].x,p2[i].y);
{pravo}
p3[1].x:=450;p3[1].y:=40;
p3[2].x:=450;p3[2].y:=220;
p3[3].x:=310;p3[3].y:=400;
setcolor(11);
moveto(p3[1].x,p3[1].y);
for i:=1 to 3 do
lineto(p3[i].x,p3[i].y);
{vnutri}
setlinestyle(1,0,1);
line(150,400,290,220);
line(290,220,290,40);
line(290,220,450,220);
readln;
Closegraph
end.

Leave a Comment

2 + 8 =