给定正多边形外切圆半径和边数,给出正多边形各顶点的xy坐标的matlab函数

%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







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值