【问题标题】:filled semicircle in MatlabMatlab中的填充半圆
【发布时间】:2015-05-26 05:57:45
【问题描述】:

是否有一些好的提示如何在 Matlab 中绘制关于特定点的实心圆?我找到了正常圆圈的解决方案,但我不知道如何填充它。

我需要这个,因为我应该在它的每一半上都有两种不同颜色的圆圈。这可能吗?

提前谢谢你

【问题讨论】:

    标签: matlab plot geometry matlab-figure


    【解决方案1】:

    您可以定义一组多边形顶点并使用patch 或fill(整圈)绘制它们。

    r = 1;
    phi = 0:0.01:2*pi;
    x = r*cos(phi);
    y = r*sin(phi);
    patch(x,y,'b');
    axis equal;
    

    这比Luis Mendo 的解决方案要多一些代码。但如果您想拥有一组多边形并希望对所有多边形一视同仁,这可能会很有用。

    编辑 此代码将给出 2 个不同颜色的半圆。

    r = 1;
    phi = 0:0.01:pi;
    x = r*cos(phi); x = [x,x(1)];
    y = r*sin(phi); y = [y,y(1)];
    patch(x,y,'b');
    x2 = r*cos(pi+phi); x2 = [x2,x2(1)];
    y2 = r*sin(pi+phi); y2 = [y2,y2(1)];
    patch(x2,y2,'r');
    axis equal;
    

    【讨论】:

    • 这个答案可以很容易地概括为两个半圆,每个圆都有不同的颜色,正如 OP 所希望的那样
    • @LuisMendo 对,我修好了。
    • 谢谢,我用这段代码生成了一个半圆的半圆——我把一个b改成了w,另一个b改成了k。我想知道像 x = [x,x(1)]; x2 = [x2,x2(1)]; 和类似的命令有什么需要。它没有做出任何改变,至少对我来说。我在这里说错了吗?
    • @sreerajt 你有什么问题,还是只是注释 x = [x,x(1)]?我在 2020a 上试过这个,它对我有用。至于x = [x,x(1)];,原因已被时间流逝。代码所做的是将图形的最后一个点连接回第一个点。我不确定我为什么这样做。可能是在编写代码时 patch 方法导致了这个问题,但也可能是始终连接图形的一般意图。
    • @patrik ,我没有遇到任何问题,但我只是好奇这部分代码的作用。谢谢!
    【解决方案2】:

    要绘制一个实心圆,请使用'Curvature' 属性等于[1 1] 的rectangle,并将'Facecolor' 属性设置为所需的填充颜色:

    rectangle('Position',[10 10 20 20], 'Curvature',[ 1 1], 'Facecolor','b', 'Edgecolor','k');
    axis equal
    

    【讨论】:

    • Matlab 太有逻辑了:圆是正方形,四个角都是 100% 圆!
    • 是的...我总是觉得 rectangle 用于画圆圈很有趣:-)
    猜你喜欢
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 2013-11-22
    • 1970-01-01
    相关资源
    最近更新 更多