圆角矩形坐标表示

时间:2013-08-16 13:36:53

标签: matlab

Matlab中的简单圆角矩形代码可以写成如下。

rectangle('Position',[0,-1.37/2,3.75,1.37],...
      'Curvature',[1],...
     'LineWidth',1,'LineStyle','-')
daspect([1,1,1])

如何获取此图的x和y坐标数组?

2 个答案:

答案 0 :(得分:1)

要获得轴单位边界,请执行以下操作:

axisUnits = axis(axesHandle) % axesHandle could be gca

axisUnits将是一个四元素数组,使用以下语法:[xlowlim xhighlim ylowlim yhighlim],它还包含3-D图的zlow和zhigh。

但我认为这不是你需要知道的。检查rectangle properties的matlab文档,我们发现:

  

定位四元素向量[x,y,宽度,高度]

     

矩形的位置和大小。指定的位置和大小   轴的数据单元中的矩形。由x,y定义的点   指定矩形的一个角,宽度和高度定义   大小分别为沿x轴和y轴的单位

rectangle documentation

也记录了它
  

矩形('位置',[x,y,w,h])从点x,y绘制矩形   宽度为w,高度为h。在轴数据中指定值   单元

看看这是否说明了你想要的东西。您的x轴从-100到100,y轴从5到15.假设您想在-30到-20之间放置一个矩形,在y中放置8到10之间的矩形。

rectangle('Position',[-30,8,10,2]);

答案 1 :(得分:0)

正如评论所解释的那样,似乎没有直接的方法来查询由rectangle创建的图形并提取x / y坐标。另一方面,我可以想到两个简单的策略来达到坐标,这些坐标将紧密地重现矩形生成的曲线:

(1)将图形保存为图像(例如.png)并处理图像以提取与曲线对应的点。某种程度的按摩是必要的,但如果直截了当,这是相对简单的,我希望代码在执行时比从轴对象获取数据要慢一些。

(2)编写自己的代码以绘制带有弯曲边缘的矩形。虽然重新创建matlab绘制的内容可能并不那么简单,但您可能会对自己的版本感到满意。

您是否选择其中一种方法归结为(a)您认为可接受的执行速度(b)您需要复制rectangle在屏幕上绘制的内容(c)您是否有图像处理例程,比如读取图像文件。

修改

如果您有图像处理工具箱,则可以到达表示矩形的一组点,如下所示:

h=rectangle('Position',[0,-1.37/2,3.75,1.37],...
      'Curvature',[1],...
     'LineWidth',1,'LineStyle','-')
daspect([1,1,1])
axis off
saveas(gca,'test.png');
im = imread('test.png');
im = rgb2gray(im);
figure, imshow(im)

请注意,您仍然需要应用阈值从图像中选取相关点,然后转换坐标系并重新排列点,以便正确显示为连接集。您可能还想修改初始图像文件的分辨率或应用图像处理功能以获得平滑的曲线。