12345678910111213141516 |
- 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
|