From f6d88aebe992d5d4e14922cf14f5e0f0bd5476ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Sch=C3=A4fer?= Date: Thu, 13 Sep 2018 11:47:27 +0200 Subject: [PATCH] itaOrientation: -added static function to create itaOrientation from view and up vectors ita_vu2quat -bugfix: result was wrong when using 3x3 matrices as input --- .../Tracking/Optitrack/@itaOrientation/itaOrientation.m | 8 ++++++++ applications/Hardware/Tracking/Optitrack/ita_vu2quat.m | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/applications/Hardware/Tracking/Optitrack/@itaOrientation/itaOrientation.m b/applications/Hardware/Tracking/Optitrack/@itaOrientation/itaOrientation.m index af3cf5c..13ced29 100644 --- a/applications/Hardware/Tracking/Optitrack/@itaOrientation/itaOrientation.m +++ b/applications/Hardware/Tracking/Optitrack/@itaOrientation/itaOrientation.m @@ -399,4 +399,12 @@ classdef itaOrientation end + methods(Static = true) + function obj = FromViewUp(view, up) + assert( size(view, 2) == 3 && size(up, 2) == 3,'Size of both inputs must be N x 3 [double].' ) + assert( isequal(size(view),size(up)),'Number of view and up vectors must be the same.' ) + obj = itaOrientation(ita_vu2quat(view, up)); + end + end + end diff --git a/applications/Hardware/Tracking/Optitrack/ita_vu2quat.m b/applications/Hardware/Tracking/Optitrack/ita_vu2quat.m index 9c8ab76..e5baafc 100644 --- a/applications/Hardware/Tracking/Optitrack/ita_vu2quat.m +++ b/applications/Hardware/Tracking/Optitrack/ita_vu2quat.m @@ -63,7 +63,7 @@ else end % calculate side vector -s = cross(v, u); +s = cross(v', u')'; %NOTE PSC: Matlab thinks in column vectors, so this would fail in case of two 3x3 matrices when not transposing v and u. % build rotation matrix vec_ent = size(v,1); -- GitLab