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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
#1

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

10.03.2010, 11:30. Просмотров 1428. Ответов 6
Метки нет (Все метки)

Что требуется: Выполнить кручение куба в виде каркаса по оси Z.
Язык выполнения - любой, единственное ограничение - не использовать OpenGL
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2010, 11:30     Создание крутящегося каркасного куба
Посмотрите здесь:

Создание куба и его вращение в компоненте Image или Shape - C++ Builder
Кто нить может подсказать как связать грани куба так чтобы его можно было вращать по вертикали и горизонтали? Я создал 8 точек с...

Создание куба и его вращение в компоненте Image или Shape - C++ Builder
Кто нить может подсказать как связать грани куба так чтобы его можно было вращать по вертикали и горизонтали? Я создал 8 точек с...

Вращение куба - C++
Возникают проблемы с циклами поворотов.Куб рисуется не полностью .Если кому -нибудь не сложно , подскажите в чем проблема. Часть программы...

Построение 3D куба - C++ Builder
Здравствуйте! Вопрос вот в чём: как в Embarcadero RAD Studio XE C++ замутить кубик посредством OpenGL или DirectX? Важно, чтобы его...

Вращения куба - C++
Куб должен быть с закрашенными сторонами. Вращения по x,y,z. Помогите!!!

длина ребра куба - C++
Добрый вечер, ув. программисты! Очень нужна Ваша помощь. Моему сыну в колледже по программированию задали на завтра написать две...

Найти объём куба - C++
Найти объём куба V = r3. Значения вводить и выводить с помощью объектов std::cin и std::cout.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
10.03.2010, 14:11     Создание крутящегося каркасного куба #2
Ну.. вот так как-то...
Написал на билдере. Если надо выложу проект..
Если чего не понятно - спрашивайте.
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);
}
//---------------------------------------------------------------------------
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
10.03.2010, 14:19     Создание крутящегося каркасного куба #3
Вот, проект, короче, на всякий случай.
Вложения
Тип файла: rar DrawCube3d.rar (177.9 Кб, 97 просмотров)
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
10.03.2010, 17:56  [ТС]     Создание крутящегося каркасного куба #4
Это здорово, и я готов сказать "Спасибо", т.к. это приближает меня к конечной цели, но есть некоторая поправка - Должны быть оси координат, а кручение куба должно быть реализовано в виде анимации, причем куб должен крутиться вокруг оси Z.
Примерно так
Миниатюры
Создание крутящегося каркасного куба  
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
10.03.2010, 21:41     Создание крутящегося каркасного куба #5
Вот переделал немного.
Так пойдет?
Вложения
Тип файла: rar DrawCube3d.rar (163.7 Кб, 70 просмотров)
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
11.03.2010, 11:26     Создание крутящегося каркасного куба #6
Цитата Сообщение от Darky
в данном случае в качестве оси Z выступает ось, направленная вверх.
Вы не могли бы подсказать, как сменить ось вращения на ту, что находится вверху?
было
RotateCube(0, 0, Angle);

надо
RotateCube(0, Angle, 0);

Только это не Z a Y

Во вложенном изменения.
Вложения
Тип файла: rar DrawCube3d.rar (163.8 Кб, 83 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2010, 14:21     Создание крутящегося каркасного куба
Еще ссылки по теме:

Найти объем куба - C++
как писать?? Дана длина ребра куба a. Найти объем куба V = a3 и площадь его поверхности S = 6·a2??

Задачка: Объем куба - C++ Builder
Составить программу для решения текстовой задачи Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого...

Дано ребро куба - C++
Помогите!!!! Нужно сделать в С++ 1. Дано ребро куба. Вычислить площадь поверхности шара, вписанного в него. 2. Найти сумму натуральных...

Найти площадь поверхности куба - C++
Дан объем шара вписанного в куб. Найти площадь поверхности куба. Реализовать в виде функции выполняемой в условно-бесконечном цикле &quot;Ввод...

Расчитать объём куба(по условию!) - C++
Здравствуйте дорогие форумчане, прошу помочь с расчетом объёма куба. Ниже прилагаю свои варианты, которые увы не смогли пройти...


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

Или воспользуйтесь поиском по форуму:
Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
24.03.2010, 14:21     Создание крутящегося каркасного куба #7
Сделал пирамиду. как просили.
Вложения
Тип файла: rar DrawCube3d.rar (163.3 Кб, 63 просмотров)
Yandex
Объявления
24.03.2010, 14:21     Создание крутящегося каркасного куба
Ответ Создать тему
Опции темы

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