MATLAB画带厚度的圆弧线

搜了很久,没有相关的,所以自己写一下,同时分享出来。

画图主要分为两种,一种是在画布上画,例如plot这类的:
利用fill函数,其传入参数为若干个坐标点,所以可以利用圆的角度公式
x=x0+rcos(a),y=y0+rsin(a)。然后可以生成两个不同直径的圆,其代码如下:

a1=30;   %弧度角
a2=270;
r=40;
d=5;  %弧线厚度/2
x0=100;
y0=100;
t1= a1/360*2*pi:2*pi/360:a2/360*2*pi;
cir1 = x0+(r-d)*cos(t1);
cir2 = y0+(r-d)*sin(t1);

t2= a2/360*2*pi:-2*pi/360:a1/360*2*pi;  %注意角度递减
cir3 = x0+(r+d)*cos(t2);
cir4 = y0+(r+d)*sin(t2);
figure;

fill([cir1,cir3],[cir2,cir4],[0,0,1],'EdgeColor',[0,0,1]);

所得结果如下:
在这里插入图片描述
另外一种是在图片中以像素点的形式生成,可以利用insertShape函数,其可以在像素图像中生成指定的形状,我们需要的形状是填充多边形:‘FilledPolygon’,其原理与fill相似,所以直接给代码如下:

img=zeros(200,200);
a1=30;   %弧度角
a2=270;
r=40;
d=5;  %弧线厚度
x0=100;
y0=100;
t1= a1/360*2*pi:2*pi/360:a2/360*2*pi;
cir1 = x0+(r-d)*cos(t1);
cir2 = y0+(r-d)*sin(t1);

t2= a2/360*2*pi:-2*pi/360:a1/360*2*pi;  %注意角度递减
cir3 = x0+(r+d)*cos(t2);
cir4 = y0+(r+d)*sin(t2);

c1=zeros(size(t1,2)*2,1);
c1(1:2:end-1)=cir1';
c1(2:2:end)=cir2';
c2=zeros(size(t2,2)*2,1);
c2(1:2:end-1)=cir3';
c2(2:2:end)=cir4';
c1=[c1',c2'];

img=insertShape(img,'FilledPolygon',c1,'Color','red');
figure;
imshow(img);

所得结果如下:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值