解决方案的新尝试:
在下面的代码中,我使用tformarray()来旋转空间中的结构.首先,数据居中,然后使用rotationmat3D旋转以产生空间变换,然后再将数据移回其原始位置.
因为我之前从未使用过tformarray,所以我通过简单地用零填充数据矩阵(NxMxP)来旋转数据点,这些数据点在旋转后落在定义的区域之外.如果有人知道更好的方法,请告诉我们:)
代码:
%Synthetic dataset, 25x50x25
blob = flow();
%Pad to allow for rotations in space. Bad solution,
%something better might be possible to better understanding
%of tformarray()
blob = padarray(blob,size(blob));
f1 = figure(1);clf;
s1=subplot(1,2,1);
p = patch(isosurface(blob,1));
set(p, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1]);
view([1 1 1])
camlight
lighting gouraud
%Calculate center
blob_center = (size(blob) + 1) / 2;
%Translate to origin transformation
T1 = [1 0 0 0
0 1 0 0