2017-05-29 6 views

答えて

1

fillを使用して、xyの座標から2次元ポリゴンを描画します。

c = [0, 0];  % Position of centre 
h = 5; w = 8; % height and width of rectangle 
a = deg2rad(30); % angle of rotation in radians (using deg2rad so can be set in degrees) 
% Get corners of rectangle 
corners = [c(1) + w/2, c(2) + h/2; c(1) + w/2, c(2) - h/2; c(1) - w/2, c(2) - h/2; c(1) - w/2, c(2) + h/2]; 
% rotate corner points 
corners = [(corners(:,1)-c(1))*cos(a) - (corners(:,2)-c(2))*sin(a) + c(1), (corners(:,1)-c(1))*sin(a) + (corners(:,2)-c(2))*cos(a) + c(2)]; 
% Use 'fill' or 'patch' to plot 
fill(corners(:,1), corners(:,2), 'r') 

あなたは

function [corners(:,1), corners(:,2)] = getRectangle(c, h, w, a) 
% This function returns the corner points for a rectangle, specified 
% by its centre point c = [x,y], height h, width w and angle in degrees from horizontal a 
    a = deg2rad(a); 
    corners = [c(1) + w/2, c(2) + h/2; c(1) + w/2, c(2) - h/2; c(1) - w/2, c(2) - h/2; c(1) - w/2, c(2) + h/2]; 
    corners = [(corners(:,1)-c(1))*cos(a) - (corners(:,2)-c(2))*sin(a) + c(1), (corners(:,1)-c(1))*sin(a) + (corners(:,2)-c(2))*cos(a) + c(2)]; 
end 

使用、それを再利用したい場合、これは機能にパッケージ化することができます

[rectX, rectY] = getRectangle([0,0], 5, 8, 30); 
fill(rectX, rectY, 'r'); 
+0

を、私は、データのどのように多くの散乱を使用しないようにしたいですプロット! –

+0

散布機能を使用するときは、円の代わりに長方形の点を使用するだけですか?それはx軸に対する矩形の角度と何が関係していますか? – Wolfie

+0

scatter関数を使うときは円の代わりに四角形の点が必要なのでしょうか?それとも、散布(x、y、 'd') 'や散布(x、y、s)はい、正確に。それはx軸に対する矩形の角度と何が関係していますか?それは私が尋ねた質問です。 –

関連する問題