Применение трехмерной матрицы вращения к значениям x, y, z, полученным от объекта функции поверхности.Я получаю ошибку из-за того, что матрица не является несоответствующей, но как правильно настроить матрицу?
Я знаю, что hgtransform / makehgtform может выполнять вращения, но Мне нужно использовать матрицы вращения, так как я планирую тестированиеэто с использованием матриц, созданных из кватернионов .
Я создал небольшую плоскость из цилиндров и функций поверхности.См. Код ниже:
clear all,clf
ax=axes('XLim',[-2 2],'YLim', [-2 10],'ZLim',[-1.5 1.5]);
grid on;
%axis equal;
xlabel('x');
ylabel('y');
zlabel('z');
ax
% rotate around
rot_mat = [.707 -.707 0;.707 .707 0; 0 0 1] %rotation matrix
[xc yc zc] = cylinder([0.1 0.0]); %cone
[x y z]= cylinder([0.2 0.2]);
h(1) = surface(xc,zc,-yc,'FaceColor', 'red'); %noise cone
h(2) = surface(z,y,0.5*x,'FaceColor', 'blue'); %right wing
h(3) = surface(-z,y,0.5*x,'FaceColor', 'yellow');%left wing
h(4) = surface(x,-1.5*z,0.5*y,'FaceColor', 'green'); %main body
h(5) = surface(xc,(1.5*yc)-1.3,z*.5,'FaceColor', 'red'); %tail
view(3);
x_temp = get(h(1),'xdata'); % get x values
y_temp = get(h(1),'ydata');
z_temp =get(h(1),'zdata');
xc_new=x_temp.*rot_mat;
%zc_new=
%yc_new=
Я могу получить значения x, y и z с помощью команд
x_temp = get(h(1),'xdata');
y_temp = get(h(1),'ydata');
z_temp = get(h(1),'zdata');
Я получаю ошибку из-за несоответствия матрицы, но как правильно настроить матрицу?
ошибка: test_object_matrix_rot: product: несоответствующие аргументы (op1 - 2x21, op2 - 3x3).
Ошибка в строке xc_new = x_temp. * Rot_mat;
PS: я использую Octave 5.0.91, которая похожа на Matlab