Easy Training / Training

Dependents:   Easyfit

Committer:
MarcelPortmann
Date:
Sun May 17 18:53:41 2020 +0000
Revision:
4:4e871024310a
Parent:
2:0df0d0be0664
Child:
5:da9b6946a035
pdsmvpds

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MarcelPortmann 0:0c6d1b9144af 1 /*
MarcelPortmann 0:0c6d1b9144af 2 Hear cold stand a discription
MarcelPortmann 0:0c6d1b9144af 3
MarcelPortmann 0:0c6d1b9144af 4
MarcelPortmann 0:0c6d1b9144af 5 */
MarcelPortmann 0:0c6d1b9144af 6
MarcelPortmann 0:0c6d1b9144af 7
MarcelPortmann 0:0c6d1b9144af 8 #include "training.h"
MarcelPortmann 0:0c6d1b9144af 9 //#include "math.h"
MarcelPortmann 0:0c6d1b9144af 10
MarcelPortmann 0:0c6d1b9144af 11 training::training()
MarcelPortmann 0:0c6d1b9144af 12 {
MarcelPortmann 0:0c6d1b9144af 13 fail_pos = 0;
MarcelPortmann 0:0c6d1b9144af 14 time_short = 0;
MarcelPortmann 0:0c6d1b9144af 15 time_long = 0;
MarcelPortmann 0:0c6d1b9144af 16
MarcelPortmann 0:0c6d1b9144af 17 }
MarcelPortmann 0:0c6d1b9144af 18
MarcelPortmann 0:0c6d1b9144af 19
MarcelPortmann 0:0c6d1b9144af 20 void training::load_training(string name)
MarcelPortmann 0:0c6d1b9144af 21 {
MarcelPortmann 1:aa8497b98ef4 22 int i = 0;
MarcelPortmann 0:0c6d1b9144af 23 tr_name = name;
MarcelPortmann 1:aa8497b98ef4 24 int sice = 50;
MarcelPortmann 1:aa8497b98ef4 25 //sice = loading.size(tr_name)
MarcelPortmann 1:aa8497b98ef4 26
MarcelPortmann 2:0df0d0be0664 27 for(i = 0; i<sice; i++) { // loads the whole trainings data into data vector
MarcelPortmann 1:aa8497b98ef4 28 loading.AuslesenPositionsdaten(tr_name,i);
MarcelPortmann 1:aa8497b98ef4 29
MarcelPortmann 1:aa8497b98ef4 30 temp.time = loading.zahl[0];
MarcelPortmann 1:aa8497b98ef4 31 temp.pos[0] = loading.zahl[1];
MarcelPortmann 1:aa8497b98ef4 32 temp.pos[1] = loading.zahl[2];
MarcelPortmann 1:aa8497b98ef4 33 temp.pos[2] = loading.zahl[3];
MarcelPortmann 2:0df0d0be0664 34 temp.start = loading.zahl[4]; // fragen wegen status eintrag
MarcelPortmann 2:0df0d0be0664 35 temp.end = loading.zahl[5];
MarcelPortmann 2:0df0d0be0664 36
MarcelPortmann 1:aa8497b98ef4 37
MarcelPortmann 1:aa8497b98ef4 38 data_vec.push_back(temp);
MarcelPortmann 1:aa8497b98ef4 39
MarcelPortmann 1:aa8497b98ef4 40 }
MarcelPortmann 0:0c6d1b9144af 41 }
MarcelPortmann 0:0c6d1b9144af 42
MarcelPortmann 0:0c6d1b9144af 43 void training::start_training(void)
MarcelPortmann 0:0c6d1b9144af 44 {
MarcelPortmann 0:0c6d1b9144af 45 fail_pos = 0;
MarcelPortmann 0:0c6d1b9144af 46 time_short = 0;
MarcelPortmann 0:0c6d1b9144af 47 time_long = 0;
MarcelPortmann 0:0c6d1b9144af 48 point_count = 0;
MarcelPortmann 0:0c6d1b9144af 49 repet = 0;
MarcelPortmann 0:0c6d1b9144af 50
MarcelPortmann 0:0c6d1b9144af 51 }
MarcelPortmann 0:0c6d1b9144af 52
MarcelPortmann 4:4e871024310a 53 int training::compire_point(float posx,float posy,float posz, int time)
MarcelPortmann 0:0c6d1b9144af 54 {
MarcelPortmann 0:0c6d1b9144af 55 float temp_pos[3] = {};
MarcelPortmann 0:0c6d1b9144af 56 float dist = 0, timediv = 0;
MarcelPortmann 4:4e871024310a 57 int resetval = 0;
MarcelPortmann 0:0c6d1b9144af 58
MarcelPortmann 0:0c6d1b9144af 59 if(data_vec[point_count].start) { // counts the repetitions
MarcelPortmann 0:0c6d1b9144af 60 repet++;
MarcelPortmann 4:4e871024310a 61 resetval = 1;
MarcelPortmann 0:0c6d1b9144af 62 }
MarcelPortmann 0:0c6d1b9144af 63
MarcelPortmann 0:0c6d1b9144af 64 temp_pos[0] = posx - data_vec[point_count].pos[0]; // calculates distance curent to needed
MarcelPortmann 0:0c6d1b9144af 65 temp_pos[1] = posx - data_vec[point_count].pos[1];
MarcelPortmann 0:0c6d1b9144af 66 temp_pos[2] = posx - data_vec[point_count].pos[2];
MarcelPortmann 0:0c6d1b9144af 67
MarcelPortmann 0:0c6d1b9144af 68 dist = sqrt(pow(temp_pos[0],2)+pow(temp_pos[1],2)+pow(temp_pos[2],2));
MarcelPortmann 0:0c6d1b9144af 69
MarcelPortmann 0:0c6d1b9144af 70 if(dist>= POSTOL) { // counts position fail
MarcelPortmann 0:0c6d1b9144af 71 fail_pos++;
MarcelPortmann 0:0c6d1b9144af 72 }
MarcelPortmann 0:0c6d1b9144af 73
MarcelPortmann 0:0c6d1b9144af 74 if(data_vec[point_count].end) { // counts time too short and time too long
MarcelPortmann 4:4e871024310a 75 resetval = 2;
MarcelPortmann 0:0c6d1b9144af 76 timediv = time - (data_vec[point_count].time);
MarcelPortmann 0:0c6d1b9144af 77 if(timediv>=TIMETOL) {
MarcelPortmann 0:0c6d1b9144af 78 time_long++;
MarcelPortmann 0:0c6d1b9144af 79 }
MarcelPortmann 0:0c6d1b9144af 80 if(timediv<=(-TIMETOL)) {
MarcelPortmann 0:0c6d1b9144af 81 time_short++;
MarcelPortmann 0:0c6d1b9144af 82 }
MarcelPortmann 0:0c6d1b9144af 83 }
MarcelPortmann 1:aa8497b98ef4 84
MarcelPortmann 0:0c6d1b9144af 85 point_count++;
MarcelPortmann 1:aa8497b98ef4 86
MarcelPortmann 1:aa8497b98ef4 87 if(point_count>= data_vec.size()) { // resets the piontecount after a complet cycle
MarcelPortmann 0:0c6d1b9144af 88 point_count = 0;
MarcelPortmann 1:aa8497b98ef4 89 }
MarcelPortmann 4:4e871024310a 90
MarcelPortmann 4:4e871024310a 91 return resetval;
MarcelPortmann 0:0c6d1b9144af 92
MarcelPortmann 0:0c6d1b9144af 93 }
MarcelPortmann 0:0c6d1b9144af 94
MarcelPortmann 2:0df0d0be0664 95 int* training::get_status(void)
MarcelPortmann 2:0df0d0be0664 96 {
MarcelPortmann 2:0df0d0be0664 97 status_array[0] = fail_pos;
MarcelPortmann 2:0df0d0be0664 98 status_array[1] = time_short;
MarcelPortmann 2:0df0d0be0664 99 status_array[2] = time_long;
MarcelPortmann 2:0df0d0be0664 100 status_array[3] = repet;
MarcelPortmann 2:0df0d0be0664 101
MarcelPortmann 2:0df0d0be0664 102 return status_array;
MarcelPortmann 2:0df0d0be0664 103 }
MarcelPortmann 2:0df0d0be0664 104
MarcelPortmann 2:0df0d0be0664 105 void training::end_training(string name)
MarcelPortmann 0:0c6d1b9144af 106 {
MarcelPortmann 0:0c6d1b9144af 107 // writhe status to memory / update memory
MarcelPortmann 4:4e871024310a 108 fail_pos = 0;
MarcelPortmann 4:4e871024310a 109 time_short = 0;
MarcelPortmann 4:4e871024310a 110 time_long = 0;
MarcelPortmann 4:4e871024310a 111 point_count = 0;
MarcelPortmann 4:4e871024310a 112 repet = 0;
MarcelPortmann 4:4e871024310a 113 data_vec.clear();
MarcelPortmann 4:4e871024310a 114
MarcelPortmann 0:0c6d1b9144af 115 }