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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
djvipmax
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 14
#1

Движение маятника в Borland 3.1 - C++

07.05.2012, 20:00. Просмотров 1384. Ответов 9
Метки нет (Все метки)

Написать программу имитирующую движение(без затухания) маятника. Помогите пожалуйста,не могу разобраться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2012, 20:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Движение маятника в Borland 3.1 (C++):

Русские хелпы по Borland C++ 5.* и Borland C++ Bulder - C++
Подскажите где найти русские хелпы на Borland C++ 5.* и Borland C++ Bulder ...

Движение планеты в системе двойной звезды или движение трех тел - C++
программа должна выводить координаты движения звезд и планеты в файл (рисую в gnuplot). во-первых, не понимаю, почему выходит, что все...

Изображение маятника - C++
Задание: Приложение должно выводить изображение колеблющегося согласно законам физики маятника. Интерфейс приложения должен позволять...

Изображение колеблющегося маятника - C++
Задание. Приложение должно выводить изображение колеблющегося согласно законам физики маятника. Интерфейс приложения должен позволять...

Вычислить период колебания маятника длины L - C++
Я накидал следующую программу, но она не работает, что подскажете? #include <iostream> #include <math.h> /* run this program using...

Стабилизация обратного маятника на тележке(метод Рунге-Кутта) - C++
Добрый день! Есть уравнения обратного маятника на тележке. Нашел по этой ссылке:...

9
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
07.05.2012, 20:25 #2
Графика шоле?
0
djvipmax
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 14
07.05.2012, 20:39  [ТС] #3
да
есть ли какие нибудь формулы параметрические для задания движения по х и по у?
0
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
09.05.2012, 19:21 #4
Цитата Сообщение от djvipmax Посмотреть сообщение
да
есть ли какие нибудь формулы параметрические для задания движения по х и по у?
Формулы для математического маятника без учёта трения?

Добавлено через 27 минут
маятник
1
djvipmax
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 14
11.05.2012, 15:32  [ТС] #5
Цитата Сообщение от Hi4ko Посмотреть сообщение
Формулы для математического маятника без учёта трения?

Добавлено через 27 минут
маятник
без учета( но если есть информация с учетом времени то предоставьте мне ее пожалуйста, для личного интереса)
0
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
11.05.2012, 16:02 #6
Цитата Сообщение от djvipmax Посмотреть сообщение
без учета( но если есть информация с учетом времени то предоставьте мне ее пожалуйста, для личного интереса)
Посмотри внимательно pdf-ку, там внимательно всё написано)
В вакууме координата x меняется по гармоническому закону(синусоиде), а при учёте вязкого трения по экспоненциальной).
1
djvipmax
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 14
11.05.2012, 19:38  [ТС] #7
Цитата Сообщение от Hi4ko Посмотреть сообщение
Посмотри внимательно pdf-ку, там внимательно всё написано)
В вакууме координата x меняется по гармоническому закону(синусоиде), а при учёте вязкого трения по экспоненциальной).
а координата по у?

Добавлено через 12 минут
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
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<stdlib.h>
#include<math.h>
int x0,y0,x,y,l,dlinapodvesa=50;
float u=-3;
void main()
{
 
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver,&gmode,"");
errorcode = graphresult();
if(errorcode !=grOk)
  {
   cout<<"Graphicheskaia oshibka:%\n"<<grapherrormsg(errorcode);
   cout<<"Nagmite klavishy";
   getch();
   exit(1);
  }
 
setcolor(YELLOW);
 
line(getmaxx()/2-dlinapodvesa,getmaxy()/3,getmaxx()/2+dlinapodvesa,getmaxy()/3);
x0=getmaxx()/2; y0=getmaxy()/3;  x=getmaxx()/2;
 
 
while(!kbhit())
{
setcolor(RED);
line(x0,y0,x,y);
 
// [COLOR="Red"]тут нужно изменить  координаты  х и у. как это сделать?[/COLOR]
 
setcolor(YELLOW);
line(x0,y0,x,y);
 
}
 
 
 
getch();
closegraph();
}
Добавлено через 3 часа 3 минуты
удивительно, но это как то работает))причем я не понимаю почему)

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
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<stdlib.h>
#include<math.h>
const pi=22/7;
int x0,y0,x,y,l=300,dlinapodvesa=50,A=50,w=10,radius=10;
float u=-(pi)/3,t=0;
void main()
{
// cout<<"vvedite dlinu mayatnika i amplitudu i skorost' ";
// cin>>l>>A>>w;
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver,&gmode,"");
errorcode = graphresult();
if(errorcode !=grOk)
  {
   cout<<"Graphicheskaia oshibka:%\n"<<grapherrormsg(errorcode);
   cout<<"Nagmite klavishy";
   getch();
   exit(1);
  }
 
setcolor(YELLOW);
line(getmaxx()/2-dlinapodvesa,getmaxy()/3,getmaxx()/2+dlinapodvesa,getmaxy()/3);
x0=getmaxx()/2; y0=getmaxy()/3;  x=getmaxx()/2; y=y0;
while(!kbhit())
{
cleardevice();
line(getmaxx()/2-dlinapodvesa,getmaxy()/3,getmaxx()/2+dlinapodvesa,getmaxy()/3);
setcolor(YELLOW);
line(x0,y0,x,y-radius);
circle(x,y,radius);
delay(50);
 
x=x0+A*cos(w*t);
y=y0+sqrt(l*l-(x-x0)*(x-x0));
t+=0.01;
}
 
getch();
closegraph();
}
0
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
11.05.2012, 19:45 #8
Цитата Сообщение от djvipmax Посмотреть сообщение
Добавлено через 3 часа 3 минуты
удивительно, но это как то работает))причем я не понимаю почему)

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
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<stdlib.h>
#include<math.h>
const pi=22/7;
int x0,y0,x,y,l=300,dlinapodvesa=50,A=50,w=10,radius=10;
float u=-(pi)/3,t=0;
void main()
{
// cout<<"vvedite dlinu mayatnika i amplitudu i skorost' ";
// cin>>l>>A>>w;
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver,&gmode,"");
errorcode = graphresult();
if(errorcode !=grOk)
  {
   cout<<"Graphicheskaia oshibka:%\n"<<grapherrormsg(errorcode);
   cout<<"Nagmite klavishy";
   getch();
   exit(1);
  }
 
setcolor(YELLOW);
line(getmaxx()/2-dlinapodvesa,getmaxy()/3,getmaxx()/2+dlinapodvesa,getmaxy()/3);
x0=getmaxx()/2; y0=getmaxy()/3;  x=getmaxx()/2; y=y0;
while(!kbhit())
{
cleardevice();
line(getmaxx()/2-dlinapodvesa,getmaxy()/3,getmaxx()/2+dlinapodvesa,getmaxy()/3);
setcolor(YELLOW);
line(x0,y0,x,y-radius);
circle(x,y,radius);
delay(50);
 
x=x0+A*cos(w*t);
y=y0+sqrt(l*l-(x-x0)*(x-x0));
t+=0.01;
}
 
getch();
closegraph();
}
Почему?
Если ты по поводу строки 38, то всё нормально)
0
djvipmax
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 14
16.05.2012, 17:21  [ТС] #9
хех, показал преподу, говорит сделай чтоб не мерцало, через сетвижуалпэйдж... и говорит что разрешение экрана не квадратное и типо длина линии меняется... как это учесть?
через страницы я уже сделал, а вот растяжении линии не знаю...
0
djvipmax
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 14
26.05.2012, 23:41  [ТС] #10
может кому нибудь понадобится

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
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
 
 
void main()
{
const pi=355/113, e=2721/1001;
float x0, y0, x, y, dlinapodvesa=100, A=150, w=300, radius=15, a;
float u=-7, t=0, l=300;
int gdriver = EGA, gmode = EGAHI, errorcode;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
  printf("Graphics error: %s\n", grapherrormsg(errorcode));
  printf("Press any key to halt:");
  getch();
  exit(1);
}
cleardevice();
setbkcolor(134);
setcolor(YELLOW);
setactivepage(1);
line(getmaxx()/2-dlinapodvesa,1,getmaxx()/2+dlinapodvesa,1);
x0=getmaxx()/2;
y0=2;  
x=x0+l*sin(u); 
y=y0+sqrt(l*l-(x-x0)*(x-x0));  
A=(l*sin(u))/cos(w*t);
while(!kbhit())
{
setvisualpage(0);
setactivepage(1);
cleardevice();
setcolor(YELLOW);
line(x0,y0,x,y);
line(getmaxx()/2-dlinapodvesa,1,getmaxx()/2+dlinapodvesa,1);
setfillstyle(5,BLACK);
fillellipse(x-1,y-1,radius,radius*(getmaxx()/getmaxy()));
setvisualpage(1);
delay(10);
setactivepage(0); cleardevice();
 
x=x0+A*pow(e,-2.1*t)*cos(w*t);
y=(y0+sqrt(l*l-(x-x0)*(x-x0)));
t+=0.0001;
 
setcolor(YELLOW);
line(x0,y0,x,y);
line(getmaxx()/2-dlinapodvesa,1,getmaxx()/2+dlinapodvesa,1);
setfillstyle(1,BLACK);
fillellipse(x-1,y-1,radius,radius*(getmaxx()/getmaxy()));
}
getch();
closegraph();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 23:41
Привет! Вот еще темы с ответами:

движение маятника - Delphi
var Form1: TForm1; n:real; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); var R: integer; ...

Движение математического маятника - C#
Всем привет. Нужно срочно написать программу движения математического маятника на C#. Отклонение примерно сделать градусов в 45. Вот то...

Организовать движение маятника - JavaScript
есть картинка нужно организовать движение маятника как поворачивать картинку относительно верхней середины картинки или как...

Как показать движение маятника? - Visual Basic .NET
как в пикчер боксе или в другом элементе показать движение маятника??? тоесть после запкска программы будет показан &quot;висячий&quot; маятник и я...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
26.05.2012, 23:41
Ответ Создать тему
Опции темы

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