我有六角形点如下:
Points =
2.0000 3.0000
1.1340 2.5000
1.1340 1.5000
2.0000 1.0000
2.8660 1.5000
2.8660 2.5000
现在,我希望将它缩小80%并将较小的一个放入具有不同颜色的原始六边形中。
同样,我想重复这个原始的六边形,尺寸大140%。
MATLAB中有没有这样的功能呢?
答案 0 :(得分:1)
据我所知,没有缩放点的功能,但这很容易通过减去中心,然后缩放点,然后将中心重新加入来手动完成。
示例:
points = [ ...
2.0000 3.0000
1.1340 2.5000
1.1340 1.5000
2.0000 1.0000
2.8660 1.5000
2.8660 2.5000];
% Translate so center is at 0,0
centerx = mean(points(:,1));
centery = mean(points(:,2));
points0 = points;
points0(:,1) = points0(:,1) - centerx;
points0(:,2) = points0(:,2) - centery;
% Scale
points1 = points0 * 0.80;
points2 = points0 * 1.40;
% Translate back to original center
points1(:,1) = points1(:,1) + centerx;
points1(:,2) = points1(:,2) + centery;
points2(:,1) = points2(:,1) + centerx;
points2(:,2) = points2(:,2) + centery;
% Plot results
figure(); hold on;
plot(points([1:end 1],1), points([1:end 1],2), '-b');
plot(points1([1:end 1],1), points1([1:end 1],2), '-r');
plot(points2([1:end 1],1), points2([1:end 1],2), '-k');
答案 1 :(得分:1)
你的六边形似乎以[2,2]为中心。所以你可以减去中心,缩放,然后加回中心,如下所示:
center = ones(6,1)*[2,2];
Points_scaled = (Points - center) * scale + center;
其中scale = 0.8缩小,1.4缩放。 Plot Points_scaled与绘制点的方式相同。要更改颜色,请使用例如plot(..., 'Color',the_color)
其中the_color
可以是characer('r','k','g',...)或RGB三元组([0,0] ,1],...)。
答案 2 :(得分:1)
您可以使用shrinkfaces
:
% the original patch:
p1 = patch(Points(:,1),Points(:,2),'w','EdgeColor','b')
% reduce p1 by 80%:
p2 = shrinkfaces(p1,0.2)
patch(p2,'FaceColor','none','EdgeColor','g')
% enlarge p1 by 140%:
p3 = shrinkfaces(p1,1.4)
patch(p3,'FaceColor','none','EdgeColor','r')