我正在尝试使球反弹,但无法创建一个基本的多色球,然后我可以在每个帧中整体旋转。我在球的圆周上有512个点,分为8个扇区,每个扇区有单独的颜色。到目前为止,我有2个8x64矩阵,分别代表沿着球的圆周的点的x和y坐标,每一行都是其自己的扇区。
我想知道如何沿圆填充这些“范围”,使其看起来像沙滩球,并创建一个函数来使用两个x和y坐标矩阵作为输入。您的帮助将不胜感激!
基本骨架功能:
% Expects 8xN x and y point matrices
function draw_ball(x,y)
% Draw the 8 sectors filling them with unique colors
end
最佳答案
您要使用draw_ball
创建PATCH。最好的方法是将数据存储为面和顶点,但是如果您想保留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