Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2009, 10:38   #1
311
 
Регистрация: 23.01.2009
Сообщений: 6
Восклицание Помогите!!! Паскаль, графическая фигура!!!!

В прямом параллелепипеде провести сечение, проходящее через меньшую диагональ верхнего основания и одну из вершин нижнего основания.
311 вне форума Ответить с цитированием
Старый 23.01.2009, 15:20   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Нарисовал я тебе эту штуку, основные моменты пояснил. Все остальное в учебниках и Хэлпе Паскаля. Если будешь переписывать вручную, внимательнее, и не пиши, что программа не работает, сразу ищи ошибки у себя, потому что она работает.
Код:
uses crt,graph;
type TPoint=record
            x,y:integer;
            end;
var p1,p2,p3,p4:array[1..5]of TPoint;{массивы точек для рисования замкнутых фигур}
    gd,gm:integer;
    {k:char; {simvol vkluchenia sechenia}{это если сечение вызывать по нажатию клавиши}
    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;{ось Y}
x2:=x0-round((x1-x0)*0.71*0.71);y2:=y0+round((x1-x0)*0.71*0.71);{ось X}
x3:=x0;y3:=y0-230;{ось Z}
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');{подписи}
{Piramida}
{pered}
p1[1].x:=150;p1[1].y:=400;
p1[2].x:=310;p1[2].y:=360;
p1[3].x:=310;p1[3].y:=180;
p1[4].x:=150;p1[4].y:=220;
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:=220;
p2[2].x:=290;p2[2].y:=80;
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:=360;
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,260);
line(290,260,290,80);
line(290,260,450,220);
{Sechenie}
{k:=readkey; {если убрать скобки, то сечение будет появлять по нажатию клавиши Пробел}
if k=#32 then
begin}
p4[1].x:=290;p4[1].y:=80;
p4[2].x:=310; p4[2].y:=180;
p4[3].x:=150;p4[3].y:=400;
setcolor(12);
setlinestyle(1,0,1);
setfillstyle(3,12);
fillpoly(3,p4);
{end;}
setcolor(11);
setlinestyle(0,0,1);
line(150,220,310,180);{восстанавливаем закрытую переднюю линию}
readln;
Closegraph;
end.
puporev вне форума Ответить с цитированием
Старый 23.01.2009, 19:12   #3
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

склоняю голову, puporev
capta1n вне форума Ответить с цитированием
Старый 23.01.2009, 19:14   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Делать было нечего, а решать эти бесконечные массивы надоело. А тут вроде развлечение.
puporev вне форума Ответить с цитированием
Старый 24.01.2009, 03:39   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

полностью вас поддерживаю насчет
Цитата:
а решать эти бесконечные массивы надоело.
- "задолбало" русским языком
capta1n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фигура не поворачивает на клавишах! heavenly Мультимедиа в Delphi 8 10.11.2008 21:01
алгоритм преобразования сферических координат в декартовые. графическая иллюстрация. Денис 008 Мультимедиа в Delphi 4 05.08.2008 22:21
нужна графическая софтина trond Фриланс 2 24.11.2006 04:27