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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как программно вызвать BSOD? http://www.cyberforum.ru/cpp-beginners/thread823483.html
Привет Собственно вопрос в названии темы: как сделать универсальный код, вызывающий BSOD на WinXP-Win7 или же как сделать фальшивый БСОД: просто картинка на весь экран, чтобы невозможно было вызвать диспетчер и прочее и закрыть картинку с БСОДом?
C++ Литература для графического интерфейса Здравствуйте, у меня есть вопрос. Вот объясните, например я изучаю С++, но там консольные приложения, а как потом писать оконные? Как можно выучить их? Какая то литература есть или что? Просто я не понимаю в WinForms всякие System. и тд. Объясните пожалуйста, как это все учится. Добавлено через 1 минуту Или для большего понимания лучше С# изучить? http://www.cyberforum.ru/cpp-beginners/thread823475.html
C++ Сетевые библиотеки для DOS
Доброе время суток, знает ли кто-нибудь библиотеки(C++) для работы в сети под дос(и если да, то заодно инструкции к ним), необходимо написать программу для отправки сообщения на e-mail, следовательно необходимо осуществить передачу данных по протоколу smtp. И еще один вопрос, если кто-то работал(ет) с ms-dos или freedos, объясните как в принципе подключиться к сети, зная логин и пароль от...
Нужно чтобы принимал минус перед нулем C++
Если ввести -00043 то работает, а вот если -000000000000000000000000000005353 то нет, потому что берет минус и первые 16 нолей и пишет что больше 16 символов. Как сделать чтобы он так же отбрасывал нули но принимал минус?(Если ввести без минуса то нули отбрасываются и все работает)Вот код: #include <iostream> #include <stdio.h> #include <conio.h> #include <locale.h> char * d(char * s) { ...
C++ Двойная диспетчеризация :) http://www.cyberforum.ru/cpp-beginners/thread823451.html
Здорова! Я тут от пытаюсь понять такое понятие взаимодействия классов или хз как назвать, вообщем что такое двойная диспетчеризация. Так сказать. 4 статьи как бы так бегло прочитал но никак нимогу врубиться, что это такое. Кто может простыми словами объяснить, что это такое? Добавлено через 49 секунд Щас голова тяжолая фиг шо варит :) Добавлено через 1 минуту И еще хочу попытаться...
C++ Матрица переходов. Транслятор Здравствуйте! Пишу курсовик (транслятор с языка С на язык ASM). Подскажите пожалуйста как правильно пользоваться сей вещью (матрица переходов), ибо в методичке ничего толкового не написано. Список лексем получил, а что дальше делать ;)? Добавлено через 41 минуту Если конкретнее то нужно рассказать про "Матрицу переходов конечного автомата". Ещё непонятно какие состояния нужно брать и... подробнее

Показать сообщение отдельно
3def
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 20

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

01.04.2013, 07:30. Просмотров 947. Ответов 9
Метки (Все метки)

В общем следующая проблема: кубик должен крутиться вокруг начала координат, но он странно искажается и "убегает". Помогите пожалуйста. Делал через матрицы поворота.

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
#include <iostream> 
#include <TxLib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
 
double a=3.1415/90;
double coord[8][3]= {{250, 250, 100},
                     {350, 250, 100},
                     {350, 150, 100},
                     {250, 150, 100},  
                     {250, 250, -100},
                     {350, 250, -100},
                     {350, 150, -100},
                     {250, 150, -100}};
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();
  
  txSetPixel(coord[0][0]/*+x*/, coord[0][1]/*+y*/, TX_WHITE);
  txSetPixel(coord[1][0]/*+x*/, coord[1][1]/*+y*/, TX_WHITE);
  txSetPixel(coord[2][0]/*+x*/, coord[2][1]/*+y*/, TX_WHITE);
  txSetPixel(coord[3][0]/*+x*/, coord[3][1]/*+y*/, TX_WHITE);
  txSetPixel(coord[4][0]/*+x*/, coord[4][1]/*+y*/, TX_WHITE);
  txSetPixel(coord[5][0]/*+x*/, coord[5][1]/*+y*/, TX_WHITE);
  txSetPixel(coord[6][0]/*+x*/, coord[6][1]/*+y*/, TX_WHITE);
  txSetPixel(coord[7][0]/*+x*/, coord[7][1]/*+y*/, TX_WHITE);
  
  txLine(coord[0][0]/*+x*/, coord[0][1]/*+y*/, coord[1][0]/*+x*/, coord[1][1]/*+y*/);
  txLine(coord[1][0]/*+x*/, coord[1][1]/*+y*/, coord[2][0]/*+x*/, coord[2][1]/*+y*/);
  txLine(coord[2][0]/*+x*/, coord[2][1]/*+y*/, coord[3][0]/*+x*/, coord[3][1]/*+y*/);
  txLine(coord[3][0]/*+x*/, coord[3][1]/*+y*/, coord[0][0]/*+x*/, coord[0][1]/*+y*/);
  txLine(coord[4][0]/*+x*/, coord[4][1]/*+y*/, coord[5][0]/*+x*/, coord[5][1]/*+y*/);
  txLine(coord[5][0]/*+x*/, coord[5][1]/*+y*/, coord[6][0]/*+x*/, coord[6][1]/*+y*/);
  txLine(coord[6][0]/*+x*/, coord[6][1]/*+y*/, coord[7][0]/*+x*/, coord[7][1]/*+y*/);
  txLine(coord[7][0]/*+x*/, coord[7][1]/*+y*/, coord[4][0]/*+x*/, coord[4][1]/*+y*/);
  txLine(coord[0][0]/*+x*/, coord[0][1]/*+y*/, coord[4][0]/*+x*/, coord[4][1]/*+y*/);
  txLine(coord[1][0]/*+x*/, coord[1][1]/*+y*/, coord[5][0]/*+x*/, coord[5][1]/*+y*/);
  txLine(coord[2][0]/*+x*/, coord[2][1]/*+y*/, coord[6][0]/*+x*/, coord[6][1]/*+y*/);
  txLine(coord[3][0]/*+x*/, coord[3][1]/*+y*/, coord[7][0]/*+x*/, coord[7][1]/*+y*/);
}
 
void ox()
{
     a = a+0.5*a;
     for(int n=0; n<8; n++)
     {
                     coord[n][0] = coord[n][0]*x[0][0]+coord[n][1]*x[1][0]+coord[n][2]*x[2][0];
                     coord[n][0] = coord[n][1]*x[0][1]+coord[n][1]*x[1][1]+coord[n][2]*x[2][1];
                     coord[n][0] = coord[n][2]*x[0][2]+coord[n][1]*x[1][2]+coord[n][2]*x[2][2];                     
     }
}
 
void oz()
{
     a = a+0.5*a;
     for(int n=0; n<8; n++)
     {
                     coord[n][0] = coord[n][0]*z[0][0]+coord[n][1]*z[1][0]+coord[n][2]*z[2][0];
                     coord[n][1] = coord[n][1]*z[0][1]+coord[n][1]*z[1][1]+coord[n][2]*z[2][1];
                     coord[n][2] = coord[n][2]*z[0][2]+coord[n][1]*z[1][2]+coord[n][2]*z[2][2];                     
             
     }
}
 
void oy()
{
     a = a+0.5*a;
     for(int n=0; n<8; n++)
     {
             
                     coord[n][0] = coord[n][0]*y[0][0]+coord[n][1]*y[1][0]+coord[n][2]*y[2][0];
                     coord[n][1] = coord[n][1]*y[0][1]+coord[n][1]*y[1][1]+coord[n][2]*y[2][1];
                     coord[n][2] = coord[n][2]*y[0][2]+coord[n][1]*y[1][2]+coord[n][2]*y[2][2];                     
             
     }
}
 
void ox1()
{
     a = a-0.5*a;
     for(int n=0; n<8; n++)
     {
                     coord[n][0] = coord[n][0]*x[0][0]+coord[n][1]*x[1][0]+coord[n][2]*x[2][0];
                     coord[n][1] = coord[n][1]*x[0][1]+coord[n][1]*x[1][1]+coord[n][2]*x[2][1];
                     coord[n][2] = coord[n][2]*x[0][2]+coord[n][1]*x[1][2]+coord[n][2]*x[2][2];                     
     }
}
 
void oz1()
{
     a = a-0.5*a;
     for(int n=0; n<8; n++)
     {
                     coord[n][0] = coord[n][0]*z[0][0]+coord[n][1]*z[1][0]+coord[n][2]*z[2][0];
                     coord[n][1] = coord[n][1]*z[0][1]+coord[n][1]*z[1][1]+coord[n][2]*z[2][1];
                     coord[n][2] = coord[n][2]*z[0][2]+coord[n][1]*z[1][2]+coord[n][2]*z[2][2];                     
             
     }
}
 
void oy1()
{
     a = a-0.5*a;
     for(int n=0; n<8; n++)
     {
             
                     coord[n][0] = coord[n][0]*y[0][0]+coord[n][1]*y[1][0]+coord[n][2]*y[2][0];
                     coord[n][1] = coord[n][1]*y[0][1]+coord[n][1]*y[1][1]+coord[n][2]*y[2][1];
                     coord[n][2] = coord[n][2]*y[0][2]+coord[n][1]*y[1][2]+coord[n][2]*y[2][2];                     
             
     }
}
 
int main()
{
    char c;
txCreateWindow(600, 400);
txSetDefaults();
txSetColor ( TX_WHITE, 3);
txSetFillColor (TX_BLACK);
while(c!=27)
{
             draw();
             if(c == 'w')
             {
                  a = a+0.5*a;
                  ox();
             }
             if(c == 'a')
             {
                  a = a+0.5*a;
                  oy();
             }
             if(c == 'q')
             {
                  a = a+0.5*a;
                  oz();
             }
             if(c == 's')
             {
                  a = a-0.5*a;
                  ox();
             }
             if(c == 'd')
             {
                  a = a-0.5*a;
                  oy();
             }
             if(c == 'e')
             {
                  a = a-0.5*a;
                  oz();
             }
             c = getch();
}
getch();
 
return 0;
}
Добавлено через 2 часа 10 минут
...

Добавлено через 19 часов 53 минуты
Похоже, никто не поможет
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru