Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #define M_PI 3.14159265358979323846
- void aceleracao(float a[3], float v[3], float w[3])
- {
- float g = -9.8;
- float Cd = 0.006;
- float Cm = 0.0004;
- float modulo_v = 0;
- modulo_v = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
- a[0] = -(Cd*modulo_v*v[0]) + Cm*(w[1]*v[2] - w[2]*v[1]);
- a[1] = g - Cd*modulo_v*v[1] + Cm*(w[2]*v[0] - w[0]*v[2]);
- a[2] = -(Cd*modulo_v*v[2]) + Cm*(w[0]*v[1] - w[1]*v[0]);
- }
- void trajetoria(float w[3], int m, float angulo, double modulo_v)
- {
- int i, j, k;
- float dt = 0.001;
- float a[3] = {0, 0, 0};
- float v[3] = {0, 0, 0};
- float x[3] = {0, 0, 0}; // vetor posição
- FILE *dados;
- char nome[12];
- sprintf(nome, "posição-w%d.txt", m);
- v[0] = modulo_v*cos(angulo);
- v[1] = modulo_v*sin(angulo);
- dados = fopen(nome, "w+");
- for(i = 0; i <= 30000; i++)
- {
- for(j = 0; j <= 2; j++)
- {
- fprintf(dados, " %f\t", x[j]);
- if(k == 1) // atualiza o valor da aceleração nas 3 coordenadas e nao deixa mais atualizar durante esse loop
- {
- aceleracao(a, v, w);
- k = 0;
- }
- v[j] = v[j] + a[j]*dt;
- x[j] = x[j] + v[j]*dt;
- }
- fprintf(dados, "\n");
- k = 1;
- }
- fclose(dados);
- }
- int main()
- {
- float w1[3] = {0, 0, 0};
- float w2[3] = {0, -10, 0};
- float w3[3] = {0, 10, 0};
- float w4[3] = {0, 0 , 10};
- double angulo = M_PI/4;
- float modulo_v = 10*sqrt(2);
- trajetoria(w1, 1, angulo, modulo_v);
- trajetoria(w2, 2, angulo, modulo_v);
- trajetoria(w3, 3, angulo, modulo_v);
- trajetoria(w4, 4, angulo, modulo_v);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement