summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_filter_accela/ftnoir_filter_accela.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2013-04-13 05:45:07 +0200
committerStanislaw Halik <sthalik@misaki.pl>2013-04-13 05:45:07 +0200
commit351e844f6a3c5484acfcf4fb0154bcab6f1780a0 (patch)
treee2b1fcb041ae3b763120e3ffb134d529006b0cb2 /ftnoir_filter_accela/ftnoir_filter_accela.cpp
parent29cf8b9ddf89a42d72ca1c0fbdc9fa93f0c5d189 (diff)
Don't use axes as class/struct members. Use an array instead, and iterate over them where applicable.
Diffstat (limited to 'ftnoir_filter_accela/ftnoir_filter_accela.cpp')
-rw-r--r--ftnoir_filter_accela/ftnoir_filter_accela.cpp60
1 files changed, 19 insertions, 41 deletions
diff --git a/ftnoir_filter_accela/ftnoir_filter_accela.cpp b/ftnoir_filter_accela/ftnoir_filter_accela.cpp
index 3e931df4..cfd98742 100644
--- a/ftnoir_filter_accela/ftnoir_filter_accela.cpp
+++ b/ftnoir_filter_accela/ftnoir_filter_accela.cpp
@@ -53,45 +53,31 @@ void FTNoIR_Filter::loadSettings() {
iniFile.endGroup ();
}
-void FTNoIR_Filter::FilterHeadPoseData(THeadPoseData *current_camera_position,
- THeadPoseData *target_camera_position,
- THeadPoseData *new_camera_position,
- THeadPoseData *last_post_filter_values,
- bool newTarget)
+void FTNoIR_Filter::FilterHeadPoseData(double *current_camera_position,
+ double *target_camera_position,
+ double *new_camera_position,
+ double *last_post_filter_values)
{
double target[6];
double prev_output[6];
float output[6];
- int i=0;
-
- prev_output[0]=current_camera_position->x;
- prev_output[1]=current_camera_position->y;
- prev_output[2]=current_camera_position->z;
- prev_output[3]=current_camera_position->yaw;
- prev_output[4]=current_camera_position->pitch;
- prev_output[5]=current_camera_position->roll;
-
- target[0]=target_camera_position->x;
- target[1]=target_camera_position->y;
- target[2]=target_camera_position->z;
- target[3]=target_camera_position->yaw;
- target[4]=target_camera_position->pitch;
- target[5]=target_camera_position->roll;
+
+ for (int i = 0; i < 6; i++)
+ {
+ prev_output[i] = current_camera_position[i];
+ target[i] = target_camera_position[i];
+ }
if (first_run)
{
- new_camera_position->x=target[0];
- new_camera_position->y=target[1];
- new_camera_position->z=target[2];
- new_camera_position->yaw=target[3];
- new_camera_position->pitch=target[4];
- new_camera_position->roll=target[5];
+ for (int i = 0; i < 6; i++)
+ new_camera_position[i] = target[i];
first_run=false;
return;
}
- for (i=0;i<6;i++)
+ for (int i=0;i<6;i++)
{
if (_isnan(target[i]))
return;
@@ -123,7 +109,7 @@ void FTNoIR_Filter::FilterHeadPoseData(THeadPoseData *current_camera_position,
// useful for filtering, as skipping them would result in jerky output.
// the magic "100" is the amount of calls to the filter by FTNOIR per sec.
// WVR: Added kMagicNumber for Patrick
- double velocity = foo / (kMagicNumber > 0 ? kMagicNumber : 100.0) * (1 / std::max(1.0, 1 + kZoomSlowness * -last_post_filter_values->z / 100));
+ double velocity = foo / (kMagicNumber > 0 ? kMagicNumber : 100.0) * (1 / std::max(1.0, 1 + kZoomSlowness * -last_post_filter_values[TZ] / 100));
double sum = start + velocity * sign;
bool done = (sign > 0 ? sum >= e2 : sum <= e2);
if (done) {
@@ -136,19 +122,11 @@ void FTNoIR_Filter::FilterHeadPoseData(THeadPoseData *current_camera_position,
return;
}
- new_camera_position->x=output[0];
- new_camera_position->y=output[1];
- new_camera_position->z=output[2];
- new_camera_position->yaw=output[3];
- new_camera_position->pitch=output[4];
- new_camera_position->roll=output[5];
-
- current_camera_position->x=output[0];
- current_camera_position->y=output[1];
- current_camera_position->z=output[2];
- current_camera_position->yaw=output[3];
- current_camera_position->pitch=output[4];
- current_camera_position->roll=output[5];
+ for (int i = 0; i < 6; i++)
+ {
+ new_camera_position[i] = output[i];
+ current_camera_position[i] = output[i];
+ }
}
////////////////////////////////////////////////////////////////////////////////