给定矩形的四个角顶点,如何识别所有上下(左右)角点?

时间:2015-10-13 07:17:37

标签: arrays matlab vector rectangles

给出变形矩形的四个角顶点,即p1(x1,y1), p2(x2,y2), p3(x3,y3)& p4(x4,y4)

如何找到所有坐标的位置,即哪一个是左上角,右上角,右下角和左下角?

我正在使用MATLAB。

澄清:矩形不一定是轴对齐的。它可能会略微倾斜。

2 个答案:

答案 0 :(得分:1)

您可以使用find获取索引,并使用&运算符来比较是否满足两个边界。对轴对齐的矩形有效。

xP = [1 2 2 1];
yP = [3 1 3 1];

[~,right] = max(xP);
[~,left]  = min(xP);
[~,up]    = max(xP);
[~,low]   = min(yP);


upperleft  = intersect(up,left);
lowerright = intersect(low,right);

答案 1 :(得分:0)

这是我解决的问题。

fx=[x1 x2 x3 x4];  %represent x-cord
fy=[y1 y2 y3 y4];   %represent y-cord 
[xmn, ixmn]=min(fx);
fx(ixmn)=NaN;
[xmn2,ixmn2]=min(fx);
fx(ixmn)=xmn;   % to restore original data

if(fy(ixmn)>fy(ixmn2))
    ul=ixmn2; %upper-left
    ll=ixmn;  %lower left 
else
    ul=ixmn; 
    ll=ixmn2;
end
idd=setdiff(1:4,[ul ll]); 
if(fy(idd(1))>fy(idd(2)))
    ur=idd(2); %upper right
    lr=idd(1); %lower right
else
    ur=idd(1);
    lr=idd(2);
end

ul,ur - >左上角的位置& fx右上角,fy

ll,lr - >左下方的位置& fx右上角,fy