С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Programer101
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 48
1

Трехмерное преобразование с фигурой Параллелепипед

19.04.2015, 11:28. Просмотров 417. Ответов 1
Метки нет (Все метки)

Параллелепипед. Изменение масштаба по осям X,Y,Z и общее масштабирование по трем осям.
Есть готовая прога с кубом. Нужно переделать в параллелепипед. Может кто сделать? Надо к понедельнику (т.е. завтра). Сам тупо не успею - прога не моя(быстро разобраться не могу) и не могу паскаль на ноут поставить.
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
{$N+}
Program task3;
Uses Crt,Graph;
Const N=4; M=8;
Type
   matrN=array[1..N,1..N] of double;
   matrMN=array[1..M,1..N] of double;
{----------------------------------------------------------------------}
Var
   A,B :matrMN;
   AR1,AT: matrN;
 
   z:integer;
   grDriver,grMode:integer;
   fi:double;
   Key :char;
{------------------------------------------------------------------------}
Procedure MatMat(A:MatrMN;B:MatrN;Var Y:MatrMN);
var i,j,k:integer;
begin
  for i:=1 to M do for j:=1 to N do Y[i,j]:=0;
  for i:=1 to M do
     for j:=1 to N do
        for k:=1 to N do
          Y[i,j]:=Y[i,j]+A[i,k]*B[k,j];
end; { MatMat }
{------------------------------------------------------------------------}
Procedure GR1(c:MatrMN);
var k:integer; s:real;
begin
    k:=1;  s:=c[k,n]; MoveTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=2;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=3;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=4;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=1;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
 
    k:=5;  s:=c[k,n]; MoveTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=6;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=7;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=8;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=5;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
 
    k:=1;  s:=c[k,n]; MoveTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=5;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
 
    k:=2;  s:=c[k,n]; MoveTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=6;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
 
    k:=3;  s:=c[k,n]; MoveTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=7;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
 
    k:=4;  s:=c[k,n]; MoveTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
    k:=8;  s:=c[k,n]; LineTo(320+Trunc(c[k,1]/s),240+Trunc(c[k,2]/s));
  {}
end;
{------------------------------------------------------------------------}
{----------------------- Ћб*®ў*®© Ў«®Є -----------------------------------}
Begin          z:=100;    fi:=0.1;
  {A}  A[1 ,1]:=-z    ; A[1 ,2]:=z   ; A[1 ,3]:=z     ;   A[1 ,4]:=1 ;
  {B}  A[2 ,1]:=-z    ; A[2 ,2]:=z   ; A[2 ,3]:=-z    ;   A[2 ,4]:=1 ;
  {C}  A[3 ,1]:=z     ; A[3 ,2]:=z   ; A[3 ,3]:=-z    ;   A[3 ,4]:=1 ;
  {D}  A[4 ,1]:=z     ; A[4 ,2]:=z   ; A[4 ,3]:=z     ;   A[4 ,4]:=1 ;
 
 {A1}  A[5 ,1]:=-z    ; A[5 ,2]:=-z   ; A[5 ,3]:=z     ;   A[5 ,4]:=1 ;
 {B1}  A[6 ,1]:=-z    ; A[6 ,2]:=-z   ; A[6 ,3]:=-z    ;   A[6 ,4]:=1 ;
 {C1}  A[7 ,1]:=z     ; A[7 ,2]:=-z   ; A[7 ,3]:=-z    ;   A[7 ,4]:=1 ;
 {D1}  A[8 ,1]:=z     ; A[8 ,2]:=-z   ; A[8 ,3]:=z     ;   A[8 ,4]:=1 ;
{------------------------------------------------------}
   grDriver:=0; {grMode:=vgahi;}
   InitGraph(grDriver,GrMode,'\TP7\BGI');
   SetColor(white);
   {¬*ваЁж* AT}
   AT[1,1]:=1 ; AT[1,2]:=0 ; AT[1,3]:=0 ; AT[1,4]:=1/500;
   AT[2,1]:=0 ; AT[2,2]:=1 ; AT[2,3]:=0 ; AT[2,4]:=0;
   AT[3,1]:=0 ; AT[3,2]:=0 ; AT[3,3]:=1 ; AT[3,4]:=0;
   AT[4,1]:=sin(45); AT[4,2]:=-cos(45)*sin(35.26); AT[4,3]:=0 ; AT[4,4]:=1 ;{}
   {¬*ваЁж* AR}
     AR1[1,1]:=1 ; AR1[1,2]:=0 ;        AR1[1,3]:=0 ;       AR1[1,4]:=0 ;
     AR1[2,1]:=0 ; AR1[2,2]:=cos(0.1) ;  AR1[2,3]:=sin(0.1) ; AR1[2,4]:=0 ;
     AR1[3,1]:=0 ; AR1[3,2]:=-sin(0.1) ; AR1[3,3]:=cos(0.1) ; AR1[3,4]:=0 ;
     AR1[4,1]:=0 ; AR1[4,2]:=0 ;        AR1[4,3]:=0 ;       AR1[4,4]:=1 ;
 
   ClearDevice;
   MatMat(A,AR1,A); {ЇаҐ®Ўа*§®ў**ЁҐ}
   MatMat(A,AT,B); {Їа®ҐЄвЁа®ў**ЁҐ}
   GR1(B); {}
 
   repeat until keypressed;
   key:=readkey;
 
   repeat
   Case key of
     '1':begin  {Ё§¬Ґ*Ґ*ЁҐ ¬*бив*Ў*+}
          AR1[1,1]:=1 ; AR1[1,2]:=0 ; AR1[1,3]:=0 ; AR1[1,4]:=0 ;
          AR1[2,1]:=0 ; AR1[2,2]:=1 ; AR1[2,3]:=0 ; AR1[2,4]:=0 ;
          AR1[3,1]:=0 ; AR1[3,2]:=0 ; AR1[3,3]:=1 ; AR1[3,4]:=0 ;
          AR1[4,1]:=0 ; AR1[4,2]:=0 ; AR1[4,3]:=0 ; AR1[4,4]:=0.9 ;
 
          ClearDevice;; {®зЁбвЄ*}
          MatMat(A,AR1,A); {ЇаҐ®Ўа*§®ў**ЁҐ}
          MatMat(A,AT,B); {Їа®ҐЄвЁа®ў**ЁҐ}
          GR1(B); {}
         end;
 
     '2':begin  {Ё§¬Ґ*Ґ*ЁҐ ¬*бив*Ў*-}
          AR1[1,1]:=1 ; AR1[1,2]:=0 ; AR1[1,3]:=0 ; AR1[1,4]:=0 ;
          AR1[2,1]:=0 ; AR1[2,2]:=1 ; AR1[2,3]:=0 ; AR1[2,4]:=0 ;
          AR1[3,1]:=0 ; AR1[3,2]:=0 ; AR1[3,3]:=1 ; AR1[3,4]:=0 ;
          AR1[4,1]:=0 ; AR1[4,2]:=0 ; AR1[4,3]:=0 ; AR1[4,4]:=1.1 ;
 
          ClearDevice;; {®зЁбвЄ*}
          MatMat(A,AR1,A); {ЇаҐ®Ўа*§®ў**ЁҐ}
          MatMat(A,AT,B); {Їа®ҐЄвЁа®ў**ЁҐ}
          GR1(B); {}
         end;
 
     '3':begin  { povorot x+}
          AR1[1,1]:=1 ; AR1[1,2]:=0 ;        AR1[1,3]:=0 ;       AR1[1,4]:=0 ;
          AR1[2,1]:=0 ; AR1[2,2]:=cos(fi) ;  AR1[2,3]:=sin(fi) ; AR1[2,4]:=0 ;
          AR1[3,1]:=0 ; AR1[3,2]:=-sin(fi) ; AR1[3,3]:=cos(fi) ; AR1[3,4]:=0 ;
          AR1[4,1]:=0 ; AR1[4,2]:=0 ;        AR1[4,3]:=0 ;       AR1[4,4]:=1 ;
 
          ClearDevice;; {®зЁбвЄ*}
          MatMat(A,AR1,A); {ЇаҐ®Ўа*§®ў**ЁҐ}
          MatMat(A,AT,B); {Їа®ҐЄвЁа®ў**ЁҐ}
          GR1(B); {}
         end;
 
     '4':begin  { povorot y+}
          AR1[1,1]:=cos(fi)  ;  AR1[1,2]:=0 ; AR1[1,3]:=-sin(fi); AR1[1,4]:=0 ;
          AR1[2,1]:=0 ;         AR1[2,2]:=1;  AR1[2,3]:=0 ;       AR1[2,4]:=0 ;
          AR1[3,1]:=sin(fi)  ;  AR1[3,2]:=0 ; AR1[3,3]:=cos(fi) ; AR1[3,4]:=0 ;
          AR1[4,1]:=0 ;         AR1[4,2]:=0 ; AR1[4,3]:=0 ;       AR1[4,4]:=1 ;
 
          ClearDevice;; {®зЁбвЄ*}
          MatMat(A,AR1,A); {ЇаҐ®Ўа*§®ў**ЁҐ}
          MatMat(A,AT,B); {Їа®ҐЄвЁа®ў**ЁҐ}
          GR1(B); {}
         end;
 
   else
       begin
         AR1[1,1]:=1 ; AR1[1,2]:=0 ; AR1[1,3]:=0 ; AR1[1,4]:=0 ;
         AR1[2,1]:=0 ; AR1[2,2]:=1 ; AR1[2,3]:=0 ; AR1[2,4]:=0 ;
         AR1[3,1]:=0 ; AR1[3,2]:=0 ; AR1[3,3]:=1 ; AR1[3,4]:=0 ;
         AR1[4,1]:=0 ; AR1[4,2]:=0 ; AR1[4,3]:=0 ; AR1[4,4]:=1 ;
       end;
   end;{case}
 
   key:=readkey;
   until key='0';
 
   CloseGraph;
End.{ (TM) }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2015, 11:28
Ответы с готовыми решениями:

Трехмерное преобразование с фигурой Параллелепипед.
Трехмерные преобразования Составить программу, реализующую трехмерное...

Составить программу, реализующую трехмерное преобразование с фигурой
Здравствуйте!!! ( Всех с праздником :-)) ) Помогите довести прогу до лог....

Составить программу, реализующую трехмерное преобразование с фигурой Октаэдр
Помогите решить задание контрольной, давайте разберемся и составим программу...

Трехмерное отображение букв
Уважаемые форумчане!!! Обращаюсь к вам за помощью, так как деваться абсолютно...

Трехмерные преобразования с фигурой
Составить программу, реализующую трехмерное преобразование с фигурой. Для всех...

1
ZX Spectrum-128
Модератор
Эксперт Pascal/Delphi
4264 / 3091 / 3811
Регистрация: 05.06.2014
Сообщений: 15,514
19.04.2015, 11:50 2
Трехмерные преобразования с фигурой
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2015, 11:50

Построить изменяющийся параллелепипед
Такая вот задача: Построить на экране изображеие трехмерного параллелепипеда,с...

Вывести на экран монитора трехмерный параллелепипед
Вывести на экран монитора трехмерный параллелепипед, контур которого синий...

Вывести на экран монитора трехмерный параллелепипед
Вывести на экран монитора трехмерный параллелепипед, контур которого имеет...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru