MATLAB利用极坐标转换画相对角度相对长度的线段

今天在MATLAB论坛上,有一位坛友要画已知相对角度相对长度的连续线段。

查了一些资料,想了一些办法。发现利用极坐标画向量,再由向量叠加的方式进行绘制就可以解决这个问题。写一个trans_cood函数:

function [Lx,Ly] = trans_cood(x,y,RHO,R)
th = [0; RHO*pi/180];
rho = [0; R];
[xvec,yvec] = pol2cart(th,rho);
Lx(1) = x;
Ly(1) = y;
Lx(2) = x + xvec(2);
Ly(2) = y + yvec(2);

​这个函数中pol2cart生成一个起始点为(0,0),角度由RHO决定,相对长度由R决定的向量。将这个向量与原点相加,得到了所需要的连续线段坐标Lx(2),Ly(2).

例:按下面这个案例画路径图:​

P_x = 0; P_y = 0;
rectangle('Position', [0 0 4 4.598]);hold on;
x = 0 ; y = 0;
RHO = [90,0,300,60,300,60,300,60,300,90,90,90,180,240,120,240,120,240,120,240,90,90,90,0,300,60,300,60,300,60,0,270];

R = [0.866025403784439,0.500000000000000,1,1,1,1,1,1,1,0.866025403784439,1,0.866025403784439,0.500000000000000,1,1,1,1,1,1,1,0.866025403784439,1,0.866025403784439,0.500000000000000,1,1,1,1,1,1,0.500000000000000,0.866025403784439];
for i = 1 :32
[Lx,Ly] = trans_cood(x,y,RHO(i),R(i));
x = Lx(2); y = Ly(2);P_x =[P_x Lx(2)]; P_y = [P_y Ly(2)];
end
axis equal
plot(P_x,P_y,'o','markerfacecolor','r','markeredgecolor','k','markersize',10);
H = quiver(P_x(1:end-1),P_y(1:end-1), P_x(2:end) - P_x(1:end-1), P_y(2:end) - P_y(1:end-1));
axis([-0.5 4.5 -0.5 5]);
set(H,'color','b','maxheadsize',0.1);
box on;​

欢迎访问本人博客:http://blog.sina.com.cn/u/2214572994

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值