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

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

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

Спасательный круг - C++

01.06.2010, 19:23. Просмотров 438. Ответов 0
Метки нет (Все метки)

Люди, помогите пожалуйста сделать так, чтоб круг падал сверху и вращался, хотябы просто падал сверху, и возможно ли его закрасить в ... цвет?
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
#include <graphics.h>
#include <stdlib.h> 
#include <stdio.h>  
#include <conio.h>  
#include <math.h>   
#include <dos.h>    
#define Pi 3.1415926536 
enum Action{move,draw}; 
struct Point3D  
{   
  int x;
  int y;    
  int z;    
  Action action;    
};  
// this function initializes graphics mode  
// it will work only if you're using Borland C++ compiler & BGI drivers 
// if you're using another compiler you should overwrite body of this function  
void init_gr(void)  
{   
   /* request autodetection */  
   int gdriver = DETECT, gmode, errorcode;  
   /* initialize graphics mode */   
   initgraph(&gdriver, &gmode, ""); 
   /* read result of initialization */  
   errorcode = graphresult();   
   if (errorcode != grOk)    /* an error occurred */    
   {    
      printf("Graphics error: %s\n", grapherrormsg(errorcode)); 
      printf("Press any key to halt:"); 
      getch();  
      exit(1);               /* return with error code */   
   }    
}   
// this function shuts graphics mode down   
// it will work only if you're using Borland C++ compiler & BGI drivers 
// if you're using another compiler you should overwrite body of this function  
void end_gr(void)   
{   
  closegraph(); 
}   
// this function moves CP to (x,y) position 
// it will work only if you're using Borland C++ compiler & BGI drivers 
// if you're using another compiler you should overwrite body of this function  
void MoveTo(int x, int y)   
{   
  moveto(x,y);  
}   
// this function draws a line to (x,y) position 
// it will work only if you're using Borland C++ compiler & BGI drivers 
// if you're using another compiler you should overwrite body of this function  
void LineTo(int x, int y)   
{   
  lineto(x,y);  
}   
void draw3Dobject(Point3D *object, int N, float rho, float theta,   
                  float phi, float dist_to_screen, int xshift, int yshift)  
{   
  int x,y;  
  float xe,ye,ze,costh,sinph,cosph,sinth,v11,v12,v13,v21,v22,v32,v33,v23,v43;   
  // calculating coefficients   
  costh=cos(theta); 
  sinth=sin(theta); 
  cosph=cos(phi);   
  sinph=sin(phi);   
  v11=-sinth; v12=-cosph*costh; v13=-sinph*costh;   
  v21=costh;  v22=-cosph*sinth; v23=-sinph*sinth;   
              v32=sinph;        v33=-cosph; 
                                v43=rho;    
  for (int i=0;i<N;i++) 
  { 
      // calculating eye coordinates    
      xe=v11*(object+i)->x+v21*(object+i)->y;   
      ye=v12*(object+i)->x+v22*(object+i)->y+v32*(object+i)->z; 
      ze=v13*(object+i)->x+v23*(object+i)->y+v33*(object+i)->z+v43; 
 
      // calculating screen coordinates 
      x=dist_to_screen*xe/ze+xshift;    
      y=dist_to_screen*ye/ze+yshift;    
 
      // drawing    
      if((object+i)->action==move)  
        MoveTo(x,y);    
      else  
        LineTo(x,y);    
  } 
}   
int main(void)  
{   
  const int n=20;  // number of torus' segments 
  Point3D torus[2*n*(n+1)]; // coordinates for torus' points    
  float rho=1800,theta=0,phi=3*Pi/4,dist_to_screen=600; // view point   
  int xshift=300, yshift=250; // picture offset 
  float delta=2.0*Pi/n, r=75, R=300; // torus' parameters   
  float alpha,cosa,sina,beta,x; // auxulary variables   
  // initializing graphics mode 
  init_gr();    
  // generating torus   
  for (int i=0;i<n;i++) 
  { 
     alpha=i*delta; 
     cosa=cos(alpha);   
     sina=sin(alpha);   
     for (int j=0;j<n+1;j++)    
     {  
       beta=j*delta;    
       x=R+r*cos(beta); 
       torus[i*(n+1)+j].x=cosa*x;   
       torus[i*(n+1)+j].y=sina*x;   
       torus[i*(n+1)+j].z=r*sin(beta);  
       torus[i*(n+1)+j].action=((i==0 && j==0)?move:draw);  
     }  
  } 
  int c=n*n+n;  
  for (i=0;i<n;i++) 
  { 
     beta=i*delta;  
     x=R+r*cos(beta);   
     for (int j=0;j<n+1;j++)    
     {  
       alpha=j*delta;   
       cosa=cos(alpha); 
       sina=sin(alpha); 
       torus[c+i*(n+1)+j].x=cosa*x; 
       torus[c+i*(n+1)+j].y=sina*x; 
       torus[c+i*(n+1)+j].z=r*sin(beta);    
       torus[c+i*(n+1)+j].action=draw;  
     }  
  } 
  // drawing    
  draw3Dobject(torus,2*n*(n+1),rho,theta,phi,dist_to_screen,xshift,yshift); 
  /* clean up */    
  getch();  
  end_gr(); 
  return 0;
  }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2010, 19:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Спасательный круг (C++):

круг - C++
Нужно вводить точку и что бы писало принадлежет ли она закрашеной области или нет

Круг в консоли - C++
Всем привет! Буду благодарен, если кто-нибудь сможет подсказать решение. И так, имеется класс Circle, задается радиус и нужно...

класс круг С++ - C++
Разработать класс &quot;круг &quot;, который определяется своим радиусом r. Класс должен владеть методами доступа к радиусу; методами определения...

закрасить круг - C++
подскажите как можно нарисовать закрасить круг в borlandc

Круг, окружность в С++ - C++
Делаю в задачу в Visual Studio и тут не работает graphics.h. Не подскажите как можно создать окружность или круг? Нужно писать...

Круг и прямая - C++
Дорогие форумчане! Не откажите в помощи, если есть идеи по заданию. Алгоритм или небольшая помощь с кодом На плоскости заданы...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2010, 19:23
Привет! Вот еще темы с ответами:

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

Как нарисовать круг - C++
Нужно нарисовать круг

Направление движения (круг) - C++
Помогите сделать алгоритм GoDirection - это угол к которому нужно поворачиваться player.direction - это угол персонажа в данный момент ...

Нарисовать круг в классе - C++
Нужно нарисовать круг в классе чтоб можна било в консоле задавать его 1)цвет 2)радиус 3) и угол на которий я захочю его повернуть!


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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