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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
CruserD
0 / 0 / 0
Регистрация: 17.02.2011
Сообщений: 18
#1

Поправьте код. - C++

22.05.2011, 22:49. Просмотров 347. Ответов 1
Метки нет (Все метки)

Добрый вечер) не будите ли так любезны помочь с прогой ) нужно чтоб на экране были 10 планет ( нашей солнечной системы) у мну вылазиют только 4 из них и должны они крутиться по эллипсу ( ну или хотя бы по окружности тупо вокруг солнца ) Подправьте до рабочего состояния если не сложно буду очень благодарен.

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
// Моделирование сил притяжения
#include <cmath>
#include <GL/glut.h>
#pragma comment (lib, "OpenGL32.lib")
#pragma comment (lib, "Glu32.lib")
#pragma comment (lib, "Glaux.lib")
struct Particle
{ 
        float x;
        float y;
        float vx;
        float vy;
        float m;
};
 
const int N = 10;
 
Particle particles[N];
 
void display()
{
        glClear(GL_COLOR_BUFFER_BIT);
        glBegin(GL_POINTS);
        for (int i = 0; i < N; ++i)
                glVertex2f(particles[i].x, particles[i].y);
        glEnd();
 
        glutSwapBuffers();
}
void timer(int=0)
{
        for (int i = 0; i < N; ++i)//;
        {
                Particle &p0 = particles[i];
                for (int j = 0; j < N; ++j)//;
                {
                        if (j == i)
                                continue;
                        const Particle &p = particles[j];
                        float d = sqrt((p0.x - p.x) * (p0.x - p.x) + 
                                (p0.y - p.y) * (p0.y - p.y));
                        if (d > 2000)
                        {
                              p0.vx +=  0,1* p.m / d / d * (p.x - p0.x) / d;
                              p0.vy +=  0,1* p.m / d / d * (p.y - p0.y) / d; 
                        }
                }
                p0.x += p0.vx;
                p0.y += p0.vy;
        }
        display();
        glutTimerFunc(1, timer, 1);
}
int main(int argc, char **argv)
{
        particles[0].x = 100;
        particles[0].y = 100;
        particles[0].vx = 0;
        particles[0].vy = 0;
        particles[0].m = 100;
 
        particles[1].x = 105;
        particles[1].y = 100;
        particles[1].vx = 0,5;
        particles[1].vy = 0,;
        particles[1].m = 10;
 
        particles[2].x = 110;
        particles[2].y = 100;
        particles[2].vx = 0,2;
        particles[2].vy = 0;
        particles[2].m = 7;
 
        particles[3].x = 115;
        particles[3].y = 100;
        particles[3].vx = 0,15;
        particles[3].vy = 0;
        particles[3].m = 5;
 
        particles[4].x = 116;
        particles[4].y = 100;
        particles[4].vx = 0,15;
        particles[4].vy = 0;
        particles[4].m = 5;
 
        particles[5].x = 120;
        particles[5].y = 100;
        particles[5].vx = 0,15;
        particles[5].vy = 0;
        particles[5].m = 5;
 
        particles[6].x = 165;
        particles[6].y = 100;
        particles[6].vx = 0,15;
        particles[6].vy = 0;
        particles[6].m = 5;
 
        particles[7].x = 170;
        particles[7].y = 100;
        particles[7].vx = 0,15;
        particles[7].vy = 0;
        particles[7].m = 5;
 
        particles[8].x = 180;
        particles[8].y = 100;
        particles[8].vx = 0,15;
        particles[8].vy = 0;
        particles[8].m = 5;
 
        particles[9].x = 190;
        particles[9].y = 100;
        particles[9].vx = 0,15;
        particles[9].vy = 0;
        particles[9].m = 5;
 
 
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
        glutInitWindowSize(200, 200);
        glutInitWindowPosition(20, 810);
        glutCreateWindow("Gravitation");
        
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, 200, 200, 0, -1, 1);
        glutDisplayFunc(display);
        timer();
        glutMainLoop();
        return 0;
}
Добавлено через 4 часа 49 минут
и ещё есть вопрос о том как сделать приложением чтоб сразу запускалось=)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2011, 22:49     Поправьте код.
Посмотрите здесь:

Поправьте код - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; float *N (float **A) { float min=A , sum; ...

Поправьте код!!! - C++
Вчера весь вечер сидел, и не мог понять, почему программа выдает какой-то набор больших чисел? Вот код: #include &lt;iostream&gt; ...

Поправьте код... - C++
Помогите поправить код...не пойму в чем ошибка....программы разложения в ряд ln(x+1) #include &quot;iostream&quot; #include &quot;stdafx.h&quot; #include...

Поправьте код - C++
Снова где то портачу и не знаю где, поправьте кому не сложно #include &quot;iostream&quot; #include &lt;string.h&gt; using namespace std; ...

Поправьте Код - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream.h&gt; #include &lt;math.h&gt; int...

Поправьте код - C++
Мне нужно что бы в один файл записало рандомные числа с повторами, а потом из этого файла считывало в другой но уже с удаленными...

Поправьте пожалуйста код. - C++
Всем доброго времени суток! Вот написал программу, а на защиту мнезадали её переделать, использую dorehile. вот собственно текст программы ...

Поправьте пожалуйста код - C++
Выясните, какая из букв первая или последняя встречается в заданном слове чаще. #include &lt;iostream.h&gt; #include &lt;string.h&gt; ...

Поправьте пожалуйста код ... - C++
Вычислите длину самого короткого слова в предложении из трёх слов, разделённых пробелами. #include &lt;iostream.h&gt; #include...

Поправьте пожалуйста код - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; using namespace std; int main(int argc, char*...

функции,поправьте код пожалуста. - C++
Задание : описать функцию Repl(A,B), меняющую местами максимальные элементы матриц А и В произвольного порядка. Считать, что в каждой...

Поправьте код, а то чего-то возмущается... - C++
Поправьте код, а то чего-то возмущается. int Sum(int x, int step, int n) { if (n==1) return(x); else return(Sum(x,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
22.05.2011, 23:05     Поправьте код. #2
ммм. Код смотреть не буду,говорю сразу. Для вращения есть функция glRotate а для изменения радиуса glTranslate. Чтоб обеспечить вращение по нужному радиусу орбиты просто просчитай нужный радиус и сдвинь фигуру по одной из осей на нужный радиус. Потом вращай. Советую уроки nehe посмотреть. Там точно есть реализация этой задачи )

и раз не вмещается,значит нужно перенести всю красоту в глубь экрана. Тогда все вместится
Ответ Создать тему
Опции темы

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