TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Banco De Dados

Artigo: Banco De Dados. Pesquise 862.000+ trabalhos acadêmicos

Por:   •  27/9/2013  •  337 Palavras (2 Páginas)  •  338 Visualizações

Página 1 de 2

#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;

}

...

Baixar como  txt (3.7 Kb)  
Continuar por mais 1 página »