Banco De Dados
Artigo: Banco De Dados. Pesquise 862.000+ trabalhos acadêmicosPor: • 27/9/2013 • 337 Palavras (2 Páginas) • 343 Visualizações
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <math.h>
struct object{
double x,y,z;//posicao inicial
double xf,yf,zf;//posicao atual
double v,vx,vy,vz;//velocidade em m/s
double a,ax,ay,az;//aceleracao em m/s
double tam;//tamanho do objeto em metros
};
void zera(struct object *a){//zera parametros do objeto, exceto tamanho
a->x = a->y = a->z = 0;
a->xf = a->yf = a->zf = 0;
a->v = a->vx = a->vy = a->vz =0;
a->a = a->ax = a->ay = a->az =0;
}
double ang_polar(struct object a, struct object b){//calcula o angulo polar(em radianos) entre obj "a" e obj "b"
double pol ,x ,y;
x = fabs(a.x - b.x);
y = fabs(a.y - b.y);
pol = atan(y/x);
return pol;
}
void velocidade_xy(struct object *a, struct object *b){//calcula vx, vy do obj "a" em relacao ao obj "b"
double v,ap;
v = fabs(a->v + b->v);
ap = ang_polar(*a,*b);
a->vx = v * cos(ap);
a->vy = v * sin(ap);
}
double resultante(double x,double y){//encontra vetor resultante
return sqrt( (pow(x,2) + pow(y,2)) );
}
double distancia(struct object a, struct object b){// distancia(em metros) entre obj "a" e obj "b"
double d, dxy,x,y,z;
x = a.xf - b.xf;
y = a.yf - b.yf;
z = a.zf - b.zf;
dxy = resultante(x,y);
d = resultante(z,dxy);
return d;
}
void trajetoria_xy(struct object *a, double t){
a->xf = a->x - (a->vx * t);
a->yf = a->y - (a->vy * t);
}
double var_tempo(double t_ini){
struct timeval hr_atual;
double t_fin;
gettimeofday (&hr_atual, NULL);
t_fin = hr_atual.tv_sec + (hr_atual.tv_usec/1000000.0);
return (t_fin - t_ini);
}
int main(int argc, char *argv[]){
system("clear");
/*
int porta=9999, server_socket, cliente_socket, addrlen;
struct sockaddr_in servidor;//dados do servidor
struct sockaddr_in cliente;//dados do cliente
addrlen = sizeof(cliente);
//cria socket
server_socket = socket(AF_INET,SOCK_STREAM,0);
//testa se socket foi criado com sucesso
if(server_socket <0){
perror("Socket");
return 0;
}
//adicionado os dados do servidor
servidor.sin_family=AF_INET;//tipo de conexao
servidor.sin_port = htons(porta);//porta
servidor.sin_addr.s_addr = INADDR_ANY;//pega o IP do servidor
bind(server_socket,(struct sockaddr*)&servidor, sizeof(servidor));
//escuta porta
listen(server_socket,1);
//aguarda por conexao
cliente_socket = accept(server_socket,(struct sockaddr*)&cliente, &addrlen);
//****Cliente Conectado****
*/
//cria objetos
struct object alvo;
struct object aviao;
double d;
zera(&alvo);
zera(&aviao);
//aviao
printf("Distancia x (em metros) entre o aviao e o alvo\n");
scanf("%lf",&aviao.x);
aviao.xf=aviao.x;
printf("Distancia y (em metros) entre o aviao e o alvo\n");
scanf("%lf",&aviao.y);
aviao.yf=aviao.y;
aviao.z = aviao.zf = 300;//altura em metros
aviao.v=85;//velocidade em m/s
velocidade_xy(&aviao, &alvo);
printf("\n\nDistancia do alvo:%fm\nVelocidade:%fm/s\nAlitude:%fm\n",distancia(aviao,alvo),aviao.v,aviao.z);
printf("Digite 1 para comecar\n");
int start;
scanf("%d",&start);
//pega tempo inicial
struct timeval hr_atual;
double t_ini=0;
gettimeofday (&hr_atual, NULL);
t_ini = hr_atual.tv_sec + (hr_atual.tv_usec/1000000.0) ;
while(distancia(aviao,alvo) > 2500){
system("clear");
trajetoria_xy(&alvo, var_tempo(t_ini));
trajetoria_xy(&aviao, var_tempo(t_ini));
printf("Objeto se aproximando:%fm x:%fm y:%fm\n",distancia(aviao,alvo), aviao.xf, aviao.yf);
}
//mensagens
int buflen=100;
char buf[buflen];
//fecha socket
//close(cliente_socket);
return 0;
}
...