%Regpolygen(1,12)
function [out]=Regpolygen(r,NumOfEdge)
%正多边形函数,以(0,0)坐标为原点,out为输出的正多边形各顶点xy坐标,两列
%r是正多边形外切圆半径,NumOfEdge是正多边形的边数
clc;close all
figure('Color','w')
circle(0,0,r,'b')
box on
grid on
axis equal
hold on
alpha=360/NumOfEdge;%旋转角度,单位°
xy0=[0;r];
xy1=Rot(xy0,alpha/2);%正多边形第一个顶点
out=xy1.';
for xx=1:NumOfEdge-1
op=Rot(out(end,1:2).',alpha);
out=[out;op.'];
end
scatter(out(:,1), out(:,2),'ro')
hold on
p1=nsidedpoly(NumOfEdge,'Center',[0,0],'Radius',r);
plot(p1)
axis equal
hold off
end
function [op]=Rot(xy,alpha)
%对选中的(x,y)点xy顺时针旋转操作alpha°(不是rad),xy变量的形式为[x;y]
%输出旋转后的点op=[rotx;roty]
RotM=[cosd(-alpha),-sind(-alpha);sind(-alpha),cosd(-alpha)];%表示顺时针旋转角度alpha,同时单位是°,不是rad
op=RotM*xy;
end
function [] = circle(x,y,r,str)
%画圆函数
% circle(0,0,4,'y') ;grid on
% x y是中心,r是半径,str是表示颜色
rectangle('Position',[x-r,y-r,2*r,2*r],'Curvature',[1,1],'edgecolor',str)
axis equal
%为了修饰曲线的颜色,宽度,圈盘填充颜色等,可以设置其他参数等,例如
%'edgecolor','b',其中edgecolor表示边框颜色,后面的b是颜色参数值;
%facecolor','r',其中facecolor表示内部填充颜色,后面的是颜色参数值。
end
06-24
5625
07-09
4905
07-01
1490
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交