Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вращение кубика вокруг начала координат - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как программно вызвать BSOD? http://www.cyberforum.ru/cpp-beginners/thread823483.html
Привет Собственно вопрос в названии темы: как сделать универсальный код, вызывающий BSOD на WinXP-Win7 или же как сделать фальшивый БСОД: просто картинка на весь экран, чтобы невозможно было вызвать...
C++ Литература для графического интерфейса Здравствуйте, у меня есть вопрос. Вот объясните, например я изучаю С++, но там консольные приложения, а как потом писать оконные? Как можно выучить их? Какая то литература есть или что? Просто я не... http://www.cyberforum.ru/cpp-beginners/thread823475.html
C++ Сетевые библиотеки для DOS
Доброе время суток, знает ли кто-нибудь библиотеки(C++) для работы в сети под дос(и если да, то заодно инструкции к ним), необходимо написать программу для отправки сообщения на e-mail, следовательно...
Нужно чтобы принимал минус перед нулем C++
Если ввести -00043 то работает, а вот если -000000000000000000000000000005353 то нет, потому что берет минус и первые 16 нолей и пишет что больше 16 символов. Как сделать чтобы он так же отбрасывал...
C++ Двойная диспетчеризация :) http://www.cyberforum.ru/cpp-beginners/thread823451.html
Здорова! Я тут от пытаюсь понять такое понятие взаимодействия классов или хз как назвать, вообщем что такое двойная диспетчеризация. Так сказать. 4 статьи как бы так бегло прочитал но никак нимогу...
C++ Матрица переходов. Транслятор Здравствуйте! Пишу курсовик (транслятор с языка С на язык ASM). Подскажите пожалуйста как правильно пользоваться сей вещью (матрица переходов), ибо в методичке ничего толкового не написано. ... подробнее

Показать сообщение отдельно
SDev
43 / 41 / 10
Регистрация: 15.03.2013
Сообщений: 89
03.04.2013, 09:35
держи. вращает. жмешь <a,b,g> или <A,B,G>. правда при смене оси вращения берет исходное положения куба.

C++
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#include <iostream> 
#include <TxLib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
double pi = 3.1415926535;
double h=2*pi/20;
double a=0,b=0,g=0;
 
double coord[8][3]= {{50, 150, 100},
                     {150, 150, 100},
                     {150, 50, 100},
                     {50, 50, 100},  
                     {50, 150, 00},
                     {150, 150, 00},
                     {150, 50, 00},
                     {50, 50, 00}};
double coord1[8][3];
 
double x[3][3] = {{1, 0, 0},
                   {0, cos(a), sin(a)},
                   {0, -sin(a),cos(a) }};
double y[3][3] = {{cos(a), sin(a), 0},
                   {-sin(a), cos(a), 0},
                   {0, 0, 1}}; 
double z[3][3] = {{cos(a), 0, sin(a)},
                   {0, 1, 0},
                   {-sin(a), 0, cos(a)}};
 
void draw()
{
  txClear();
  for(int n=0; n<8; n++)
  {
   coord1[n][0] = 200+coord1[n][0];
   coord1[n][1] = 200+coord1[n][1];
   coord1[n][2] = 200+coord1[n][2];
  }
 
  txSetPixel(coord1[0][0]/*+x*/, coord1[0][1]/*+y*/, TX_WHITE);
  txSetPixel(coord1[1][0]/*+x*/, coord1[1][1]/*+y*/, TX_WHITE);
  txSetPixel(coord1[2][0]/*+x*/, coord1[2][1]/*+y*/, TX_WHITE);
  txSetPixel(coord1[3][0]/*+x*/, coord1[3][1]/*+y*/, TX_WHITE);
  txSetPixel(coord1[4][0]/*+x*/, coord1[4][1]/*+y*/, TX_WHITE);
  txSetPixel(coord1[5][0]/*+x*/, coord1[5][1]/*+y*/, TX_WHITE);
  txSetPixel(coord1[6][0]/*+x*/, coord1[6][1]/*+y*/, TX_WHITE);
  txSetPixel(coord1[7][0]/*+x*/, coord1[7][1]/*+y*/, TX_WHITE);
  
  txLine(coord1[0][0]/*+x*/, coord1[0][1]/*+y*/, coord1[1][0]/*+x*/, coord1[1][1]/*+y*/);
  txLine(coord1[1][0]/*+x*/, coord1[1][1]/*+y*/, coord1[2][0]/*+x*/, coord1[2][1]/*+y*/);
  txLine(coord1[2][0]/*+x*/, coord1[2][1]/*+y*/, coord1[3][0]/*+x*/, coord1[3][1]/*+y*/);
  txLine(coord1[3][0]/*+x*/, coord1[3][1]/*+y*/, coord1[0][0]/*+x*/, coord1[0][1]/*+y*/);
  txLine(coord1[4][0]/*+x*/, coord1[4][1]/*+y*/, coord1[5][0]/*+x*/, coord1[5][1]/*+y*/);
  txLine(coord1[5][0]/*+x*/, coord1[5][1]/*+y*/, coord1[6][0]/*+x*/, coord1[6][1]/*+y*/);
  txLine(coord1[6][0]/*+x*/, coord1[6][1]/*+y*/, coord1[7][0]/*+x*/, coord1[7][1]/*+y*/);
  txLine(coord1[7][0]/*+x*/, coord1[7][1]/*+y*/, coord1[4][0]/*+x*/, coord1[4][1]/*+y*/);
  txLine(coord1[0][0]/*+x*/, coord1[0][1]/*+y*/, coord1[4][0]/*+x*/, coord1[4][1]/*+y*/);
  txLine(coord1[1][0]/*+x*/, coord1[1][1]/*+y*/, coord1[5][0]/*+x*/, coord1[5][1]/*+y*/);
  txLine(coord1[2][0]/*+x*/, coord1[2][1]/*+y*/, coord1[6][0]/*+x*/, coord1[6][1]/*+y*/);
  txLine(coord1[3][0]/*+x*/, coord1[3][1]/*+y*/, coord1[7][0]/*+x*/, coord1[7][1]/*+y*/);
}
 
void calcMatr(double a,double b,double g)
{
 x[0][0] = 1; x[0][1] =  0;     x[0][2] =  0;
 x[1][0] = 0; x[1][1] = cos(a); x[1][2] = sin(a);
 x[2][0] = 0; x[2][1] =-sin(a); x[2][2] = cos(a);
 
 y[0][0]= cos(b);  y[0][1]= sin(b); y[0][2]= 0;
 y[1][0]= -sin(b); y[1][1]= cos(b); y[1][2]= 0;
 y[2][0]= 0;       y[2][1]= 0;      y[2][2]= 1;
 
 z[0][0] = cos(g);  z[0][1] =  0; z[0][2] = sin(g);
 z[1][0] = 0;       z[1][1] = 1;  z[1][2] = 0;
 z[2][0] = -sin(g); z[2][1] =  0; z[2][2] =cos(g);
 
}
 
void ox()
{
     calcMatr( a,b,g);
     for(int n=0; n<8; n++)
     {
                     coord1[n][0] = coord[n][0]*x[0][0]+coord[n][1]*x[1][0]+coord[n][2]*x[2][0];
                     coord1[n][1] = coord[n][0]*x[0][1]+coord[n][1]*x[1][1]+coord[n][2]*x[2][1];
                     coord1[n][2] = coord[n][0]*x[0][2]+coord[n][1]*x[1][2]+coord[n][2]*x[2][2];                     
     }
}
 
void oz()
{
       calcMatr( a,b,g);
     for(int n=0; n<8; n++)
     {
                     coord1[n][0] = coord[n][0]*z[0][0]+coord[n][1]*z[1][0]+coord[n][2]*z[2][0];
                     coord1[n][1] = coord[n][0]*z[0][1]+coord[n][1]*z[1][1]+coord[n][2]*z[2][1];
                     coord1[n][2] = coord[n][0]*z[0][2]+coord[n][1]*z[1][2]+coord[n][2]*z[2][2];                     
             
     }
}
 
void oy()
{
      calcMatr( a,b,g);
     for(int n=0; n<8; n++)
     {
             
                     coord1[n][0] = coord[n][0]*y[0][0]+coord[n][1]*y[1][0]+coord[n][2]*y[2][0];
                     coord1[n][1] = coord[n][0]*y[0][1]+coord[n][1]*y[1][1]+coord[n][2]*y[2][1];
                     coord1[n][2] = coord[n][0]*y[0][2]+coord[n][1]*y[1][2]+coord[n][2]*y[2][2];                     
             
     }
}
 
int main()
{
    int c;
txCreateWindow(600, 600);
txSetDefaults();
txSetColor ( TX_WHITE, 3);
txSetFillColor (TX_BLACK);
c=0;
while(c!=27)
{
    c = getch();
             draw();
             if(c == 'a')
             {
                  a = a+h;
                  if( a < 0 )    a=2*pi+a;
                  if( a > 2*pi ) a=a-2*pi;
                  ox();
             }
             if(c == 'A')
             {
                  a = a-h;
                  if( a < 0 )    a=2*pi+a;
                  if( a > 2*pi ) a=a-2*pi;
                  ox();
             }
             if(c == 'b')
             {
                  b = b-h;
                  if( b < 0 )    b=2*pi+b;
                  if( b > 2*pi ) b=b-2*pi;
                  oy();
             }
             if(c == 'B')
             {
                   b = b+h;
                   if( b < 0 )    b=2*pi+b;
                   if( b > 2*pi ) b=b-2*pi;
                  oy();
             }
             if(c == 'g')
             {
                  g = g-h;
                  if( g < 0 )    g=2*pi+g;
                   if( g > 2*pi ) g=g-2*pi;
                  oz();
             }
             if(c == 'G')
             {
                  g = g+h;
                    if( g < 0 )    g=2*pi+g;
                   if( g > 2*pi ) g=g-2*pi;
                  oz();
             }
             
}
getch();
 
return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru