首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于仿射矩阵的倍频程/ matlab旋转/仿射矩阵函数

基于仿射矩阵的倍频程/ matlab旋转/仿射矩阵函数
EN

Stack Overflow用户
提问于 2015-05-21 15:23:18
回答 1查看 420关注 0票数 0

我可以创建一个蓝色的图形,这是正确的,但当我试图旋转它在90度左右,点(0,0),图的红色是创建。它应该绕点(0,0)旋转90度。有人知道我的函数/代码的哪一部分导致了这个问题吗?

请参阅下面的函数和示例代码:

代码语言:javascript
复制
    %affine matrix rotation about a point rtaffine[theta,rpx,rpy,sigx,sigy,sigz]
%crx cry rpx rpy represent center of rotation
function [rotsig,theta,crpx,crpy,sigx,sigy,sigz] = rtaffine(theta,rpx,rpy,sigx,sigy,sigz) 
    rotsig=[];
    %affinematrix=[];
    siga=[sigx;sigy;sigz];

    r00 = cosd(theta); r01 = -sind(theta); r10 = sind(theta); r11 = cosd(theta);
    affinematrix = [r00, r01, rpx(1,1) - r00*rpx(1,1) - r01*rpy(1,1);...
    r10, r11, rpy(1,1) - r10*rpx(1,1) - r11*rpy(1,1);...
    0, 0, 1];   
    rotsig=affinematrix*siga; %new affine matrix
end


%radial arms
t = linspace(0,2*pi,500);
r=e^0.3063489*t;
x = r.*cos(t);
y = r.*sin(t);
plot(x,y)

hold on

%rotation
theta=90;
z = ones(size(y));
siga=[t;y;z];


rotsig=rtaffine(theta,0,0,siga(1,:),siga(2,:),siga(3,:));

plot(t(1,:),rotsig(1,:),'r-')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-21 15:45:33

在这两种情况下,您正在传入t,并试图针对t而不是x进行绘图:

代码语言:javascript
复制
siga=[t;y;z];

应该是

代码语言:javascript
复制
siga=[x;y;z];

代码语言:javascript
复制
plot(t(1,:),rotsig(1,:),'r-')

应该是

代码语言:javascript
复制
plot(rotsig(1,:),rotsig(2,:),'r-')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30377990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档