给出变形矩形的四个角顶点,即p1(x1,y1),
p2(x2,y2),
p3(x3,y3)
& p4(x4,y4)
。
如何找到所有坐标的位置,即哪一个是左上角,右上角,右下角和左下角?
我正在使用MATLAB。
澄清:矩形不一定是轴对齐的。它可能会略微倾斜。
答案 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