Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
1

Вращение одного обьека вокруг другого

20.08.2013, 14:47. Показов 3712. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть сфера находящаяся в центре и сфера меньшего размера которая должна вращаться вокруг первой.
Не пойму как это сделать.
Добился того что Большая сфера рисуется, поверх нее рисуется Малая(другая) которая вращается вокруг своей оси и по идее вокруг Большой, но из-за неправильной отрисовки создается видимость что Малая крутится перед Большой.
Вопрос как добиться того что бы малая сфера вращалась вокруг большой.

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
#include <windows.h>
#include <gl/glut.h>
#include <cstdlib>
 
int angle=0,rad=0; 
 
void init(){
     glClearColor(0,0,0,0);
     }
void display(){
     glClear(GL_COLOR_BUFFER_BIT);
     glColor3f(1,1,0);
     glBegin(GL_LINES);
         glVertex3f(-50,0,0);
         glVertex3f(50,0,0);
         glVertex3f(0,-50,0);
         glVertex3f(0,50,0);
         glVertex3f(-25,-25,-50);
         glVertex3f(25,25,50);
     glEnd();
     
      glColor3f(1,0,0);
      glutWireSphere(20,40,40);
       glColor3f(1,1,1);
      glPushMatrix();
      glRotatef((GLfloat)angle,0,1,0);
      glTranslatef(25,0,0);   
      glRotatef((GLfloat)rad,0,1,0);
     glutWireSphere(10,20,20);
     
     glPopMatrix();
     
     glutSwapBuffers();
     }
void cangle(){
     angle=(angle+5)%360;
     rad=(rad+5)%360;
     Sleep(50);
     glutPostRedisplay();
     } 
     
void reshape(int w, int h){
     glViewport(0,0,(GLsizei) w, (GLsizei) h);
      glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
     glOrtho(-50,50,-50,50,-50,50);
      glMatrixMode(GL_MODELVIEW);
     glLoadIdentity();
     }
 
void mouse(int button,int state,int x,int y)
{
switch(button)
{
case GLUT_LEFT_BUTTON:
if (state==GLUT_DOWN) glutIdleFunc(cangle); break;
case GLUT_RIGHT_BUTTON:
if (state==GLUT_DOWN) glutIdleFunc(NULL); break;
}
}
 
int main(int argc, char *argv[])
{
    
    glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(650,650);
glutInitWindowPosition(100,100);
glutCreateWindow("Window name");
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(mouse);
glutMainLoop();
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2013, 14:47
Ответы с готовыми решениями:

Вращение планеты вокруг солнца, и вокруг своей оси
У меня есть Солнце, которое находиться в координатах(0.0.0), и нужно вращать планеты, как по...

Вращение примитива вокруг оси z
Здравствуйте! Необходимо повернуть квадрат вокруг оси z на заданный угол, по нажатию кнопки. (язык...

Вращение фигур вокруг своих вершин
Помогите пожалуйста с задачей. Есть трехмерная сцена. На ней имеют координаты три одинаковые...

Вращение объекта вокруг своей оси
Задаю вопрос впервые, так что попрошу не придираться к возможным ошибкам/недостатку инфы. Начал...

1
22 / 22 / 8
Регистрация: 20.04.2013
Сообщений: 103
22.08.2013, 02:42 2
исходник, еxe файл - 3.rar

Сделал на примере Куба.

Наш куб
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
void kub(){
    glBegin(GL_QUADS);                          
        glVertex3f(-1.0f, 1.0f, 1.0f);      //передня стенка   
        glVertex3f(-1.0f,-1.0f, 1.0f);              
        glVertex3f( 1.0f,-1.0f, 1.0f);          
        glVertex3f( 1.0f, 1.0f, 1.0f);
 
        glVertex3f(-1.0f, 1.0f, -1.0f);     //задня стенка
        glVertex3f(-1.0f,-1.0f, -1.0f);             
        glVertex3f( 1.0f,-1.0f, -1.0f);         
        glVertex3f( 1.0f, 1.0f, -1.0f);
 
        glVertex3f( 1.0f, 1.0f,-1.0f);      //права стенка
        glVertex3f( 1.0f,-1.0f,-1.0f);              
        glVertex3f( 1.0f,-1.0f, 1.0f);          
        glVertex3f( 1.0f, 1.0f, 1.0f);
 
        glVertex3f(-1.0f, 1.0f,-1.0f);      //права стенка
        glVertex3f(-1.0f,-1.0f,-1.0f);              
        glVertex3f(-1.0f,-1.0f, 1.0f);          
        glVertex3f(-1.0f, 1.0f, 1.0f);
 
        glVertex3f(-1.0f,-1.0f,-1.0f);      //нижня стенка
        glVertex3f(-1.0f,-1.0f, 1.0f);              
        glVertex3f( 1.0f,-1.0f, 1.0f);          
        glVertex3f( 1.0f,-1.0f,-1.0f);
 
        glVertex3f(-1.0f, 1.0f,-1.0f);      //нижня стенка
        glVertex3f(-1.0f, 1.0f, 1.0f);              
        glVertex3f( 1.0f, 1.0f, 1.0f);          
        glVertex3f( 1.0f, 1.0f,-1.0f);
    glEnd();
}
Вивод куба
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int DrawGLScene(GLvoid){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);                                 
    glLoadIdentity();
    glTranslatef(0.0f,0.0f,-20.0f);
    glRotatef(50.0f,0.0f,1.0f,0.0f);
    glColor3f(0.0f,0.3f,0.0f);
    kub();//первий куб
    glRotatef(rtri,0.0f,0.0f,1.0f);
    glTranslatef(0.0f,-5.0f,0.0f);//ми смещаем втарой куб по оси Y для того чтобы он крутился вокруг первого куба
    glColor3f(0.0f,0.0f,1.0f);
    kub();//втарой куб
    rtri+=0.02f;//рух втарого куба
    if(rtri>360.0f){rtri=0.0f;}
    return TRUE;
}
0
22.08.2013, 02:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2013, 02:42
Помогаю со студенческими работами здесь

Вращение вокруг сировой системы координат
Нужно сделать так, чтобы вращение осуществлялось вокруг не модельной системы координат, в той...

Вращение объекта вокруг другого объекта
Как сделать вращение объекта вокруг другого объекта? Например: создаём куб, затем внутри него...

Вращение равнобедренного треугольника вокруг центра экрана, и одновременно вокруг своего центра. (Turbo Pascal)
Задача в заголовке. Как вращать треугольник вокруг центра я примерно знаю (писали аналогичное для...

Вращение вокруг объекта
Добрый день. Как заставить один объект вращаться вокруг другого?


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru