0 / 0 / 2
Регистрация: 20.05.2010
Сообщений: 12
1

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

01.06.2010, 19:23. Показов 548. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2010, 19:23
Ответы с готовыми решениями:

Даны круг и полоса. Нужно выяснить, лежит ли круг в этой полосе
Даны круг и полоса. Нужно выяснить, лежит ли круг в этой полосе. Input Со стандартного устройства...

Запасной спасательный круг
Всем привет, меня зовут Андрей. Мне 17 лет, паскаль учу 4-й день. Хочу научиться программировать...

Нарисовать спасательный круг с полосками
Доброе времечко, подскажите, пожалуйста какая процедура или функция поможет нарисовать спасательный...

[Спасательный круг] скомпелировать 32 раз. код
Здр. у меня както есть проблема ни как не могу скомпелировать 32 раз код в MASM32.Я пробовал уже...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2010, 19:23

Фонарь поисково-спасательный ФПС4/6 В, Что за транзистор
Фонарь поисково-спасательный,зарядка от сети,от адаптера,и от автомобиля 12 в .Помогите найти...

Найти вероятность того, что точка, наудачу брошенная в большой круг, попадет также и в малый круг
В круг радиуса R помещен меньший круг радиуса r. Найти вероятность того, что точка, наудачу...

Найти функцию, отображающую круг конформно на круг
Найти функцию w(z), отображающую круг |z-2|&lt;2 конформно на круг |w-1|&lt;3 и удовлетворяющую условиям:...

Круг задается радиусом и координатами центра. Определить, найдется ли среди данных десяти кругов круг, лежащий внутри данного круга
Народ, помогите кто может. Не могу никак написать эту программу. Буду очень благодарен.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru