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

Полет по параболе - C++

Восстановить пароль Регистрация
 
bacekk
2 / 2 / 0
Регистрация: 30.11.2010
Сообщений: 89
02.12.2012, 16:06     Полет по параболе #1
Доброго всем времени суток!
Столкнулся с проблемой одной. У меня было задание к лабе, в котором нужно было сделать стрелу, которая летит по параболе и вращается вокруг продольной оси. Все это в досовской графике. Я смог сделать только ее вылет под углом 45 градусов и полет по прямой. Не подскажите как исправить подпрограмму, чтобы она летела по параболе? Бьюсь над этим второй день.
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
 
 #include<conio.h>
 #include<graphics.h>
 #include<process.h>
 #include<stdio.h>
 #include<dos.h>
 #include<stdlib.h>
 #include<math.h>
 #define pi 3.14
 
 int a[6][4]={     {0,250,100,1},       //массив с координатами точек 
                   {100,150,100,1},
                   {80,150,100,1},
                   {100,170,100,1}
                   };  
 int midx, midy, midz;
 int dx = 1;
 
 
 void mid(void)
 {
  midx=(a[0][0]+a[1][0])/2;
  midy=(a[0][1]+a[1][1])/2;
  midz=(a[0][2]+a[1][2])/2;
 }
 
    void ctrela(void)
    {
    setcolor(10);
    line(a[1][0], a[1][1], a[0][0], a[0][1]);
    line(a[3][0], a[3][1], a[1][0], a[1][1]);
    line(a[2][0], a[2][1], a[1][0], a[1][1]);
    line(a[2][0], a[2][1], a[3][0], a[3][1]);
    delay(100);
    }
    void parabola(void)
    {
    a[0][0]=a[0][0]+dx; // это изменение координаты по X 
    a[0][1]=a[0][1]-dx; // это изменение координаты по Y, здесь что вписать я не могу понять 
    a[0][2]=a[0][2];
 
    a[1][0]=a[1][0]+dx;
    a[1][1]=a[1][1]-dx;
    a[1][2]=a[1][2];
 
    a[2][0]=a[2][0]+dx;
    a[2][1]=a[2][1]-dx;
    a[2][2]=a[2][2];
 
    a[3][0]=a[3][0]+dx;
    a[3][1]=a[3][1]-dx;
    a[3][2]=a[3][2];
    }
 
 
 main()
{
   int gdriver = VGA, gmode = VGAMED, errorcode;
   int b[6][4],i,j,k;
   float w1;
   initgraph(&gdriver, &gmode, "C:\BC5\BGI" );
   errorcode = graphresult();
   if (errorcode != grOk)
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1);
   }
   setviewport(50, 50, getmaxx()-50, getmaxy()-50, 1);
   clearviewport();
  while(1)
 {
        dx=0;
    for(j=0;j<6;j++)
    for(k=0;k<4;k++)
    
    b[j][k]=a[j][k];
   dx=dx+2;
   if(dx>500)
    {
     dx=0;
     for(j=0;j<6;j++)
     for(k=0;k<4;k++)
     a[j][k]=b[j][k];
    }
   mid();
   parabola();
   if(i==0) i=1;
      else i=0;
   setactivepage(i);
   clearviewport();
   ctrela();
   setvisualpage(i);
 }
   getch();
 
   closegraph();
   return 0;
   }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 16:06     Полет по параболе
Посмотрите здесь:

C++ Движение объекта по параболе
Стрела по параболе
На параболе y=2x^2+4 найти точку
Точки на параболе
Найти точку на параболе
C++ Решение физической задачи: рассчитать полет камня, брошенного под углом к горизонту
Изобразить полет самолета C++
Delphi Движение шарика по параболе

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru