gusucode.com > 三维模仿源码程序 > 三维模仿源码程序/MathRubik2/PlotSurf.m
function hOut=PlotSurf(Coor,Image) %PlotSurf - Plot an image in a 3D-surface if max(Image(:))>1 Image=double(Image); end b=true(1,3); iX=find(abs(Coor(1,:)-Coor(2,:))>1e-4); iY=find(abs(Coor(1,:)-Coor(4,:))>1e-4); b(iX)=false;b(iY)=false; iZ=find(b); fprintf('iX,iY,iZ : %d,%d,%d\n',iX,iY,iZ) [m,n]=size(Image); XYZ=cell(1,3); XYZ{iX}=(0:n-1) /(n-1)*(Coor(2,iX)-Coor(1,iX))+Coor(1,iX); XYZ{iY}=(0:m-1)'/(m-1)*(Coor(3,iY)-Coor(1,iY))+Coor(1,iY); XYZ{iX}=XYZ{iX}(ones(1,m),:); XYZ{iY}=XYZ{iY}(:,ones(1,n)); XYZ{iZ}=zeros(m,n)+Coor(1,iZ); h=surface(XYZ{1},XYZ{2},XYZ{3},Image,'CDataMapping','direct','EdgeColor','none'); if nargout hOut=h; end