给定矩形的四个角顶点,如何识别所有上下(左和右)角点?
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中左下角和右下角的位置
给出变形矩形的四个角顶点,即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中左下角和右下角的位置