码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-10-23 14:26:50      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:角度   blog   技术   png   images   size   线段   markers   http   

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

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

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

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

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

 1 P_x = 0; P_y = 0;  
 2 rectangle(Position, [0 0 4 4.598]);hold on;  
 3 x = 0 ; y = 0;  
 4 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];  
 5   
 6 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];  
 7 for i = 1 :32  
 8    [Lx,Ly] = trans_cood(x,y,RHO(i),R(i));  
 9    x = Lx(2); y = Ly(2);P_x =[P_x Lx(2)]; P_y = [P_y Ly(2)];  
10 end  
11 axis equal  
12 plot(P_x,P_y,o,markerfacecolor,r,markeredgecolor,k,markersize,10);  
13 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));  
14 axis([-0.5 4.5 -0.5 5]);  
15 set(H,color,b,maxheadsize,0.1);  
16 box on;?  

 

技术分享

 

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

标签:角度   blog   技术   png   images   size   线段   markers   http   

原文地址:http://www.cnblogs.com/horseechen/p/5989830.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!