function [interp_value,slerpmat] = omnislerp(target_coord,data_coord,data_value,interp_func,mode) if ~exist('interp_func','var'),interp_func = @(x) x;end if ~exist('mode','var'),mode = 'slerp';end switch mode case 'slerp' target_coord = target_coord.normalize; data_coord = data_coord.normalize; slerpmat = interp_func(target_coord.Qangle(data_coord.T)); case 'lerp' slerpmat = interp_func(norm(target_coord-data_coord.T)); end slerpmat = slerpmat./sum(slerpmat); interp_value = slerpmat*data_value; end