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

Создание крутящегося каркасного куба - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Видео с монитора на удаленный монитор http://www.cyberforum.ru/cpp/thread102227.html
Сломался монитор у домашнего компа и хочу написать маленькую прогу для трансфера видео с этого бедняги на ноут под MacOS Сначала хотел определять RGB каждого пикселя и слать его по TCP, однако...
C++ Как узнать аппаратную конфигурацию компьютера средствами с++? Доброе время суток. как узнать аппаратную конфигурацию компьютера средствами с++? может кто кинет пример или название книги где можно почитать? http://www.cyberforum.ru/cpp/thread101391.html
C++ Ветвящийся список?
Для организации игровых объектов понадобилось написать хм... что то такое... список, но способный разветвляться в своих элементах. Например мы имеем 10 кнопок, на деле кнопка это картинка и текст -...
Curl и keep-alive C++
Возможно не тот раздел, но всё таки на С++ пишу :) Использую curl, необходимо без переподключения выполнить 2 запроса, используя keep-alive. В хедер добавил "Connection: Keep-Alive", выполнял...
C++ Наложение видео http://www.cyberforum.ru/cpp/thread101190.html
Здравствуйте. Заранее извиняюсь, если запостил не в тот раздел, просто вопрос достаточно обширный. Итак. Есть два видео(или видео и набор картинок). Нужно, чтобы программа наложила второе...
C++ Палитра к битмапу! Здравствуйте товарищи программисты! Нужна ваша помощь Я ничего не смыслю в С++, пытаюсь писать на Visual Studio 6.0, есть битмап, есть несколько видов палитр, которые в диалоговом окне отображены в... подробнее

Показать сообщение отдельно
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
10.03.2010, 14:11
Ну.. вот так как-то...
Написал на билдере. Если надо выложу проект..
Если чего не понятно - спрашивайте.
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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <complex.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
typedef complex<double>Complex;
struct C3DPoint
{
        double x;
        double y;
        double z;
};
//---------------------------------------------------------------------------
struct CCube
{
        C3DPoint Points[8];
};
//---------------------------------------------------------------------------
CCube Cube;
void InitCube()
{
        Cube.Points[0].x=-100;
        Cube.Points[0].y=-100;
        Cube.Points[0].z=-100;
        Cube.Points[1].x= 100;
        Cube.Points[1].y=-100;
        Cube.Points[1].z=-100;
        Cube.Points[2].x= 100;
        Cube.Points[2].y= 100;
        Cube.Points[2].z=-100;
        Cube.Points[3].x=-100;
        Cube.Points[3].y= 100;
        Cube.Points[3].z=-100;
        Cube.Points[4].x=-100;
        Cube.Points[4].y=-100;
        Cube.Points[4].z= 100;
        Cube.Points[5].x= 100;
        Cube.Points[5].y=-100;
        Cube.Points[5].z= 100;
        Cube.Points[6].x= 100;
        Cube.Points[6].y= 100;
        Cube.Points[6].z= 100;
        Cube.Points[7].x=-100;
        Cube.Points[7].y= 100;
        Cube.Points[7].z= 100;
}
//---------------------------------------------------------------------------
void RotateCube(double XAngle, double YAngle, double ZAngle)
{
        double Angle;
        Complex CurCoord;
        for(int i=0;i<8;i++)
        {
                Angle =  -(M_PI * XAngle) / 180;
                CurCoord=Complex(Cube.Points[i].y,Cube.Points[i].z);
                CurCoord*=std::polar(1.0, Angle);
                Cube.Points[i].y=real(CurCoord);
                Cube.Points[i].z=imag(CurCoord);
        }
 
        for(int i=0;i<8;i++)
        {
                Angle =  -(M_PI * YAngle) / 180;
                CurCoord=Complex(Cube.Points[i].x,Cube.Points[i].z);
                CurCoord*=std::polar(1.0, Angle);
                Cube.Points[i].x=real(CurCoord);
                Cube.Points[i].z=imag(CurCoord);
        }
 
        for(int i=0;i<8;i++)
        {
                Angle =  -(M_PI * ZAngle) / 180;
                CurCoord=Complex(Cube.Points[i].x,Cube.Points[i].y);
                CurCoord*=std::polar(1.0, Angle);
                Cube.Points[i].x=real(CurCoord);
                Cube.Points[i].y=imag(CurCoord);
        }
}
//---------------------------------------------------------------------------
void DrawCube(TCanvas * Canvas)
{
        TRect Rect = Canvas->ClipRect;
        Canvas->Brush->Color=clInfoBk;
        Canvas->FillRect(Rect);
        Canvas->Pen->Color=clRed;
        int HalfX=Rect.Width()/2;
        int HalfY=Rect.Height()/2;
        Canvas->MoveTo(HalfX+Cube.Points[0].x,HalfY+Cube.Points[0].y);
        for(int i=1;i<4;i++)
                Canvas->LineTo(HalfX+Cube.Points[i].x,HalfY+Cube.Points[i].y);
        Canvas->LineTo(HalfX+Cube.Points[0].x,HalfY+Cube.Points[0].y);
        Canvas->MoveTo(HalfX+Cube.Points[4].x,HalfY+Cube.Points[4].y);
        for(int i=4;i<8;i++)
                Canvas->LineTo(HalfX+Cube.Points[i].x,HalfY+Cube.Points[i].y);
        Canvas->LineTo(HalfX+Cube.Points[4].x,HalfY+Cube.Points[4].y);
        for(int i=0;i<4;i++)
        {
                Canvas->MoveTo(HalfX+Cube.Points[i].x,HalfY+Cube.Points[i].y);
                Canvas->LineTo(HalfX+Cube.Points[i+4].x,HalfY+Cube.Points[i+4].y);
        }
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        InitCube();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
        static int LastPos=TrackBar1->Position;
        RotateCube(LastPos-TrackBar1->Position, 0, 0);
        DrawCube(Image1->Canvas);
        LastPos=TrackBar1->Position;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar2Change(TObject *Sender)
{
        static int LastPos=TrackBar2->Position;
        RotateCube(0, LastPos-TrackBar2->Position, 0);
        DrawCube(Image1->Canvas);
        LastPos=TrackBar2->Position;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar3Change(TObject *Sender)
{
        static int LastPos=TrackBar3->Position;
        RotateCube(0, 0, LastPos-TrackBar3->Position);
        DrawCube(Image1->Canvas);
        LastPos=TrackBar3->Position;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
        DrawCube(Image1->Canvas);
}
//---------------------------------------------------------------------------
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru