0 / 0 / 0
Регистрация: 04.03.2009
Сообщений: 15
1

Призма с правильным девятиугольником в основании

09.02.2010, 14:31. Показов 1194. Ответов 0
Метки нет (Все метки)

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

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
program kg2;
uses crt,graph;
var gd,gm: integer;    {переменные для работы в графическом режиме}
    cv: array [0..7, 0..2] of real;    {массив с координатами вершин параллелепипеда}
    side: array [0..11, 0..1] of integer;   {массив ребер параллелепипеда}
    i: integer;   {переменная цикла}
    ch: char;   {значение нажатой клавиши}
{****************************************}
procedure draw;   {процедура вывод на экран, рисование контура параллелепипеда}
var x1,x2,y1,y2: integer;
begin
  for i:=0 to 11 do   {в цикле соединяем вершины параллелепипеда, вершины относительно центра экрана}
      begin
        x1:=round(cv[side[i,0],0]) + getmaxX div 2;
        y1:=getmaxY div 2 - round(cv[side[i,0],1]);
        x2:=round(cv[side[i,1],0]) + getmaxX div 2;
        y2:=getmaxY div 2 - round(cv[side[i,1],1]);
        line(x1,y1,x2,y2);   {выводим линии ребер}
      end;
end;
{****************************************}
procedure refXOZ_YOZ;    {процедура отражение относительно плоскостей XOZ и YOZ}
begin
  for i:=0 to 7 do    {в цикле находим новые координаты параллелепипеда}
      begin
        cv[i,1]:=-cv[i,1];
        cv[i,0]:=-cv[i,0];
      end;
end;
{****************************************}
procedure refXOZ_XOY;    {процедура отражение относительно плоскостей XOZ и XOY}
begin
  for i:=0 to 7 do    {в цикле находим новые координаты параллелепипеда}
      begin
        cv[i,1]:=-cv[i,1];
        cv[i,2]:=-cv[i,2];
      end;
end;
{****************************************}
procedure refXOY_YOZ;    {процедура отражение относительно плоскостей XOY и YOZ}
begin
  for i:=0 to 7 do    {в цикле находим новые координаты параллелепипеда}
      begin
        cv[i,2]:=-cv[i,2];
        cv[i,0]:=-cv[i,0];
      end;
end;
{****************************************}
procedure rotOX(ugol: real);   {процедура поворот вокруг оси OX}
var y,z: real;
begin
  for i:=0 to 7 do    {в цикле находим новые координаты параллелепипеда}
      begin
        y:=cv[i,1];
        z:=cv[i,2];
        cv[i,1]:=y*cos(ugol)-z*sin(ugol);
        cv[i,2]:=y*sin(ugol)+z*cos(ugol);
      end;
end;
{****************************************}
procedure rotOY(ugol: real);   {процедура поворот вокруг оси OY}
var x,z: real;
begin
  for i:=0 to 7 do    {в цикле находим новые координаты параллелепипеда}
      begin
        x:=cv[i,0];
        z:=cv[i,2];
        cv[i,0]:=x*cos(ugol)+z*sin(ugol);
        cv[i,2]:=-x*sin(ugol)+z*cos(ugol);
      end;
end;
{****************************************}
procedure rotOZ(ugol: real);   {процедура поворот вокруг оси OZ}
var x,y: real;
begin
  for i:=0 to 7 do    {в цикле находим новые координаты параллелепипеда}
      begin
        x:=cv[i,0];
        y:=cv[i,1];
        cv[i,0]:=x*cos(ugol)-y*sin(ugol);
        cv[i,1]:=x*sin(ugol)+y*cos(ugol);
      end;
end;
{****************************************}
begin    {основная программа}
 
  cv[0,0]:=0;     cv[0,1]:=0;    cv[0,2]:=0;   {описываем фигуру}
  cv[1,0]:=0;     cv[1,1]:=60;   cv[1,2]:=0;
  cv[2,0]:=100;   cv[2,1]:=60;   cv[2,2]:=0;
  cv[3,0]:=100;   cv[3,1]:=0;    cv[3,2]:=0;
  cv[4,0]:=0;     cv[4,1]:=0;    cv[4,2]:=80;
  cv[5,0]:=0;     cv[5,1]:=60;   cv[5,2]:=80;
  cv[6,0]:=100;   cv[6,1]:=60;   cv[6,2]:=80;
  cv[7,0]:=100;   cv[7,1]:=0;    cv[7,2]:=80;
 
  side[0,0]:=0;    side[0,1]:=1;   {ребра}
  side[1,0]:=1;    side[1,1]:=2;
  side[2,0]:=2;    side[2,1]:=3;
  side[3,0]:=3;    side[3,1]:=0;
  side[4,0]:=4;    side[4,1]:=5;
  side[5,0]:=5;    side[5,1]:=6;
  side[6,0]:=6;    side[6,1]:=7;
  side[7,0]:=7;    side[7,1]:=4;
  side[8,0]:=0;    side[8,1]:=4;
  side[9,0]:=1;    side[9,1]:=5;
  side[10,0]:=2;   side[10,1]:=6;
  side[11,0]:=3;   side[11,1]:=7;
 
  gd:=detect;
  initgraph(gd,gm, '');   {инициализация графического режима}
  if graphresult <> grok then halt(1);
  setbkcolor(black);   {цвет фона}
  setcolor(2);         {цвет рисунка}
  cleardevice;         {очистка экрана}
  rotOX(pi/12);
  rotOY(pi/12);
  rotOZ(pi/12);
  while ch<>#27 do   {пока не нажата клавиша "Esc"}
    begin
      cleardevice;      {очистка экрана}
      draw;             {вызываем процедуру draw}
      outtextXY(8,450,'keys "1"-"6" rotation');    {выводим текст на экран}
      outtextXY(8,460,'keys "7"-"9" reflection');
      outtextXY(8,470,'key "Esc" exit');
      ch:=readkey;   {значение нажатой клавиши}
      case ch of
             '1':rotOX(pi/15);   {вызываем процедуру вращения}
             '2':rotOX(-pi/15);
             '3':rotOY(pi/15);
             '4':rotOY(-pi/15);
             '5':rotOZ(pi/15);
             '6':rotOZ(-pi/15);
             '7':refXOZ_YOZ;     {вызываем процедуру отражения}
             '8':refXOZ_XOY;
             '9':refXOY_YOZ;
      end;
    end;
  closegraph;           {завершение работы в графическом режиме}
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2010, 14:31
Ответы с готовыми решениями:

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

Призма
1) Объем куба = 12. Найдите объем треугольной призмы, отсекаемой от него плоскостью, проходящей...

Прямая призма
Основание прямой призмы - прямоугольная трапеция, параллельные стороны которой равны 6м и 10м, а...

Прямая призма
Основой прямой призмы является треугольник со сторонами 15 см, 13 см, 4 см. Боковое ребро призмы...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2010, 14:31
Помогаю со студенческими работами здесь

Прямая призма
Всем привет. Помогите сделать: Основание прямой призмы треугольник со сторонами 5 и 3 и угла...

Правильная треугольная призма
Найти длину отрезка

Призма. Экструзивные формы
Разработка и реализация программы построения базовых экструзивных форм (полученных в результате...

Шестиугольная призма GeometryModel3D
Для отрисовки треугольной призмы использую следующий код: &lt;GeometryModel3D.Geometry&gt; ...

Опишите класс (четырехугольная призма)
Опишите класс Prizma4(четырехугольная призма) и метод, вычисляющий объем и поверхность призмы, в...

В цилиндр вписана n-сторонняя призма
В циллиндр вписана n-сторонняя призма. n задается пользователем. Есть ли примеры подобных программ?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru