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

Given four Corner vertices of a rectangle, how to identify all upper and lower (left & right) corner points?

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

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

我正在使用 MATLAB。

澄清:矩形不一定是轴对齐的。可能有点倾斜。

您可以使用 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);

这是我制定的解决方案。

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中左下角和右下角的位置