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

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

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

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

01.06.2010, 19:23. Просмотров 429. Ответов 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;
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2010, 19:23     Спасательный круг
Посмотрите здесь:

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

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

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

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

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

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

Треугольник и круг STL - C++
У меня такое задание по теме классы-контейнеры и классы-итераторы STL: Определите класс Triangle (треугольник) и класс Circle...

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

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

С++, круг минимального радиуса - C++
Помогите решить задачку: Заранее спасибо!

Треугольник, круг, прямоугольник - C++
Необходимо создать эти 3 фигуры, и вывести их на экран в консоли. Фигуры можно двигать. Дайте какие-нибудь рекомендации.

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


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

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

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