#include <stdio.h>
#include <math.h>
#define TRUE 1
#define FALSE 0
#define GRAVITY 9.8
double mag(double x, double y, double z);
double metersFallen(double fallTime);
double velocity (double v, double t1, double t2, double magAcc);
double position (double x, double v, double t1, double t2);
int main()
{
printf("Ok, I'm now receiving data.\n");
int running = TRUE;
double secFall = 0;;
double distance = 0;
int counter = 0;
int programStartTime = 0;
double currentTime = 0;
int time = 0;
int start = 0, end = 0;
double x, y, z, v, p;
double seconds;
scanf("%d,%lf,%lf,%lf", &time, &x, &y, &z);
printf("I'm Waiting");
programStartTime = time;
seconds = time;
while(running){
scanf("%d,%lf,%lf,%lf", &time, &x, &y, &z);
if((time - programStartTime) >= 1000){
printf(".");
programStartTime = time;
}
if(mag(x, y, z) < .75){
start = time;
printf("Help me! I'm falling");
while(end == 0){
if((time - programStartTime) >= 1000){
printf("!");
programStartTime = time;
}
scanf("%d,%lf,%lf,%lf", &time, &x, &y, &z);
v = velocity(v, time, seconds, mag(x,y,z));
p = position(x, v, time, seconds);
seconds = time;
if(mag(x, y, z) > .95){
end = time;
running = FALSE;
}
fflush(stdout);
}
}
fflush(stdout);
}
secFall = ((end - start)/1000.0);
distance = metersFallen(secFall);
//percent = ;
printf("\nTime falling was %6.3lf seconds\n", secFall);
printf("Distance fallen was %6.3lf meters\n", distance);
printf("Compensating for air resistance, the fall was %lf meters.\n", p);
//printf("This is %lf less than computed before\n", percent);
printf("%lf\n", mag(x,y,z));
return 0;
}
double metersFallen(double fallTime)
{
return(.5*GRAVITY*fallTime*fallTime);
}
double mag(double x, double y, double z)
{
return sqrt(x*x+y*y+z*z);
}
double velocity (double v, double t1, double t2, double magAcc)
{
int numVelocity = v + GRAVITY*(1-magAcc)*(t1 - t2)/1000;
return numVelocity;
}
double position (double x, double v, double t1, double t2)
{
double p = x + v*(t1 - t2)/1000;
return p;
}
Запуск с этой выборки данных http://www.filedropper.com/lab6sampledata20131Почему скорость возвращается к нулю? В C
Мне нужна функция положения для работы, но со скоростью возвращения к нулю, я не могу. Для этого мы используем устройство с акселерометром. FYI Я студент, который довольно новичок в программировании, будьте терпеливы.
'INT numVelocity' - изменения в' двойной numVelocity'. –
'#define TRUE 1 ...' ** Do not! ** Используйте правильные логические типы и значения. См. 'Stdbool.h'! – Olaf
Мой скелетный код моего профессора включал '#define TRUE 1', поэтому я должен оставить его на данный момент. – MikeG