2010-11-19 4 views
3

공을 튀기려고하지만 기본 다색 공을 만드는 데 문제가 있습니다. 그러면 각 프레임에서 전체적으로 회전 할 수 있습니다. 저는 공의 원주에 512 포인트를 8 개의 섹터로 나누었습니다. 각각은 별개의 색입니다. 지금까지 필자는 공의 원주를 따라 점의 x와 y 좌표를 나타내는 8x64 행렬 2 개를 가지고 있습니다. 각 행은 자체 섹터입니다.MATLAB의 채색 섹터

두 개의 x 및 y 좌표 행렬을 입력으로 사용하여 비치 볼처럼 보이도록 원을 따라 이러한 "범위"를 채우는 방법을 알고 싶습니다. 귀하의 도움을 크게 극명하게 될 것입니다!

기본 골격 기능 :

% Expects 8xN x and y point matrices 
function draw_ball(x,y) 
% Draw the 8 sectors filling them with unique colors 

end 

답변

0

함수가 (x, y)를 변환함으로써 시작할 수, 각 시점의 각도가 가능한 극 좌표계로 시스템 (직교)를 좌표. 연관된 MATLAB 기능은 cart2pol

극성에 tranforming 후 8 개 섹터로 포인트를 분할 바닥을 사용할 수 ... 뭔가를 당신은 PATCHdraw_ball로를 만들 floor(polar_anle_in_radians/(2*pi)*8)

2

의 라인을 따라입니다. 이를 수행하는 가장 좋은 방법은 데이터를면과 정점으로 저장해야하지만 8xN 배열을 유지하려는 경우 공을 설명하는 8 개의 패치를 작성할 수 있습니다.

이 방법, 함수는 다음과 같이 보일 것이다 :

function pH = drawBall(x,y) 

%# count sectors 
nSectors = size(x,1); 

%# create a colormap 
ballColors = jet(nSectors); 

%# set hold-state of current axes to 'on' 
set(gca,'nextPlot','add') 

%# initialize array of plot handles 
pH = zeros(nSectors,1); 

%# add [0,0] to every sector 
x = [x,zeros(nSectors,1)]; 
y = [y,zeros(nSectors,1)]; 

%# plot patches 
for s = 1:nSectors 
    %# plot sectors with black lines. If there shouldn't be lines, put 'none' instead of 'k' 
    pH(s) = patch(x(s,:),y(s,:),ballColors(s,:),'EdgeColor','k'); 
end